MPMoviePlayerController でビデオを 2 回再生する
-
19-09-2019 - |
質問
アプリで複数のビデオを再生できる必要があります。
残念ながら、2 回目に再生ボタンを押すと、ビデオが点滅して表示されます。
動画の再生にはこのコードのみを使用します
NSURL *url = [[[NSURL alloc]initFileURLWithPath:[[NSBundle mainBundle]pathForResource:@"Movie" ofType:@"m4v"]] autorelease];
MPMoviePlayerController *mp = [[MPMoviePlayerController alloc]initWithContentURL:url];
mp.movieControlMode = MPMovieControlModeDefault;
[mp 再生];
moviePlayer = mp;
[MP リリース];
どこに問題があるのか誰か教えてもらえますか?前もって感謝します!
更新 1: どうやらアップルは、 ムービープレーヤー 例にも同じ問題があります。
解決
play 関数を呼び出す前に、初期再生時間を -1.0 に設定することによってもこれを行うことができます。
mp.initialPlaybackTime = -1.0;
このコードを play メソッドが呼び出される前に置きます。
他のヒント
この問題は、MPMoviePlayerController の再生終了後に通知システムを使用してコールバックを実行し、そこでプレーヤー オブジェクトを解放することで解決しました。
ムービーを再生する前に通知を追加します。
NSURL *url = [[[NSURL alloc]initFileURLWithPath:[[NSBundle mainBundle]pathForResource:@"Movie" ofType:@"m4v"]] autorelease];
MPMoviePlayerController *mp = [[MPMoviePlayerController alloc]initWithContentURL:url];
mp.movieControlMode = MPMovieControlModeDefault;
//***Add this line***
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMovieFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object:mp];
[mp play];
次に、コールバック メソッドを追加します。
-(void)myMovieFinished:(NSNotification*)aNotification
{
MPMoviePlayerController *moviePlayer = [aNotification object];
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerDidFinishNotification object:moviePlayer];
[moviePlayer release];
}
唯一の解決策は...3.1用のアプリを作るには
また、OS 3.1 以降のバージョンのシミュレータで実行すると、うまくプレイできることがわかりました。点滅は表示されません。しかし、追加すると
initialPlaybackTime = -1.0
OS 3.0 でも問題なく動作します。