SDK 3.1.3 では、MPMoviePlayer を使用してアプリで短いビデオを再生していましたが、問題はありませんでした。SDK 4 のコードを変更しましたが、ビデオが再生されません。黒い画面と音声だけが表示されます。Apple Dev Center には、最新の SDK 用のこのクラスのサンプル コードはありません。以下は私が使用しているコードです:
- (void)viewDidLoad {
[super viewDidLoad];
//videoPlayer is a MPMoviePlayerController object defined in the header file of the view controller
if (videoPlayer == nil){
NSString * videoPath = [[NSBundle mainBundle] pathForResource:@"myvideo" ofType:@"mp4"];
if (videoPath == NULL){
return;
}
NSURL * videoURL = [NSURL fileURLWithPath:videoPath];
videoPlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
videoPlayer.controlStyle = MPMovieControlStyleNone;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackFinished:) name:@"MPMoviePlayerPlaybackDidFinishNotification" object:movieController.moviePlayer];
[videoPlayer play];
[videoPlayer setFullscreen:YES];
[self.view addSubview:videoPlayer.view];
}
}
上記の結果、オーディオだけが黒い画面で再生されます。通知は、再生の最後に正しく呼び出されます。
上記が機能しない場合、次のように新しい MPMoviePlayerViewController クラスを使用してみました。
- (void)viewDidLoad {
[super viewDidLoad];
NSString * videoPath = [[NSBundle mainBundle] pathForResource:@"myvideo" ofType:@"mp4"];
if (videoPath == NULL){
return;
}
NSURL * videoURL = [NSURL fileURLWithPath:videoPath];
//movieController is an MPMoviePlayerViewController object defined in the header file of view controller
movieController = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackFinished:) name:@"MPMoviePlayerPlaybackDidFinishNotification" object:movieController.moviePlayer];
[movieController.moviePlayer setFullscreen:YES];
[movieController.moviePlayer play];
[self presentMoviePlayerViewControllerAnimated:movieController];
}
同じ問題が解決しません。音声が聞こえ、再生の最後に通知が正常に呼び出されます。ただし、ビデオの代わりに黒い画面が表示されます。
同じビデオが通常のビデオ プレイリストの iPod Touch だけでなく、iTunes でも問題なく再生されるため、ビデオのエンコードに問題はありません。
誰かがこの問題で私を助けてくれますか?
前もって感謝します