分享

说清楚什么是 PCR,PTS,DTS

 wusiqi111 2018-08-07

时间戳是容器层的基础概念,很多人还搞不清楚 PCR,PTS,DTS 到底什么关系,对于刚入门的朋友来说,确认让人感到迷惑。

搞清楚三者的区别,本质上就一句话:PCR 是时钟,PTS,DTS 是时刻。是不是已经顿悟了?

这三个的全称为:
PCR: 系统参考时钟
PTS: 显示时间
DTS: 解码时间

PCR 是 TS 流中才有的概念。设想在定义规范的时候,假如只需要支持纯视频,那就不需要使用时间戳了,解码器只要按固定帧率播放就可以。当需要把音视频数据合并在一起,控制av同步就是一个问题。时间戳机制被引入用以解决av同步问题。

假设a,b两人约定某个时刻去做某事,则需要一个前提,他们两人的手表必须是同步的,比如都是使用北京时间对时的,如果他们的表不准 ,比北京时间差了几个小时,就会有人迟到,要做的事情被耽误。pcr就是北京时间,编码器将自己的系统时钟采样,以pcr形式放入ts,解码器使用pcr同步自己的系统时钟,保证编码器和解码器的时钟同步。

dts,收到的数据何时解码,现在的解码器已经基本不关心他,收到数据立即解码。只使用pts

pts控制画面何时显示,音频何时播放。

三者之间的大小关系:

1
2
3
 
PCR < DTS < PTS
 

假设现在中午12点,正常情况下,画面总是在未来某个时刻显示,所以pts总是大于方式的系统时间,如果pts要求为上午9点显示,解码器就认为这个画面迟到了。如果要求晚上7点显示,就会造成解码器缓冲溢出。解码器不知到这些画面如何播放,丢弃缓冲或其它异常处理,用户看到的效果都会不流畅,因为本该显示的画面耽搁了太久。所以pts与pcr总是会有合理的间隔值。时间戳的正确性直接决定播出效果。

一些不规范pc播放器并不关心pcr,使用视频或音频pts作为参考时间,对于pcr有错的ts,他们是可以正常播的。机顶盒也可以采用相同机制,绝大部分机顶盒都是以pcr作为参考时间的。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多