我在我的应用程序中使用 MPMoviePlayer 播放短视频,在 SDK 3.1.3 中没有问题。我对 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];
}
同样的问题仍然存在 - 我可以听到音频并且播放结束时的通知按预期调用。但是我只看到黑屏而不是视频。
视频的编码没有任何问题,因为相同的视频在 iTunes 和我的 iPod Touch 上的常规视频播放列表中都可以正常播放。
谁能帮我解决这个问题?
提前致谢