使用AVPlayer循环播放电影的特定片段 - 总是寻求回到开头

时间:2012-07-31 15:05:27

标签: objective-c ios avfoundation avplayer

我的视频大约有12秒钟。秒5-10是可循环的。

我想从第一次开始播放视频,然后无限期地继续循环播放5-10秒。

然而,当我尝试时,视频再次跳回到开头。 我在这里做错了吗?视频是H.264 mp4格式。

这是我使用的一段代码:(每帧调用更新函数)

-(void) update:(double)timeDelta
{
    if ( !m_player ) {
        return;
    }

    CMTime time = m_player.m_player.currentTime;
    if ( CMTimeGetSeconds(time) > 10.0f ) {
        [m_player seekToTime:CMTimeMakeWithSeconds(5.0f, time.timescale)];     
    }
}

非常感谢任何帮助。

谢谢, 富

2 个答案:

答案 0 :(得分:0)

大多数玩家只会寻找I图片(Intra图片)。可能是你的剪辑在开始时只有一张I图片,在5秒后只有另一张图片。检查一下。如果您可以重新编码,则每隔1秒钟插入一张I图片进行重新编码,以便进行此操作。

答案 1 :(得分:0)

如果该特定视频的关键帧间隔大于5秒,它可能正在寻找一个关键帧。

尝试调整视频的编码方式,以便能够在5秒标记处获得关键帧或使用

[m_player seekToTime:CMTimeMakeWithSeconds(5.0f, time.timescale) toleranceBefore: kCMTimeZero toleranceAfter: kCMTimeZero];

请注意,如果你这样做,解码器必须解码那5秒钟的视频才能在你想要的时间点恢复播放,这样你的循环可能会有短暂的延迟。