TS 流 打包 DTS PTS 和PCR 计算问题

andensy 2015-06-05 02:59:19
最近在做一个HLS直播服务器的项目,目前功能已经基本可用,但是手机端在连续直播1~2小时之后就会卡住,播放不了,怀疑是HLS服务器在ts打包的时候DTS和PCR计算不对导致的。DTS和PCR计算代码粘贴如下,各位大佬帮忙看看问题出在哪

	if(HLS_VIDEO_H264 == stream)
{
live->pts += 90 * 76; // 90kHZ * 40ms // 对应于13帧, 时间戳应该是加80
}


     pcr = stream->pts * 300 - 100;

int64_t pcr_base = pcr / 300;
int64_t pcr_ext = pcr % 300;

ptr[0] = (pcr_base >> 25) & 0xFF;
ptr[1] = (pcr_base >> 17) & 0xFF;
ptr[2] = (pcr_base >> 9) & 0xFF;
ptr[3] = (pcr_base >> 1) & 0xFF;
ptr[4] = ((pcr_base & 0x01) << 7) | 0x7E | ((pcr_ext>>8) & 0x01);
ptr[5] = pcr_ext & 0xFF;


在网上找了好多,基本上大同小异,但是对具体怎么计算PTS和PCR语焉不详,请各位帮忙解决,多谢! 输入的h264码流只有I帧和P帧,所以DTS和PTS相等。
...全文
905 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ArcRain 2015-06-27
  • 打赏
  • 举报
回复
旧帖有讨论过PTS和DTS:http://bbs.csdn.net/topics/390712540,可以参考下。 然后计算时递增的时间长度,应该要考虑到你的视频帧率,用帧率来计算单位时间。 PCR应该是恒定的值,具体可以看下MPEG-2的协议文档,有段时间没搞多媒体了,忘了。

2,543

社区成员

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

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