引言
在网上看到很多的资料,都没有雷神讲的好,下面以一个初学者的角度,去总结FFmpeg,对音视频没有任何基础的做一些基础知识的扫盲。
并且做一些C++的demo,以供学习
目录
- 封装格式(MP4,rmvb)
- 视频编码数据(H.246)
- 音频编码数据(AAC)
- 视频像素数据(显卡显示,RGB)
- 音频采样数据(PCM)
视频播放器原理
- 蓝色表示解码操作
- 当我们打开视频文件,就要分析有哪些视频流(压缩数据,体积小),音频流。所以要解分装格式
- 视频像素数据-YUV
- 音频采样数据-PCM
- 视音频同步
常用的播放器
- VLC,Mplayer,ffmplay
信息查看工具
- 综合信息查看:MediaInfo
- 二进制信息查看:ULtraEdit
封装格式
- 封装格式分析工具:ELecard Format Analyzer
- MPEF2-TS 数字电视用到的格式,分割是188Byte大小,没有文件头,文件部分损坏,可以继续播放
- FLV格式:如果头坏掉,就废了。
视频编码数据
- 把能看的数据,压缩成视频码流,高清视频码流非常的大
- 视频编码分析工具:Elecard Stream Eye
现在一般接触的视频。90%H.264, 现在比较普及
- H.264格式:一个画面就是NALU,作为单元存储起来。
- H.264压缩方法:比较复杂,
Elecard Stream Eye 的使用
- 红色的帧: I 帧 , 蓝色的帧:P帧 ,绿色的帧:B帧
- I 帧的体积特别大,
- P帧,当运动矢量不是特别大的时候,不会太大
- B帧参考前后帧
音频解码数据
- CD导出和WAV音频是基本上没有压缩的
- AC-3 支持的声道比较多,电影中
- 大部分都是使用AAC的编码格式
- wav是一种无损的音频文件格式,pcm是没有压缩的编码方式
- AAC音频压缩10几倍,数字信号处理
视频像素数据
- YUV420P 是常用的格式,编程中也是常用的,一小时占用500多个G
音频采样数据
- 播放器对连续的波进行采样,然后保存下来
- 4604410022=42.3MByte ,采样率44100Hz,采样率16bit,两个字节:秒x采样率 x两个声道x16位两个字节
- 查看工具 Adobe Audition