编辑:如果您遇到这个并想知道我最终如何解决它,我最终放弃了下面的代码并做到了这一点:
-(void)playMovieAtURL:(NSURL*)theURL{
mediaPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:theURL];
[self presentMoviePlayerViewControllerAnimated:mediaPlayer];
mediaPlayer.view.backgroundColor = [UIColor blackColor];
}
原帖:
这是我的代码 - 我把它从Apple网站上取下来,所以不应该是个问题。
它在didSelectRowAtIndexPath方法的UITableViewController中运行。
当您选择视频开始播放的行时 - 声音输出至少 - 但没有图片。知道为什么会这样吗?我已经包含了这个框架。
该视频是我用于测试的苹果网站(面对面视频)之一。
-(void)playMovieAtURL:(NSURL*)theURL{
MPMoviePlayerController* theMovie =
[[MPMoviePlayerController alloc] initWithContentURL: theURL];
theMovie.scalingMode = MPMovieScalingModeAspectFill;
theMovie.controlStyle = MPMovieControlStyleNone;
// Register for the playback finished notification
[[NSNotificationCenter defaultCenter]
addObserver: self
selector: @selector(myMovieFinishedCallback:)
name: MPMoviePlayerPlaybackDidFinishNotification
object: theMovie];
// Movie playback is asynchronous, so this method returns immediately.
[theMovie play];
}
答案 0 :(得分:1)
在OS 3.2中更改了MPMoviePlayerController的行为 - 您需要立即将电影播放器的视图添加到视图层次结构中 - 使用类似于:
[aView addSubview:moviePlayerController.view];
moviePlayerController.view.frame = aView.frame;
或者,您可以使用MPMoviePlayerViewController(3.2中的新功能)来管理视图。
如果您要定位3.2之前和之后的设备(例如iOS 3.1和4.0),那么您将需要一些条件代码来确定代码运行的操作系统并进行相应处理。我在以前的项目中使用过这个:
if ([moviePlayerController respondsToSelector:@selector(setFullscreen:animated:)]) {
// Running on OS 3.2 or above
// Code to add to a view here...
}