雷神—基于 FFmpeg + SDL 的视频播放器的制作视频收获:第一节

参考:https://blog.csdn.net/leixiaohua1020/article/details/47068015

百度网盘:链接:https://pan.baidu.com/s/1e_hzwXNwnyjCcC_Anm949Q  提取码:gi6t 

第一节:视音频基础知识

前言

基于 FFmpeg + SDL 的视频播放器的制作是用FFmpeg作为视频解码工具, SDL作为YUV等像素显示工具,两者整合实现一个播放器,实现“H.264->YUV->电脑屏幕”

基础知识框架:

    • 前言

    • 视频播放器原理

    • 封装格式(MP4,RMVB,TS,FLV,AVI)

    • 视频编码数据(H.264,MPEG2,VC-1)

    • 音频编码数据(AAC,MP3,AC-3)

    • 视频像素数据(YUV420P,RGB)

    • 音频采样数据(PCM)

    • 练习


1.视频播放器原理

播放一个视频文件的流程:

1.封装格式数据:就是把音频和视频文件封装成一个文件,常见有AVI、FLV、MP4等
2.解封装:要分别处理音频和视频文件,就要解封装
3.音频压缩数据:解封装后的音频压缩数据(ACC、MP3..)
   视频压缩数据:解封装后的视频压缩数据——视频流(码流)(H.264、MPEG2...)
4.音频解码:解码成音频采样数据
   视频解码:解码成视频原始数据
5.音频采样数据(音频原始数据):PCM.....
   视频像素数据(视频原始数据):YUV(像素采样点)
6.视音频同步:数据在设备同步

• 常用播放器
▫ 跨平台系列(非DirectShow框架)
     VLC, Mplayer, ffplay……
▫ Windows系列(DirectShow框架)
     完美解码,终极解码, 暴风影音……
• 信息查看工具
▫ 综合信息查看
     MediaInfo(在网盘有)


▫ 二进制信息查看
    UltraEdit
▫ 单项详细分析
     封装格式: Elecard Format Analyzer
     视频编码数据: Elecard Stream Eye
     视频像素数据: YUV Player
     音频采样数据: Adobe Audition


2.封装格式

作用:视频码流和音频码流按照一定的格式存储在一个文件中。
封装格式分析工具:Elecard Format Analyzer(在网盘中有)


下面列举两个:

使用Elecard Format Analyzer查看封装格式:

3.视频编码数据(在视音频技术中举足轻重)

作用:将视频像素数据(RGB, YUV等)压缩成为视频码流,从而降低视频的数据量。
查看视频编码分析工具:Elecard Stream Eye

主流是H.264

H.264格式简介:

数据由大小不固定的NALU构成,就是 1个NALU存一个画面
最常见的情况下, 1个NALU存储了1帧画面的压缩编码后的数据。

H.264压缩方法
▫比较复杂。包含了帧内预测、帧间预测、熵编码、环路滤波等环节
构成。本文不对其中的算法做过多介绍。
▫可以将图像数据压缩100倍以上。

4.音频编码数据

音频编码的作用:将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量。

没视频编码数据那么重要,因为所占大小不大。

现在主用AAC

5.视频像素数据

视频像素数据作用
    保存了屏幕上每个像素点的像素值。
格式
    常见的像素数据格式有RGB24, RGB32, YUV420P, YUV422P,YUV444P等。压缩编码中一般使用的是YUV格式的像素数据, 最为常见的格式为YUV420P
• 特点
  视频像素数据体积很大,一般情况下1小时高清视频的RGB24
  格式的数据体积为:
       3600*25*1920*1080*3=559.9GByte
PS:这里假定帧率为25Hz,取样精度8bit。
• YUV格式像素数据查看工具:YUV Player

6.音频采样数据

作用:保存了音频中每个采样点的值

特点
    音频采样数据体积很大,一般情况下一首4分钟的PCM格式的
歌曲体积为:
            4*60*44100*2*2=42.3MByte
PS:这里假定采样率为44100Hz,采样精度为16bit。
• 音频采样数据查看工具: Adobe Audition

猜你喜欢

转载自blog.csdn.net/weixin_40535588/article/details/90024088