参考链接
- FFMpeg视频播放器的制作-雷霄骅(去除电流音版本)_哔哩哔哩_bilibili
视频播放器原理
- 播放视频文件的流程
- YUV是一张屏幕中像素点的数值
封装格式
- MP4 RMVB TS FLV AVI
- 将视频和音频码流按照一定的格式存储在一个文件中
- 封装格式分析工具:Elecard Format Analyzer
- 数字电视支持的格式 MPEG2-TS
- 数据大小固定,每个都是188Byte
- 单个数据包损坏不会影响其余数据包
- FLV包含Header头文件,一旦损坏,无法播放数据
视频编码数据
- H.264 MPEG2 VC-1
- 将视频像素数据(RGB,YUV等)压缩成视频码流,从而降低视频的数据量
- 视频编码分析工具 Elecard Stream Eye
- I帧 :红色的帧 将图片作为数据直接压缩,不依赖
- P帧 :蓝色的帧 依赖前面的I帧,存储与I帧不同的地方
- B帧 :绿色的帧 依赖左右的视频帧,参考的东西更多
音频编码数据
- AAC MP3 AC-3
- 将音频采样数据(PCM等)压缩成音频码流,从而降低音频的数据量
- WAV格式的数据是未经压缩的音频数据
视频像素数据
- 解码之后的数据,送到显卡进行数据显示
- YUV420P RGB
- 视频像素数据的作用:保存了屏幕每个像素点的像素值
- 格式:常见的像素数据格式有RGB24、RGB32、YUV420P、YUV422P和YUV444P等
- YUV是基于RGB进行转换
- Y 亮度
- UV 色调和饱和度
- 压缩编码中一般使用的是YUV格式的像素数据,最为常见的是YUV420P
- 特点
- 视频像素数据体积很大,一般情况下1小时高清视频的RGB24格式的数据体积为:
- 3600*25*1920*1080*3=559.9GByte
- 这里假定帧率为25Hz,取样精度8bit
- YUV格式像素数据查看工具 YUV Player
音频采样数据
- PCM
- 音频采样数据的作用:保存了音频中每个采样点的数值
- 特点:音频采样数据体积很大,一般情况下一首4分钟的PCM格式的歌曲体积为
- 4*60*44100*2*2=42.3MByte
- 第一个2表示声道
- 第二个2表示字节 8*2=16
- PS:这里假定采样率为44100Hz,采样精度为16bit
- 音频采样数据查看工具:Adobe Audition