在分享视频播放器的原理之前呢,我们先简单的看一下播放器在播放网络视频文件和本地视频文件的经过。播放网络视频文件:开始→解协议→解封装→解码音视频→音视频同步→结束。播放本地视频文件:开始→解封装→解码音视频→音视频同步→结束。其实在直播平台建设时,需要很多的步骤和工具,视频播放器只不过是其中一个,但却是非常重要的“小组件”之一。
通过对比播放器播放网络视频和本地视频文件的大体流程,我们可以看出,播放网络视频时需要解协议,而播放本地视频并不需要解协议。接下来,我们就来仔细的了解一下播放器在播放过程中每一个步骤的细节部分。
1.什么是解协议?
单独看字面意思可能比较难理解,解协议就是将流媒体协议的数据,解析为相对应封装格式数据的过程。通常音视频在网络上进行传输时,经常会采用各种流媒体协议。比如HTTP、RTMP等,这些协议在传输音视频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制,即播放、暂停、停止,还有对网络状态的描述等。解协议的过程,会去除掉信令数据然后只保留音视频数据。举个简单的例子,如果是采用RTMP协议进行传输的数据,经过解协议操作之后,就会输出FLV格式的数据。
2.什么是解封装?
解封装,其实就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据的过程。通常比较常见的封装格式有MP4、FLV、AVI等。封装的作用就是把已经压缩编码好的视频数据和音频数据,按照规定的格式放在一起。比如,FLV格式的数据,经过解封装之后会输出压缩H.264编码的视频码流和压缩AAC编码的音视频码流。
3.什么是解码音视频?
目前大部分开发过程中,都需要将音视频进行解码操作。将视频和音频的压缩编码数据,解码成为非压缩的音频和视频的原始数据。音频的压缩编码标准包括AAC、MP3和AC-3等。这里补充一下,视频的压缩编码标准包括H.264(通用)和MPEG2等。通过解码压缩编码的视频数据,会得到非压缩的颜色数据,然后再经过解码压缩编码的音频数据获得非压缩的音频抽样数据,比如PCM数据。
4.什么是音视频同步?
在直播过程中,经常会遇到音视频不同步的情况。比如我们所观看到的直播画面已经过去了,但是音频才只播放到上一句,这种情况对于大部分用户来说都是比较难以忍受的。音视频同步,就是根据解封装模块的处理过程中,所获取到的参数信息,同时解码出来的音频和视频数据,也会将音频和视频数据发送到系统的显卡和声卡,从而将其播放出来。
以上就是视频播放器的简单原理,其实我们在观看直播时并不会接触到这些。但是在直播平台建设的过程中,是由这些大大小小的组件进行协助开发,然后才能开发出一款款精美的app。由此可见,每一个步骤所需要的都是非常重要的。
本文声明原创,转载请注明出处。