FFmpeg应用之视频播放器
好文章,来自【福优学苑@音视频+流媒体】
视频播放器原理
播放一个音视频文件的流程
解协议
将流媒体协议的数据,解析为标准的相应的封装格式数据。
视音频在网络上传播的时候,常常采用各种流媒体协议,例如 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 数据。
音视频同步
根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。
视音频封装格式数据分为flv、mkv、 mp4、rmvb、ts等等格式
封装格式的作用
视频码流和音频码流按照一定的格式存储在一个文件中
封装格式分析工具 Elecard Format Analyzer
视音频数据通过解封装后得到音频压缩数据(AAC、MP3、AC-3、WMA等)
音频编码的作用
将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量
音频编码分析工具
视音频数据通过解封装后的到的视频压缩数据(HEVC(H.265)、H.264、MPEG4、MPEG2、VP9、VP8、VC-1)
视频编码的作用
将视频像素数据(RGB、YUV等)压缩成为视频码流,从而降低视频的数据量
视频编码分析工具
Elecard Stream Eye
经过第一层解码,现在第二层解码
音频压缩数据解码为音频采样数据(PCM等)
音频采样数据作用:
保存了音频中每个采样点的值。
特点:
音频采样数据体积很大,一般情况下4分钟的PCM格式的体积为:
4*60*44100*2*2=42.3Mbyte
这里的采样率设为44100Hz,采样精度为16bit
音频采样数据查看工具: Adobe Audition
视频压缩数据被解码为视频像素数据(RGB 、YUV等)
视频像素数据的作用:
保存了屏幕上每个像素点的像素值
格式:
常见的像素数据格式有RGB24,RGB32、YUV420P、YUV422P、YUV444P等,
压缩编码中一般使用的是YUV格式的像素数据,最为常见的格式为YUV420P
特点视频像素数据体积大,一般情况下一小时的高清视频的RGB24格式的数据体积为
3600*25*1920*1080*3=559.9GByte
这里假定帧率为25 Hz,取样精度为8bit
YUV格式像素数据查看工具
YUV Player
RGB格式简介
Red、Green、Blue三种颜色,可以混合成世界上所有颜色,
每个像素点都是由R、G、B三个分量组成
最后是视音频的同步,也是比较难的部分
音视频同步的目的是为了使播放的声音和显示的画面保持一致。
视频按帧播放,图像显示设备每次显示一帧画面,视频播放速度由帧率确定,帧率指示每秒显示多少帧;
音频按采样点播放,声音播放设备每次播放一个采样点,声音播放速度由采样率确定,采样率指示每秒播放多少个采样点。
如果仅仅是视频按帧率播放,音频按采样率播放,二者没有同步机制,即使最初音视频是基本同步的,随着时间的流逝,音视频会逐渐失去同步,并且不同步的现象会越来越严重。
这是因为:一、播放时间难以精确控制,二、异常及误差会随时间累积。
所以,必须要采用一定的同步策略,不断对音视频的时间差作校正,使图像显示与声音播放总体保持一致。
音视频同步的方式基本是确定一个时钟(音频时钟、视频时钟、外部时钟)作为主时钟,非主时钟的音频或视频时钟为从时钟。
在播放过程中,主时钟作为同步基准,不断判断从时钟与主时钟的差异,调节从时钟,使从时钟追赶(落后时)或等待(超前时)主时钟。
视频同步到音频的基本方法是:如果视频超前音频,则不进行播放,以等待音频;如果视频落后音频,则丢弃当前帧直接播放下一帧,以追赶音频。
按照主时钟的不同种类,可以将音视频同步模式分为如下三种:
音频同步到视频,视频时钟作为主时钟。
视频同步到音频,音频时钟作为主时钟。
音视频同步到外部时钟,外部时钟作为主时钟。
好文章,来自【福优学苑@音视频+流媒体】
***【在线视频教程】***