2

私は iPhone 開発に非常に慣れていないので、ビデオを再生する必要があるアプリケーションを作成しています。イベントが発生したら、特定の数のフレームを再生したいと考えています。そのほとんどはすでに完了していますが、まだ達成できませんでした.50フレームだけを正確に再生する方法です.50フレームの長さを秒で計算しようとすると、再生/一時停止を行うことができますが、しばらくすると、計算が 100% 正しくないため、問題が発生し始めます

誰かが助けてくれたら、アドバイス/コメント/批評を喜んで受け取ります。よろしくお願いします:)

PS: MPMoviePlayerController を使用してビデオを再生しています

よろしく

編集:MPMoviePlayerController以外に必要なことを実行できる他の方法を知っていれば、問題なく使用できます

4

1 に答える 1

1

長い調査の後、私が探しているものを見つけることができませんでした(存在するかどうかさえわかりません)ので、これに対する解決策を考えていましたが、以下が見つけた解決策です:

  1. ビデオ ファイルをシーケンスに分割し、必要なシーケンスのみを再生します。
  2. 次のターンで修正するよりも、プレイしたかったものと実際にプレイされたものとの時間差を確認してください。

ビデオを分割しようとしたときに品質が低下したため、以下に説明する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 ++;

それだけです。誰かが同じ問題を抱えている場合、または解決策に興味がある場合は、遠慮なく私に連絡してください:)

于 2012-05-10T09:10:17.817 に答える