进入快手一段时间之后就发现了自己在音视频方面相关理论知识的不足,但一直没有合适的方向、引导以及资料进行学习,甚是苦恼。
偶然的一个时间点,发现了 CSDN 雷霄骅前辈的音视频音视频总结,一开始没发觉什么,但后来看了其他资料后才越来越体会到博客的不明觉厉。
故而产生了边学习边总结串联的想法,此文便在这种背景下产生,如果你对音视频也很感兴趣,而苦于没有入门资料,不妨跟着本文探索音视频的广阔领域。
0. MediaInfo
MediaInfo 用来分析视频和音频文件的编码和内容信息,除了提供DLL之外,本身也提供GUI工具用于查看视频信息,新版本的MediaInfo支持HEVC。
支持文本,表格,树形图,网页等查看方式,可导出文本,CSV,HTML等文件格式,源码分析参考
0.1 支持信息
类目 | 具体信息 |
---|---|
内容信息 | 标题,作者,专辑名,音轨号,日期,总时间等 |
视频 | 编码器,长宽比,帧频率,比特率等 |
音频 | 编码器,采样率,声道数,语言,比特率 |
文本 | 语言和字幕 |
段落 | 段落数,列表 |
0.2 支持格式
类目 | 具体信息 |
---|---|
视频格式 | MKV, OGM, AVI, DivX, WMV, QuickTime, Real, MPEG-1, MPEG-2, MPEG-4, DVD (VOB)等 |
编码器 | DivX, XviD, MSMPEG4, ASP, H.264, AVC等 |
音频格式 | OGG, MP3, WAV, RA, AC3, DTS, AAC, M4A, AU, AIFF等 |
字幕格式 | SRT, SSA, ASS, SAMI等 |
1. 视频播放原理
音视频技术主要包含以下几点:封装技术,视频压缩编码技术以及音频压缩编码技术。如果考虑到网络传输的话,还包括流媒体协议技术。
1.1 源码解析
视频播放器的源代码详细解析(Media Player Classic - HC,Mplayer,FFplay,XBMC)
1.2 视频播放过程
视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议,解封装,解码音视频,音视频同步。
过程 | 作用 | 说明 | 对比分析 |
---|---|---|---|
解协议 | 流媒体协议数据 ——>> 封装格式数据 | HTTP、RTMP、MMS等流媒体协议在传输视音频数据的同时,也会传输包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等一些信令数据,解协议就是去除掉信令数据而只保留视音频数据。 | 流媒体系统对比 |
解封装 | 封装格式数据 ——>> 音频流压缩编码数据 + 视频流压缩编码数据 | 封装的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起,包括MP4,MKV,RMVB,TS,FLV,AVI等格式。 | 封装格式对比 |
解码音视频 | 视频/音频压缩编码数据 ——>> 非压缩的视频/音频原始数据 | 音频的压缩编码标准包含AAC,MP3,AC-3等;视频的压缩编码标准则包含H.264,MPEG2,VC-1等, 压缩编码的视频数据 ——>> 非压缩的颜色数据,如YUV420P,RGB等 压缩编码的音频数据 ——>> 非压缩的音频抽样数据,如PCM数据等 | |
音视频同步 | - | 解封装获取参数 ——>> 同步解码出来的视频和音频数据 将视频音频数据送至系统的显卡和声卡播放出来。 | 视频播放器对比 |
2. 流媒体协议
流媒体协议是服务器与客户端之间通信遵循的规定,包括RTSP+RTP、RTMP,MMS,HTTP等,因互联网网络环境的不稳定性,RTSP+RTP较少用于互联网视音频传输。
互联网视频服务通常采用TCP作为其流媒体的传输层协议,因而像RTMP,MMS,HTTP这类的协议广泛用于互联网视音频服务之中。
这类协议不会发生丢包,因而保证了视频的质量,但是传输的效率会相对低一些。
名称 | 推出机构 | 传输层协议 | 客户端 | 目前使用领域 | 详细说明 |
---|---|---|---|---|---|
RTSP+RTP | IETF | TCP+UDP | VLC, WMP | IPTV | 因采用UDP传输音视频,支持组播,效率较高,RTSP协议学习笔记 但缺点是网络不好的情况下可能丢包,影响视频观看质量。 因而围绕IPTV的视频质量的研究还是挺多的,IPTV视频码流分析 |
RTMP | Adobe Inc. | TCP | Flash | 互联网直播+点播 | |
RTMFP | UDP | Flash | 互联网直播 | 新的流媒体协议,支持P2P | |
MMS | Microsoft Inc. | TCP/UDP | WMP | 互联网直播+点播 | - |
HTTP | WWW+IETF | TCP | Flash | 互联网直播 | - |
3. 封装格式
封装格式就是把视频数据和音频数据打包成一个文件的规范。仅仅靠看文件的后缀,很难能看出具体使用了什么音视频编码标准。
有些比较优秀的封装格式支持的视音频编码标准十分广泛,如MKV;而有些落后的封装格式支持的视音频编码标准很少,如RMVB。
除了AVI之外,其他封装格式都支持流媒体,即可以“边下边播”。
名称 | 推出机构 | 流媒体 | 支持的视频编码 | 支持的音频编码 | 目前使用领域 | 相关经验 |
---|---|---|---|---|---|---|
AVI | Microsoft Inc. | 不支持 | 几乎所有格式 | 几乎所有格式 | BT下载影视 | |
MP4 | MPEG | 支持 | MPEG-2, MPEG-4, H.264, H.263等 | AAC, MPEG-1 Layers I, II, III, AC-3等 | 互联网视频网站 | - |
TS | MPEG | 支持 | MPEG-1, MPEG-2, MPEG-4, H.264 | MPEG-1 Layers I, II, III, AAC, | IPTV,数字电视 | - |
FLV | Adobe Inc. | 支持 | Sorenson, VP6, H.264 | MP3, ADPCM, Linear PCM, AAC等 | 互联网视频网站 | |
MKV | CoreCodec Inc. | 支持 | 几乎所有格式 | 几乎所有格式 | 互联网视频网站 | - |
RMVB | Real Networks Inc. | 支持 | RealVideo 8, 9, 10 | AAC, Cook Codec, RealAudio Lossless | BT下载影视 | - |
4. 视频编码
视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量,是视音频技术中最重要的技术之一。
视频码流的数据量占了视音频总数据量的绝大部分,高效率的视频编码在同等的码率下,可获得更高的视频质量。各种编码器命令行
注:视频编码技术在整个音视频技术中应该是最复杂的技术,零基础可先买书看下原理(如《现代电视原理》、《数字电视广播原理与应用》中的部分章节)
名称 | 推出机构 | 推出时间 | 目前使用领域 | 码流分析 | 相关参考(前辈研究成果) |
---|---|---|---|---|---|
HEVC(H.265) | MPEG/ITU-T | 2013 | 研发中 | ||
AV1(VP9) | | 2013 | 研发中 |
| |
H.264 | MPEG/ITU-T | 2003 | 各个领域 | ||
MPEG4 | MPEG | 2001 | 不温不火 | ||
MPEG2 | MPEG | 1994 | 数字电视 | ||
VP8 | | 2008 | 不普及 | VP8介绍 、 WebM (VP8) vs H.264 | |
VC-1 | Microsoft Inc. | 2006 | 微软平台 | ||
AVS | AVSWC | - | - |
| 相关介绍 、 官网 |
主流以及下一代编码标准之间的比较可以参考文章:视频编码方案之间的比较(HEVC,H.264,MPEG2等) 、 视频码流分析工具
此外,在码率一定的情况下,几种编码标准的比较可参考:限制码率的视频编码标准比较(包括MPEG-2,H.263, MPEG-4,以及 H.264)
结果大致是这样的: HEVC > VP9 > H.264> VP8 > MPEG4 > H.263 > MPEG2。
5. 音频编码
音频编码的主要作用是将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量,也是一个重要的技术。
音频编码技术近期绝大部分的改动都是在MP3的继任者——AAC的基础上完成的。
音频编码方案之间音质比较(AAC,MP3,WMA等),结果大致是这样的:AAC+ > MP3PRO > AAC> RealAudio > WMA > MP3
名称 | 推出机构 | 推出时间 | 目前使用领域 | 相关参考(前辈研究成果) |
---|---|---|---|---|
AAC | MPEG | 1997 | 各个领域(新) | |
AC-3 | Dolby Inc. | 1992 | 电影 | |
MP3 | MPEG | 1993 | 各个领域(旧) | |
WMA | Microsoft Inc. | 1999 | 微软平台 |