以下内容为整理的学习笔记,出自雷神:基于 FFmpeg + SDL 的视频播放器的制作
视频播放器原理
播放一个视频文件的流程:
![](https://cdn.jsdelivr.net/gh/feiLiuTech/imgbed@main/GitLearning/20210330183936.png)
封装格式
MP4,RMVB, TS, FLV, AVT
封装格式的作用
视频码流和音频码流按照一定的格式存储在一个文件中
封装格式分析工具: Elecard Format Analyzer
常见的封装格式:
名称 | 推出机构 | 目前使用领域 |
---|---|---|
AVI | Microsoft Inc. | BT下载影视 |
MP4 | MPEG | 互联网视频网站 |
TS | MPEG | IPTV,数字电视 |
FLV | Adobe Inc. | 互联网视频网站 |
MKV | CoreCodec Inc. | 互联网视频网站 |
RMVB | Real Networks Inc. | BT下载影视 |
MPEG2-TS格式简介:
不包含文件头。数据大小固定(188字节)的TS Packet构成
![](https://cdn.jsdelivr.net/gh/feiLiuTech/imgbed@main/GitLearning/20210330193549.png)
FLV格式简介
包含文件头。数据由大小不固定的Tag构成。
![](https://cdn.jsdelivr.net/gh/feiLiuTech/imgbed@main/GitLearning/20210330194340.png)
视频编码数据
视频编码的作用:
将视频像素数据(RGB,YUV等)压缩称为视频码流,从而降低视频的数据量
视频编码分析工具: Elecard Stream Eye
常见的视频编码数据
名称 | 推出机构 | 推出时间 | 目前使用领域 |
---|---|---|---|
HEVC(H.265) | MPEG/ITU-T | 2013 | 研发中 |
H.264 | MPEG/ITU-T | 2003 | 各个领域 |
MPEG4 | MPEG | 2001 | 不温不火 |
MPEG2 | MPEG | 1994 | 数字电视 |
VP9 | 2013 | 研发中 | |
VP8 | 2008 | 不普及 | |
VC-1 | Microsoft Inc. | 2006 | 微软平台 |
H.264格式简介
数据由大小不固定的NALU构成,最常见的情况下,1个NALU存储了1帧画面的压缩编码后的数据
![](https://cdn.jsdelivr.net/gh/feiLiuTech/imgbed@main/GitLearning/20210330200041.png)
H.264压缩方法
比较复杂,包含了帧内预测、帧间预测、熵编码、环路滤波等环节构成。可以将图像数据压缩100倍以上
音频编码数据
音频编码的作用
将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量
常见音频编码数据
名称 | 推出机构 | 推出时间 | 目前使用领域 |
---|---|---|---|
ACC | MPEG | 1997 | 各个领域(新) |
AC-3 | Dolby Inc. | 1992 | 电影 |
MP3 | MPEG | 1993 | 各个领域(旧) |
WMA | Microsoft Inc. | 1999 | 微软平台 |
AAC格式简介
数据由大小不固定的ADTS构成
视频像素数据
视频像素数据作用:
保存了屏幕上每个像素点的像素值。
格式:
常见的像素数据格式有RGB24, RGB32, YUV420P,YUV422P,YUV444P等。
压缩编码中一般使用的是YUV格式的像素数据,最为常见的格式为YUV420P。
特点:
视频像素数据体积很大,一般情况下1小时高清视频的RGB24格式的数据体积为:
3600
×
25
×
1920
×
1080
×
3
=
559.9
G
3600\times25\times1920\times1080\times3=559.9G
3600×25×1920×1080×3=559.9G
这里假定帧率为25Hz,取样精度8bit。
YUV格式像素数据查看工具: YUV Player
RGB格式简介:
1、Red、Green、Blue三种颜色,可以混合成世界上所有的颜色。
2、彩色图像中每个点,由R、G、B三个分量组成。
3、以RGB24为例,图像像素数据的存储方式如下:
![](https://cdn.jsdelivr.net/gh/feiLiuTech/imgbed@main/GitLearning/20210330203454.png)
从图中可以看出,RGB24依次存储了每个像素点的R、G、B信息。其中BMP文件中存储的就是RGB格式的像素数据。
YUV格式简介
相关实验表明,人眼对亮度敏感而对色度不敏感。因而可以将亮度信息和色度信息分离,并对色度信息采用更“狠”一点的压缩方案,从而提高压缩效率。
YUV格式中,Y只包含亮度信息,而UV只包含色度信息。
以YUV420P为例,图像像素数据的存储方式如图所示。从图中可以看出,YUV420P首先存储了整张图像的Y信息,然后存储整张图像的U信息,最后存储了整张图像的V信息。
![](https://cdn.jsdelivr.net/gh/feiLiuTech/imgbed@main/GitLearning/20210330204514.png)
音频采样数据
音频采样数据作用:
保存了音频中每个采样点的值。
特点:
音频采样数据体积很大,一般情况下一首4分钟的PCM格式的歌曲体积为:
4
∗
60
∗
44100
∗
2
∗
2
=
42.3
M
B
4*60*44100*2*2=42.3MB
4∗60∗44100∗2∗2=42.3MB
这里假定采样率为44100Hz,采样精度为16bit。
音频采样数据查看工具:Adobe Audition
PCM格式简介:
单声道的情况下按照顺序存储每个采样点的数据。
双声道的情况下按照“左右、左右”的顺序存储每个采样点两个声道的数据
![](https://cdn.jsdelivr.net/gh/feiLiuTech/imgbed@main/GitLearning/20210330205415.png)