2

そのため、MPMoviePlayer は、MoviePlayer によって内部的にシークが行われているにもかかわらず、前方にシークする必要がないように見えるため、シークが発生していることを知るために通知を設定するだけです。

したがって、通知を次のように設定します。

[[NSNotificationCenter defaultCenter] addObserver:self          
   selector:@selector(playbackStateDidChange:)            
   name:MPMoviePlayerPlaybackStateDidChangeNotification object:theMovie];

次に、playbackStateDidChange: 内に次の関連コードがあります。

MPMoviePlayerController *mpc = [notification object];
MPMoviePlaybackState state = mpc.playbackState;
if (state==MPMoviePlaybackStateSeekingForward)
    NSLog(@"playback state is seeking forward");

最後に、前方シーク ボタンを押したままにすると、playbackStateDidChange が実際に呼び出され、実際に「再生状態が前方にシークしています」と表示されますが、ムービーの動作に識別可能な変化は見られません。ただし、2 回目に順方向にシークしようとすると、コンソールに次の警告が表示されます。

警告: _inflightSeekRate は既に設定されています。これは、_rateDidChangeNotification が受信される前に複数の setRate:error: 呼び出しが行われたことを意味します

つまり、基本的に、フォワード シークが適切に機能していません。これは MPMoviePlayer のバグであるという予感がありますが、オンラインで自分の主張を裏付けるものや質問に答えるものを見つけることができませんでした。この問題を処理する方法 (おそらく回避策) について何か良いアイデアがあれば、私はすべて耳にします。

ありがとう;

-スティーブ

PS - 先週 X-Code/iPhone SDK をアップグレードするまで、私の MPMoviePlayer シークは問題なく機能していたことに言及する必要があります。フォワードシークを除いて、今は問題ないようです。

4

0 に答える 0