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 ピクチャ (イントラ ピクチャ) のみを探します。クリップの最初に I ピクチャがあり、5 秒後に別の I ピクチャしかない場合があります。それを確認します。再エンコードできる場合は、I ピクチャを 1 秒ごとに挿入して再エンコードしてください。

于 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 に答える