直播随笔
大致概念:
将物理流(视频/音频流),通过一定的手段转换为比特流,并且进行压缩(就有压缩编码格式即编码格式,如:MEPG-4;H.264(h.264的压缩编码标准是AVC))。最终,将这里比特流以一定顺序放到一个盒子里进行存放(这就是封装,将上一步压缩的视音频、字幕组合到一个容器内即视频格式或封装格式),从而生成我们最终所看到的,比如,mp4/mp3/flv /mov(mov是MPEG4的QuickTime的封装格式)等等音视频格式。
大致概念总结:
视频文件通过编码来压缩文件大小,再通过封装将压缩视音频、字幕组合到一个容器内,播放时就需要解封装和解编码(就是所谓的播放器)
HTML5 video 标签和MSE媒体源扩展:
以往在浏览网页播放视频时,需要使用像Adobe Flash或是微软的Silverlight这样的插件,但不安全,因此W3C的最新的HTML5标准中,定义了一系列新的元素来避免使用插件,其中就包含了<video>标签这一大名鼎鼎的元素(但是对媒体内容的格式有所限制)。
可以把<video>标签看做拥有解封装和解码功能的浏览器自带播放器,视频通过流媒体传输协议(即网络传输,目前常用的有两种,MPEG-DASH和Apple的HLS)从服务器端分发给客户端,媒体内容进一步包含在一层传输协议中,这样<video>就无法识别了,所以就引入了MSE拓展来帮助浏览器识别并处理传输文件,将其变回原来可识别的媒体容器格式(视频格式),这样<video>就可以识别并播放原来的文件了,就相当于浏览器内置了一个能够解析流协议的播放器。播放器处理流媒体格式文件流程如下图:
解协议的作用,就是将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例如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数据。
视音频同步的作用,就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。
本文来自博客园,作者:封兴旺,转载请注明原文链接:https://www.cnblogs.com/fxw1/p/14637638.html