FFmpeg学习笔记001_视音频基础知识

考虑到研究方向和项目需要最近在学习视音频编解码技术,主要是在用ffmpeg这个开源库。这儿就把学习的视音频基础知识做个整理以作备。

1 视频播放器原理

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

常用播放器
跨平台系列(非DirectShow框架)
VLC,Mplayer,ffplay.....
Windows系列(DireckShow框架)
完美解码,终极解码,暴风影音......
信息查看工具
综合信息查看
MediaInfo
二进制信息查看
UltraEdit
单项详细分析
封装格式:Elecard Format Analyzer
视频编码数据:Elecard Stream Eye
视频像素数据:YUV Player
音频采样数据:Adobe Audition

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

封装格式的作用
视频码流和音频码流按照一定的格式存储在一个文件中

FFmpeg学习笔记001_视音频基础知识_第1张图片

封装格式分析工具
Elecard Format Analyzer

常见的封装格式

FFmpeg学习笔记001_视音频基础知识_第2张图片

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

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

MPEG2-TS格式
不包含文件头。数据大小固定(188Byte)的TS Packet构成。

FLV格式
包含头文件。数据由大小不固定的Tag构成。


H.264格式
数据由大小不固定的NALU构成
最常见的情况下,1个NALU存储了1帧画面的压缩编码后的数据


H.264压缩方法
比较复杂。包含了帧内预测、帧间预测、熵编码、环路滤波等环节构成。可以将图像数据压缩100倍以上。包括红色的帧I帧,蓝色的帧P帧,绿色的帧B帧。

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

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

FFmpeg学习笔记001_视音频基础知识_第3张图片

AAC格式简介
数据由大小不固定的ADTS构成


AAC可以将音频数据压缩10倍以上

5 视频像素数据(YUV420,RGB)

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

RGB格式简介
Red、 Green、 Blue三种颜色,可以混合成世界上所有的颜色。
彩色图像中每个点,由R、 G、 B三个分量组成。
以RGB24为例,图像像素数据的存储方式如下:

从图中可以看出, RGB24依次存储了每个像素点的R、 G、 B信息。
PS: BMP文件中存储的就是RGB格式的像素数据。


YUV格式简介
相关实验表明,人眼对亮度敏感而对色度不敏感。因而可以将亮度信息和色度信息分离,并对色度信息采用更“狠”一点的压缩方案,从而提高压缩效率。YUV格式中, Y只包含亮度信息,而UV只包含色度信息。以YUV420P为例,图像像素数据的存储方式如图所示。
FFmpeg学习笔记001_视音频基础知识_第4张图片
从图中可以看出, YUV420P首先存储了整张图像的Y信息,然后存储整张图像的U信息,最后存储了整张图像的V信息。

6 音频采样数据(PCM)

音频采样数据作用
保存了音频中每个采样点的值。
特点
音频采样数据体积很大,一般情况下一首4分钟的PCM格式的歌曲体积为:
4*60*44100*2*2=42.3MByte
PS:这里假定采样率为44100Hz,采样精度为16bit。
音频采样数据查看工具: Adobe Audition
PCM格式简介
单声道的情况下按照顺序存储每个采样点的数据。
双声道的情况下按照“左右、左右”的顺序存储每个采样点两个声道的数据。

FFmpeg学习笔记001_视音频基础知识_第5张图片


你可能感兴趣的:(FFmpeg学习笔记001_视音频基础知识)