说清楚什么是 PCR,PTS,DTS

说清楚什么是 PCR,PTS,DTS


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

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

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

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

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

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

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

三者之间的大小关系:

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

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

(转载请注明作者和出处 easyice.cn ,请勿用于任何商业用途)

1 Star2 Stars3 Stars4 Stars5 Stars (3 人打了分, 平均分: 5.00 )
Loading...

4 thoughts on “说清楚什么是 PCR,PTS,DTS

  1. 你好,easyice!
    看了你的这篇PCR/DTS/PTS的文章,有个比较门外汉的问题想请教一下。播放段参考PCR的话,是否意味着播放端的系统时间与视频来源的那端的时间要保证不能相差太多?比如一台电脑,时间复原到1970年,是否就无法播放当前时间的ts视频了?
    我对ts其实并不了解,最近才开始接触ts,这个问题完全是以路人甲的角度来问的。

    1. 和系统时钟的绝对时间没有关系,各自起始值是多少无所谓,想象播放时把两者放在同一起跑线就行

  2. 看easyice里面的PCR的格式,比如17:50:20,我一直以为这个时间就是代表着码流的绝对时间,就是这个流的当前时间就是当天的下午5点50分20秒。但是目前看来好像不是这样子的。那我想问下如果PCR解析出了这个时间17:50:20,那这个时间代表着什么呢?

  3. 似懂非懂了,但这篇文章明显的问题是没有说清楚PCR和PTS这两个数值的单位,查了一些资料,发现PCR是以27MHz的时钟频率为单位的,也就是PCR = 秒数 * 27000000, 而PTS是以90KHz,也就是PTS = 秒数 * 90000。

发表评论

邮箱地址不会被公开。 必填项已用*标注