记录<一次点播的无法seek的问题跟踪>的bug的完整排查思路

一. 问题背景

长达26个小时的KPL直播.Seek到中间偏后的时候会卡死不动.但是前面1-2个小时可以Seek.

二. 问题跟踪

大家有兴趣可以先看看Mac上终端调试FFmpeg任意版本源码的最佳实践

这个问题刚开始跟踪的时候,首先想到的是是不是视频源的问题.是用vlc和flv去尝试.奇怪的是vlc也不支持.但是ffmpeg支持.
此时我们来跟踪问题,发现到了JitterBuffer层之后无法往解码层送数据

// 正在 seek
if (packet->pts - packet->start_pts < seek_to_timestamp_) {
   
LOG_DEBUG("OnAudioPacketDemuxed, drop audio packet : %lld, start : %lld, seek time : %lld", packet->pts, packet->start_pts, seek_to_timestamp_);
return true;
}

两者相减为负数,我们要去seek的pts不对.到底为什么不对呢?

1. 首先怀疑的是解析pts出错了?

因为此流地址是

http://xxx/playlist_eof.m3u8

我们下载后看里面ts文件可知

流的第一个ts分片:
http://xxx_1.ts?start=0&end=2475019&type=mpegts
pts=8171962796

中间的某一个:
http://xxx_525.ts?start=24645672&end=26180503&type=mpegts
pts=4399514004

最后一个:
http://xxx_1302.ts?start=24598860&end=25023363&type=mpegts
pts=6771267804

现在通过ffmpeg工具查看ts分片后得知:

ffplay http://xxx_1.ts\?start\=0\&end\=2475019\&type\=mpegts

可正常播放.
然后用命令行看一下pts.

ffprobe -show_packets http://xxx_1.ts\?start\=0\&end\=247501
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爽朗地狮子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值