iOS:AVPlayerItem seekToTime没有寻求确切的时间请求

时间:2016-02-05 16:43:00

标签: ios video avplayer avplayeritem

我正在开发一个通过HTTP流式传输视频的应用。 AVPlayer用于播放视频。我正在使用AVPlayerItem和selectMediaOption方法在特定视频流之间切换(源中有三个流)。

我的问题是当我在媒体选项之间切换时,我呼叫seekToTime: toleranceBefore: toleranceAfter:以跳过新视频到与我切换的视频相同的时间点。麻烦的是,这不能可靠地工作。即使AVPlayerItem currentTime属性报告我请求的时间,视频通常会在请求的时间之前几秒跳到某一点。我正在通过kCMTimeZero for toleranceBefore和toleranceAfter。

值得一提的是,这只发生在一个特定的媒体流中。我有另一个没有出现问题的媒体流。

任何人都可以在这里提出可能存在的问题吗?

1 个答案:

答案 0 :(得分:0)

事实证明,这个问题与API没有任何关系,也没有与它们的使用方式有关。看起来用于创建视频片段的编码器会在生成的文件中创建错误。

ffprobe报告的错误如下:

[h264 @ 00000249a4348980] decode_slice_header error
[h264 @ 00000249a4348980] no frame!
[h264 @ 00000249a4348980] non-existing PPS 0 referenced

我不确定用于制作我正在使用的视频片段的原始工具是什么,但我已经确认Apple的媒体文件分隔符也会导致错误。

我通过使用ffmpeg对段进行编码来解决错误。