MPMoviePlayerを使用してビデオURLをストリーミングしています。
ユーザーがビューをタップすると、ビデオはビューのフレームから始まります。それは大丈夫です。ビデオが埋め込まれているため、デフォルトのコントロールにはズームインボタンが配置されています。
ユーザーがズームインを押すと、再生を中断することなく、ビデオはフルスクリーンでOKになります。
ただし、ユーザーがもう一度ズームアウトボタンを押すと、次の3つの問題が発生します。
ビデオは、元の位置に戻るのではなく、画面の隅にズームしてから消えます。
コーナーに行くとビデオが消え、ビデオの再生を続ける代わりに再生が終了します。
MPMoviePlayerDidExitFullscreenNotificationが呼び出されることはなく、MPMoviePlayerWillExitFullscreenNotificationのみが呼び出されます。nilとmediaPlayerControllerを通知センターに送ってみました。
また、[完了]ボタンを押すと、ビデオが画面の隅に移動して消えます。
私のプレーヤーは次のようにして作成されます。
moviePlayer=[[MPMoviePlayerController alloc] init];
moviePlayer.movieSourceType = MPMovieSourceTypeStreaming;
moviePlayer.scalingMode = MPMovieScalingModeAspectFit;
moviePlayer.shouldAutoplay=YES;
moviePlayer.controlStyle=MPMovieControlStyleEmbedded;
moviePlayer.view.hidden = YES;
次に、ユーザーがビューをタップすると、これが発生します。
- (void) playVideo {
NSURL *url=[NSURL URLWithString: _news.videoUrl];
moviePlayer.contentURL = url;
moviePlayer.view.hidden = NO;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerWillExitFullScreen:) name:MPMoviePlayerWillExitFullscreenNotification object:moviePlayer];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerDidExitFullScreen:) name:MPMoviePlayerDidExitFullscreenNotification object:moviePlayer];
[moviePlayer play];
}
- (void) moviePlayerWillExitFullScreen:(NSNotification*)notification {
NSLog(@"WILL EXIT FULLSCREEN");
}
- (void) moviePlayerDidExitFullScreen:(NSNotification*)notification {
NSLog(@"EXITED FULLSCREEN"); //NOT CALLED
}
- (void) moviePlayBackDidFinish:(NSNotification*)notification {
NSLog(@"FINISHED PLAYIIING");
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer];
moviePlayer.view.hidden = YES;
}