向高手请教MPEG2码流(TS流)系列问题一:PTS怎么用?

AgedBOY 2011-07-05 06:31:22
各位高手,请教个问题,希望不吝赐教。

先需要对MPEG2 TS流进行解复用,然后基于DShow播放。

研读《13818-1》以及在网上搜索,发现PES头里的PTS可以直接转化为DirectShow的Sample Time。

网上有一些公式,但是最基本的没人说清楚啊,《13818-1》里说PTS是一个33 bits的三段数据!三段啊?!分别用两个为“1”的bit分割,各11 bits。那么这到底是什么意思啊?!

这么说吧,比方说,网上有一个转换公式:

Refrence Time = (PTS * 300) / 27
(http://hi.baidu.com/bamboolsu/blog/item/a30335d8367a3b2710df9bed.html)

但是这个公式看上去PTS是一个数啊?那么那个33 bits的PTS怎么用在这个公式里呢?为什么没人提这个问题呢?我粗略通看了《13818-1》也没有地方解释啊。

谢谢。

...全文
522 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
IamGooday 2011-07-12
  • 打赏
  • 举报
回复
其实,除了你所看到的33bit的PTS和DTS标志外,还有一个42bit的STC(System Time Conferece?)计数,他们采用的就是27MHz计数,截短9bit,正好是33bit,对应的计数时钟是90KHz。根据MPEG标准,就是利用这个截短的STC计数与PTS或者DTS作对比,从而在对应的时间解码或者显示。这样,由于STC本身就是longlong,因此也基本不存在类型转换的问题。
ryfdizuo 2011-07-06
  • 打赏
  • 举报
回复
不懂,帮顶了。
AgedBOY 2011-07-06
  • 打赏
  • 举报
回复
zoulie没有回答我想知道的啊,zoulie只是说了MPEG2和DSHOW的时钟数值的最小单位不同。这个我知道啊,求求你们再启发启发我呗~~

我问的是:TS里的PTS数值为啥用 3 段表示?时钟数值按理讲就是 1 个整形数啊?!不是吗?

摘录一段《13818-1》 P65页里面,对PTS、DTS都有的情形:

if (PTS_DTS_flags ==‘11’ ) {
'0011' 4 bslbf
PTS [32..30] 3 bslbf
marker_bit 1 bslbf
PTS [29..15] 15 bslbf
marker_bit 1 bslbf
PTS [14..0] 15 bslbf
marker_bit 1 bslbf
'0001' 4 bslbf
DTS [32..30] 3 bslbf
marker_bit 1 bslbf
DTS [29..15] 15 bslbf
marker_bit 1 bslbf
DTS [14..0] 15 bslbf
marker_bit 1 bslbf
}

从上面摘录可见,PTS和DTS的格式相同,都是由一个3 bits和两个15 bits组成,之间用两个1 bit的“marker_bit”分开。这样看起来,就不是一个数值,像是3个数值啊?

我该怎么理解这个?谢谢!
AgedBOY 2011-07-06
  • 打赏
  • 举报
回复
谢谢IamGooday,刚好经过一下午暴搜,再加上MPEG-2 TS packet analyser软件的帮助,我也大概了解到,闹了半天PTS/DTS就是一个33 bits的整形数,那中间的“marker_bit”木有用,是用来跳过的。

得了,谢谢大家了。虽然还是搞不懂“marker_bit”到底有什么好处,也不确定为啥整了个33 bits这么个不长不短的数(32位好歹是个DWORD,64位是long long,33 bits是个啥啊),不过跳过“marker_bit”把其余的bits拼起来,发现得到的PTS数值,与MPEG-2 TS packet analyser软件分析出的PTS数值相等。
IamGooday 2011-07-06
  • 打赏
  • 举报
回复
只是格式问题,没什么特别之处,你把这3段字节拼起来就可以了。
zoulie 2011-07-05
  • 打赏
  • 举报
回复
2进制数值表示33bits, 1 11111111 11111111 11111111 11111111
时间戳是以90Khz为时钟参考,dshow里面是100纳秒为单位的

2,552

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧