我试图让视频在iOS的applocation播放,使用的MPMoviePlayerController当用户按下一个按钮,添加一个电影以现有视图。 该视图显示为正确的位置上,一切都黑盒子,但没有任何反应。 我期待这部电影开始播放,但没有任何反应,并从应用上为什么没有提示。
任何人都可以看到这个错在何处?
-(IBAction) playButtonClicked:(id)sender
{
NSString* path = [[NSBundle mainBundle] pathForResource:@"sample_mpeg4" ofType:@"mp4"];
NSLog(@"Using videoPath %@", path);
NSURL* url = [NSURL fileURLWithPath:path];
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:url];
[self.view addSubview:player.view];
player.view.frame = CGRectMake(10, 10, 300, 220);
[player play];
}
电影存在并记录正确的路径,但仍然没有电影播放。
2012-07-06 11:51:13.492 experiments[84702:12203] Using videoPath /Users/marius/Library/Application Support/iPhone Simulator/5.1/Applications/9799C851-8D2B-4CFE-8CFA-A4C4C954787F/experiments.app/sample_mpeg4.mp4
从我已阅读并理解这应该是工作。 什么任何提示或建议来试试呢?
让我感动的电影,以一个HTTP服务器(fg.mp4),并尾矿的访问日志。 当单击播放按钮出现在一贯的黑色窗口。 Serverside集团我在日志中发现了两个新的条目:
168.122.x.x - - [06/Jul/2012:22:42:33 +0200] "GET /fg.mp4 HTTP/1.1" 304 192 "-" "AppleCoreMedia/1.0.0.9B176 (iPhone Simulator; U; CPU OS 5_1 like Mac OS X; en_us)"
168.122.x.x - - [06/Jul/2012:22:42:33 +0200] "GET /fg.mp4 HTTP/1.1" 206 33304 "-" "AppleCoreMedia/1.0.0.9B176 (iPhone Simulator; U; CPU OS 5_1 like Mac OS X; en_us)"
所以手机获取的视频内容的部分,-apparently-准备在需要的时候得到休息。 是否有我错过了的MPMoviePlayerController一些明显的参数?
UPDATE:解决方案和工作代码
问题是由ARC和事实,到没有提及造成MPMoviePlayerController
都不停地打电话的方法设置控制器之后。 将溶液:添加类变量的类,并使用此,以保持到所述控制器的参考的电影的寿命。
因此,在类的声明(任何消息/函数的定义外)早:
MPMoviePlayerController* mpController;
而abeformentioned playButtonClicked
使用这个变量来跟踪控制器:
NSString* path = [[NSBundle mainBundle] pathForResource:@"sample_mpeg4" ofType:@"mp4"];
NSURL* url = [NSURL fileURLWithPath:path];
mpController = [[MPMoviePlayerController alloc] initWithContentURL:url];
mpController.view.frame = CGRectMake(10, 10, 300, 220);
[self.view addSubview:mpController.view];
[mpController play];