0
Iphoneのmediaplayercontrollerに問題があります。Iphone mpmediaplayerController、ユーザーが完了した後にビデオを再起動できない
私は問題なくビデオを一度再生することができます。
ユーザーが完了を押すと、メディアプレーヤーを閉じて、ユーザーを前の画面に戻します。 (私はナビゲーションベースのアプリケーションを使用しています)。
ただし、再生ボタンを押してビデオを再開しようとすると、mediaplayerコントローラは正しく動作しなくなります。
私は黒い画面が表示されます。ビデオも音もない。
私は既にMPMoviePlayerPlaybackDidFinishNotificationまたはMPMoviePlayerDidExitFullscreenNotificationを取得した後、以前のmediaplayperコントローラをリリースしました。
アドバイスをいただければ幸いです。
詳細-------ここ は、私のコードの抜粋です、あなたがプレイヤーを解放言及
- (void) viewDidAppear:(BOOL)animated
{
moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:url];
[self.view addSubview:moviePlayerController.view];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlaybackComplete:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlaybackComplete:)
name:MPMoviePlayerDidExitFullscreenNotification
object:nil]; // This is to deal with the user pressing the done button.
[moviePlayerController setFullscreen:YES];
[moviePlayerController play];
}
- (void)moviePlaybackComplete:(NSNotification *)notification
{
NSLog(@"movie playback ended");
int reason = [[[notification userInfo] objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] intValue];
if(reason == MPMovieFinishReasonPlaybackEnded)
NSLog(@"Reason: MPMovieFinishReasonPlaybackEnded");
else if(reason == MPMovieFinishReasonPlaybackError)
NSLog(@"Reason: MPMovieFinishReasonPlaybackError");
else if(reason == MPMovieFinishReasonUserExited)
NSLog(@"Reason: MPMovieFinishReasonUserExited");
else
NSLog(@"Reason: %d", reason);
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerDidExitFullscreenNotification
object:nil];
[moviePlayerController.view removeFromSuperview];
moviePlayerController.initialPlaybackTime = -1;
[moviePlayerController pause];
[moviePlayerController stop];
[moviePlayerController release];
moviePlayerController = nil;
[[self navigationController] popViewControllerAnimated:YES];
}
ので、念のために、あなたは右の新しいインスタンスを作成しています?また、MPMoviePlayerPlaybackDidFinish通知が実際に呼び出されていることを確認します。 – Keller
完了ボタンを押すとMPMoviePlayerDidExitFullscreenNotificationが呼び出されます。 ご覧のとおり、新しいビデオを再生しようとするたびに、mediaplayerの新しいインスタンスを作成しました。 – russell