【发布时间】:2021-11-14 05:48:11
【问题描述】:
我正在编写一个视频/音频播放器,它使用 libav/ffmpeg 通过 UDP 对 MPEGTS 流进行解复用和解码。我正在处理的一个问题是,有时流正在循环播放,当它循环播放时,我的播放器会崩溃。
问题在于,一旦流循环,新数据包的 dts/pts 就会大不相同。我的播放器依赖 pts 进行视频 - 音频同步,所以我可以正确处理 pts 很重要。
每当服务器循环流时,它都会发送一个不连续标志,我可以确认它被 libav mpegts demuxer 正确接收(我在代码中做了一些挖掘并检查了调试日志)。但是,在我看来,分路器对不连续标志的作用不大。换句话说,从用户的角度来看,除了 dts/pts 的急剧跳跃之外,我无法判断存在不连续性。
有没有一种方法可以可靠地判断存在不连续性,以便我可以重新计算时间戳并继续顺利播放?
【问题讨论】:
标签: ffmpeg video-streaming libav mpeg2-ts