一、封装的概念
封装格式(也叫容器)就是将已经编码压缩好的视频流、音频流及字幕按照一定的方案放到一个文件中,便于播放软件播放。
一般来说,视频文件的后缀名就是它的封装格式。
封装的格式不一样,后缀名也就不一样。
比如:同样的陷可以做成饺子也可以做成包子。对于视频也是一个道理,同样的音视频流可以用不同容器来承载。
二、封装格式样例
**.H264.ACC.mkv,通过文件名我们就可以知道,这个电影文件的封装格式是mkv,且至少包含h.264编码的视频流和ACC编码的音频流。
三、常见的封装格式
四、视频封装格式和编码格式的区别
我们常常认为每个视频的后缀名(扩展名)就是视频的格式,常见的视频文件后缀名有:MP4、MKV、AVI、MOV等,其实这些后缀名只是代表了视频的封装格式,视频还有编码格式
五、音视频同步基础
1.为什么进行音视频同步?
由于计算机系统大部分是分时系统,所以当负载过高或者设备性能差的时候,音频播放线程 或者 视频播放线程会卡顿,调度不过来,导致视频画面已经更新了,但是声音还没放出来。这种不同步的差异如果越积越大,就会明显体验不好。
典型的场景就是,演讲视频里面的口型跟声音。
2.概念
DTS(Decoding Time Stamp):即解码时间戳,这个时间戳的意义在于告诉播放器该在什么时候解码这一帧的数据。
PTS(Presentation Time Stamp):即显示时间戳,这个时间戳用来告诉播放器该在什么时候显示这一帧的数据。
视频中有dts和pts,其实音频里面也有dts和pts,只不过音频里面没有B帧,
我们都知道在一个媒体流中,除了视频以外,通常还包括音频。音频的播放,也有 DTS、PTS 的概念,但是音频没有类似视频中 B 帧,不需要双向预测,所以音频帧的 DTS、PTS 顺序是一致的。
音频视频混合在一起播放,就呈现了我们常常看到的广义的视频。在音视频一起播放的时候,我们通常需要面临一个问题:怎么去同步它们,以免出现画不对声的情况。
3.音视频同步方式
Audio Master:同步视频到音频
Video Master:同步音频到视频
External Clock Master:同步音频和视频到外部时钟。
一般情况下 Audio Master > External Clock Master > Video Master
要实现音视频同步三种方案:
1.1 : 参考一个外界的时间基
1.2 : 同步视频到音频
1.3 : 同步音频到视频