专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 多媒体/流媒体开发

h264封装成PS过程中PTS,SCR等怎么计算

发布时间:2011-06-27 19:11:14 文章来源:www.iduyao.cn 采编人员:星星草
h264封装成PS过程中PTS,SCR等如何计算
小弟在把h264封装成PS的过程中发现生成的PS文件无法播放,现在怀疑是PES头中的PTS和PS头中的SCR_base及SCR_ext这些内容填的不对。
我想问一下:
1.ps头中
src_base(i)=((system_clock_frequency*t(i))DIV 300)%2 33
src_ext(i)=((system_clock_frequency*t(i))DIV 1)%300
这两个公式中的t(i)怎么获得,网上有前辈说是取的获得h264流的时间戳 (ms为单位),那这个时间戳又是怎么获得的呢?

2.PTS是如何获得的,有资料说PTS=初始时间戳(自己定)+(1/h264码流帧率*时间单位*帧序号),这个h264的帧率是从SPS中获取吗,我手头的一个h264文件的一个sps是67 42 e0 0d 96 52 02 83 f4 05,请问这里面包含有time_scale和num_units_in_tick这样的信息吗?

3.问题1和问题2中的时间戳是同一个概念吗,也就是说对同一个nalu打包时的scr中的t(i)和PTS是不是可以用同一个值?
h264 ps

------解决方案--------------------
1:MPEG-2标准文档里有详细解释公式的system_clock_frequency参考值范围,t(i)就是到达时间。时间戳PTS的单位不是ms为单位,而是一个33位数字,单位是90KHz的倍数,因此可以利用这个系数换算成s或ms。具体的PTS解释MPEG-2标准文档里也有。
2:PTS在PES分组里一般都有,如果是自己生成,那么可以自己定个初始值,如果是已经写好的文件,那么参考PES分组解出来就行了。
H264里的time_scale与num_units_in_tick,可以用来计算视频的帧率,这两个参数的意义可以翻阅H264的标准。
3:打包封装成MPEG-2可以用两种形式:PS与TS,这两种封装方式里的PTS都是一样的。t(i)和PTS我觉得应该可以用同一个值,都是表达内容呈现时间,当然,这个值是换算后等价的,毕竟t(i)和PTS的单位不同。

以上为个人看法。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: