本文为雷神博客学习总结记录,主要针对视频编码部分学习
[总结]视音频编解码技术零基础学习方法
1 视频播放器原理:
视频播放器
播放一个互联网上的视频文件,步骤:解协议,解封装,解码视音频,视音频同步
播放本地文件则不需要解协议,步骤:解封装,解码视音频,视音频同步
解协议:将流媒体协议的数据,解析为标准的相应的封装格式数据,例如RTMP -> FLV
解封装:将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据,例如FLV -> AAC+H.264
解码:将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据,AAC -> PCM,H.264 -> YUV/RGB
视音频同步:根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来
2 流媒体协议
流媒体协议是服务器与客户端之间通信遵循的规定
- RTSP+RTP经常用于IPTV领域。因为其采用UDP传输视音频,支持组播,效率较高。但其缺点是网络不好的情况下可能会丢包,影响视频观看质量。
- RTMP,MMS,HTTP这类的协议广泛用于互联网视音频服务之中,因为互联网视频服务通常采用TCP作为其流媒体的传输层协议。这类协议不会发生丢包,因而保证了视频的质量,但是传输的效率会相对低一些。
3 封装格式
除了AVI之外,其他封装格式都支持流媒体,即可以“边下边播”
4 视频编码
视频编码:将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。
如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间。
4.1 主流编码标准
4.2 下一代编码标准
HEVC和VP9
VP9是Google继VP8之后推出的新一代标准。VP9和HEVC相比,要稍微逊色一些。它们的对比可参考:(1)HEVC与VP9编码效率对比 (2)HEVC,VP9,x264性能对比
学习HEVC最标准的源代码,就是其官方标准HM了。其速度比H.264的官方标准代码又慢了一大截,使用可参考:如何使用HEVC HM