0

我有一个大约 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)];     
    }
}

任何帮助将非常感激。

谢谢,丰富

4

2 回答 2

0

大多数玩家只会寻找 I 图片(Intra 图片)。可能是您的剪辑在开始时只有一张 I 图片,而在 5 秒后又有一张。检查那个。如果您可以重新编码,则使用每 1 秒插入的 I 图片重新编码以允许您执行此操作。

于 2012-08-06T17:53:50.403 回答
0

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

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

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

请注意,如果您这样做,解码器必须在您想要的点恢复播放之前解码这 5 秒的视频,因此您可能会在循环中出现短暂的延迟。

于 2012-08-06T17:57:02.587 回答