音视频技术解析
封装技术+视频压缩编解码+音频压缩编解码
这是技术层
流媒体传输协议
这是网络层
视频播放器解析
解协议
从视频播放器的角度做解析,拿到传输而来的视频数据后,首先要解协议(传输协议)
自然的本地视频经过硬盘传输数据自然没有解协议的过程
解协议的作用,就是将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例如HTTP,RTMP,或是MMS等等。这些协议在传输视音频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等。解协议的过程中会去除掉信令数据而只保留视音频数据。
信令数据:只要使用网络使用基站就产生信令数据
这里对包含的播放的控制数据我没有太理解
个人理解:解析以后化为标准可解的封装数据,不同协议视频流传输被解协议的时候产生不同的数据,冗余的信令数据也被剔除
如RTMP协议传输解协议后变为FLV格式,之后再对FLV做解封装
主要流媒体协议一览
名称 | 推出机构 | 传输层协议 | 客户端 | 目前使用领域 |
RTSP+RTP | IETF | TCP+UDP | VLC, WMP | IPTV |
RTMP | Adobe Inc. | TCP | Flash | 互联网直播 |
RTMFP | Adobe Inc. | UDP | Flash | 互联网直播 |
MMS | Microsoft Inc. | TCP/UDP | WMP | 互联网直播+点播 |
HTTP | WWW+IETF | TCP | Flash | 互联网点播 |
解封装
解封装的作用,就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。封装格式种类很多,例如MP4,MKV,RMVB,TS,FLV,AVI等等,它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起。例如,FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。
封装格式的数据对应我们在生活中看到的所谓视频后缀名格式(封装格式)
视频被按指定格式解封装后就变成了码流
音视频有各自独立的编码规则
FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流
主要封装格式一览
名称 | 推出机构 | 流媒体 | 支持的视频编码 | 支持的音频编码 | 目前使用领域 |
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下载影视 |
除了AVI之外,其他封装格式都支持流媒体,即可以“边下边播”。
有些格式更“万能”一些,支持的视音频编码标准多一些,比如MKV。
而有些格式则支持的相对比较少,比如说RMVB。
解码
解码的作用,就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。音频的压缩编码标准包含AAC,MP3,AC-3等等,视频的压缩编码标准则包含H.264,MPEG2,VC-1等等。解码是整个系统中最重要也是最复杂的一个环节。通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV420P,RGB等等;压缩编码的音频数据输出成为非压缩的音频抽样数据,例如PCM数据。
解码是最繁杂的环节,技术在这里就有了差别
颜色和音频抽样数据从被压缩的码流中按照一定的方法分崩离析出来,又归向秩序。变成人们可视可听的数据
若从解码的设备上看
又可以分为硬解码(GPU解码)和软解码(CPU解码)
硬解码慢但高质,软解码快但难以承受巨量的视频解码任务
编码
谈解码自然也要谈编码
视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间
编码的技术要不断精进就是为了能更好的传输更高质量的视频
主要视频编码一览
名称 | 推出机构 | 推出时间 | 目前使用领域 |
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 | 微软平台 |
H264High和H265已经逐步追上H264的地位
主要音频编码一览
名称 | 推出机构 | 推出时间 | 目前使用领域 |
AAC | MPEG | 1997 | 各个领域(新) |
AC-3 | Dolby Inc. | 1992 | 电影 |
MP3 | MPEG | 1993 | 各个领域(旧) |
WMA | Microsoft Inc. | 1999 | 微软平台 |
可见音频编码技术已经基本可以满足人们的需要。音频编码技术近期绝大部分的改动都是在MP3的继任者——AAC的基础上完成的。
AAC+ > MP3PRO > AAC> RealAudio > WMA > MP3
音视频同步
视音频同步的作用,就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来
就是所谓的音画同步
直播服务
直播服务普遍采用了RTMP作为流媒体协议,FLV作为封装格式,H.264作为视频编码格式
视频编码,音频编码方面,无一例外的使用了FLV + H.264 + AAC的组合。FLV是RTMP使用的封装格式,
H.264是当今实际应用中编码效率最高的视频编码标准
AAC则是当今实际应用中编码效率最高的音频编码标准
我现在来看这些情况依旧存在
点播服务
点播服务普遍采用了HTTP作为流媒体协议,H.264作为视频编码格式,AAC作为音频编码格式。
采用HTTP作为点播协议有以下两点优势:一方面,HTTP是基于TCP协议的应用层协议,媒体传输过程中不会出现丢包等现象,从而保证了视频的质量;
另一方面,HTTP被绝大部分的Web服务器支持,因而流媒体服务机构不必投资购买额外的流媒体服务器,从而节约了开支。
点播服务采用的封装格式有多种:MP4,FLV,F4V等,它们之间的区别不是很大。
很幸运有雷神能让我站在巨人的肩膀上了解音视频
之后慢慢一点点把所有细节补上