長い調査の後、私が探しているものを見つけることができませんでした(存在するかどうかさえわかりません)ので、これに対する解決策を考えていましたが、以下が見つけた解決策です:
- ビデオ ファイルをシーケンスに分割し、必要なシーケンスのみを再生します。
- 次のターンで修正するよりも、プレイしたかったものと実際にプレイされたものとの時間差を確認してください。
ビデオを分割しようとしたときに品質が低下したため、以下に説明する2番目の方法を使用しました。
720 フレームのうち 20 フレームを再生する必要がありました。私のフレーム レートは 25 フレーム/秒です。基本的な計算の後、20 フレームが 0.8 秒で再生されることがわかりました。「待機」変数が持続時間であるとしましょう(私の場合は0.8ですが、修正が必要です)プレイしたいです(計算方法は後で説明します)
まず、クラスで静的な「タイマー」を次のように定義しました。
static NSTimer *timer;
私はループで再生しているため、シーケンスを再生する必要があるたびに (念のため) タイマーを再設定する必要があります。新しいものとして再作成し、ビデオを一時停止するために呼び出される関数を設定します (pauseVideoAtAnimation)。 :
[timer invalidate];
timer = [NSTimer scheduledTimerWithTimeInterval:wait target:self selector:@selector(pauseVideoAtAnimation:) userInfo:nil repeats:NO];
ビデオを再生するよりも:
[player.moviePlayer play]
その後、追加する必要があるのは、pauseVideoAtAnimation でビデオを一時停止する命令だけです。
[self.player.moviePlayer pause];
助けを求める前にすべてを行ったので、待機変数の修正で何が変わったのか、次はそのための指示です(ここでは、0から始まるカウンターが必要で、シーケンスを再生した回数をカウントします)
double wait = 0.8;
wait += (counter * wait - self.player.moviePlayer.currentPlaybackTime);
counter ++;
それだけです。誰かが同じ問題を抱えている場合、または解決策に興味がある場合は、遠慮なく私に連絡してください:)