DTS、PTS 的概念
DTS、PTS 的概念如下所述:
- DTS(Decoding Time Stamp):即解码时间戳,这个时间戳的意义在于告诉播放器该在什么时候解码这一帧的数据。
- PTS(Presentation Time Stamp):即显示时间戳,这个时间戳用来告诉播放器该在什么时候显示这一帧的数据。
需要注意的是:虽然 DTS、PTS 是用于指导播放端的行为,但它们是在编码的时候由编码器生成的。
音画同步
在一个媒体流中,除了视频以外,通常还有音频,音频也有 DTS、PTS 的概念,但是音频没有类似于视频中 B 帧,不需要双向预测,所以音频帧的 DTS、PTS 顺序是一致的。
音频视频混合在一起播放,就呈现了我们常常看到的广义的视频。
用户对于音画不同步的感知程度:
如何同步音画同步
PTS是实现 音画同步的关键。PTS从SPS中获取,事实上SPS中并没有直接关于PTS的值,是需要通过帧率计算的,前面我们了解到SPS中是可以获取 FPS 的数据,这里不展开叙述获取 PTS 的过程。
要实现音视频同步,通常需要选择一个参考时钟,参考时钟上的时间是线性递增的,编码音视频流时依据参考时钟上的时间给每帧数据打上时间戳。在播放时,读取数据帧上的时间戳,同时参考当前参考时钟上的时间来安排播放。这里的说的时间戳就是我们前面说的 PTS。实践中,我们可以选择:同步视频到音频、同步音频到视频、同步音频和视频到外部时钟。
总结
关于解码的章节,你已经学习完毕了相信你对解码的整个过程有了一个初步的认知,实际上 NALU 中存储的信息十分复杂,手册也仅仅只是列举出重要的几项加以解析,如果想学习更多,欢迎和我们小组同学多多沟通。