1

0.02秒から再生するためにかなり短いビデオ(0.05秒)を取得しようとしています。私は以下のコードを使用します:

CMTime tolerance = CMTimeMake(0,1);
CMTime replayBeginTime = CMTimeMake(1, 50);

[player seekToTime: replayBeginTime toleranceBefore: tolerance toleranceAfter: tolerance];
[player play];

プレーヤーがAVPlayer*の場合。ビデオは最初から最後まで正常に再生され、ボタンを押してほぼ中間点に戻り、そこから再生されるはずですが、毎回ビデオを再起動するだけです。

CMTimeMakeを正しく使用していると100%確信しているわけではありません。

私が間違っていることを理解する助けがあれば大歓迎です。

4

1 に答える 1

6

1/50 = 0.02の値でCMTimeを作成しているため、CMTimeMakeを正しく使用しています。しかし、代わりにCMTimeMakeWithSecondsを使用する必要があると思います。CMTimeMakeは秒の整数値しか取ることができないのに対し、CMTimeMakeWithSecondsはfloatを取ることができるためです。このように使用する必要があります。

CMTime newTime = CMTimeMakeWithSeconds(0.2, 1);
[player seekToTime:newTime];

幸運を。

于 2011-07-11T18:58:31.547 に答える