音视频编码理论
播放器原理
音视频技术包括以下几点:封装技术、视频压缩编码和音频压缩编码技术,考虑到网络传输的话,还有流媒体协议技术。
视频播放器播放网络上的一个视频文件,需要以下几个步骤:
解协议、解封装、解码音视频、音视频同步,对于本地文件不需要解协议
解协议
将流媒体
协议的数据,解析为标准的封装格式数据
。在网络上传播时,会采用各种流媒体协议,例如HTTP/RTMP或MMS
等。这些协议在传播音视频数据时,也会传播一些信令数据包括对播放的控制,对网络状态的描述等。而解协议的过程就需要除去信令数据只保留音视频数据。例如,用RTMP协议传输的数据,解协议之后,输出FLV格式数据
解封装
输入的封装格式数据
分离成为音频流压缩编码数据
和视频流压缩编码数据
.
常用的封装格式有MP4、MKV、RMVB、TS、FLV、AVI
等等。作用即 将已经压缩编码的视频数据和音频数据按照一定格式放到一起。例如,FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。
解码
就是将压缩的音视频数据解压缩。
音频编码标注有AAC、MP3、AC-3
等、视频压缩标准有H.264、MPEG2、VC-1
等
这个步骤是最重要也最复杂的一环。压缩的视频数据输出为非压缩的颜色数据,例如YUV420P、RGB等
,音频数据输出为非压缩的音频抽样数据,例如PCM(脉冲编码调制(Pulse Code Modulation,PCM))
音视频同步
根据解封装模块处理过程的参数信息,将解码的音视频同步,然后用系统的声卡或显卡播放
流媒体协议
主流流媒体协议:
RTSP+RTP
用于IPTV领域。因其采用UDP传输音视频,支持组播,效率较高。缺点是网络不好时会丢包。网络视频传输的服务质量(QoS)- 因为互联网络的不稳定性,常采用TCP作为流媒体的传输层协议,因此常采用
RTMP/MMS/HHTP
等。不会发生丢包,保证了视频的质量,但是传输效率较低; RTSP(Real-TimeStream Protocol)
:RTSP学习笔记RTMFP
是较新的流媒体协议,支持P2P 参考文档:RTMP规范简单分析和RTMP流媒体播放过程- 相关工具的源代码分析:RTMPdump源代码分析 1: main()函数 系列文章
- RTMP协议学习:RTMP流媒体技术零基础学习方法
封装格式
将视频流和音频流按照一定格式放在一个文件中
除了AVI,其它格式都支持流媒体
视频编码
将视频的像素数据(RGB,YUV等)压缩为视频码流,降低了视频的数据量。
视频压缩编码和音频压缩编码的基本原理
目前使用最多的视频编码方案为H.264
主流编码标准
H.264
仅仅是一个编码标准,而不是一个具体的编码器,只是给编码器的实现提供参照用的。
参考基于H.264标准的编码器MSU出品的 H.264编码器比较(2011.5)
对于常用的编码器可以了解各种视频编码器的命令行格式
在实际中使用最多的就是x264编码器。可以参考x264编码指南——码率控制X264 输出的统计值的含义(X264 Stats Output)
Google推出的VP8 性能相比H.264稍差 深入了解 VP8
我国的AVS
视频编码国家标准AVS与H.264的比较(节选)
下一代编码标准
有HEVC
和google的VP9
。VP9
相比HEVC
要逊色一点HEVC与VP9编码效率对比HEVC,VP9,x264性能对比
HEVC官方HMHEVC学习—— HM的使用
未来实际使用的HEVC开源编码器很有可能是x265,还处于开发阶段x265 (HEVC编码器,基于x264) 介绍 HEVC(H.265)标准的编码器(x265,DivX265)试用
视频编码方案之间的比较(HEVC,H.264,MPEG2等
限制码率的视频编码标准比较(包括MPEG-2,H.263, MPEG-4,以及 H.264)
结果大致为:HEVC > VP9 > H.264> VP8 > MPEG4 > H.263 > MPEG2
音频编码
将音频采样数据(PCM等)压缩成为音频码流,降低音频的数据量
音频编码也是互联网视音频技术中一个重要的技术。一般情况下音频的数据量要远小于视频的数据量,因而即使使用稍微落后的音频编码标准,而导致音频数据量有所增加,也不会对视音频的总数据量产生太大的影响
可见音频发展已经可以满足人们需要。而且近期大多技术都是在MP3的继任者AAC基础上完成的
音频编码方案之间音质比较(AAC,MP3,WMA等)
结果大致是这样的: AAC+ > MP3PRO > AAC> RealAudio > WMA > MP3
AAC学习
AAC格式简介
AAC规格(LC,HE,HEv2)及性能对比
AAC专利介绍
杜比数字的编码标准 AC-3技术综述
现有网络音视频平台
直播服务普遍采用了RTMP作为流媒体协议,FLV作为封装格式,H.264作为视频编码格式,AAC作为音频编码格式。采用RTMP作为直播协议的好处在于其被Flash播放器支持。而Flash播放器如今已经安装在全球99%的电脑上,并且与浏览器结合的很好。因此这种流媒体直播平台可以实现“无插件直播”,极大的简化了客户端的操作。封装格式,视频编码,音频编码方面,无一例外的使用了FLV + H.264 + AAC的组合。FLV是RTMP使用的封装格式,H.264是当今实际应用中编码效率最高的视频编码标准,AAC则是当今实际应用中编码效率最高的音频编码标准。视频播放器方面,都使用了Flash播放器。
点播服务普遍采用了HTTP作为流媒体协议,H.264作为视频编码格式,AAC作为音频编码格式。采用HTTP作为点播协议有以下两点优势:一方面,HTTP是基于TCP协议的应用层协议,媒体传输过程中不会出现丢包等现象,从而保证了视频的质量;另一方面,HTTP被绝大部分的Web服务器支持,因而流媒体服务机构不必投资购买额外的流媒体服务器,从而节约了开支。点播服务采用的封装格式有多种:MP4,FLV,F4V等,它们之间的区别不是很大。视频编码标准和音频编码标准是H.264和AAC。这两种标准分别是当今实际应用中编码效率最高的视频标准和音频标准。视频播放器方面,无一例外的都使用了Flash播放器。