2013-01-09 97 views
1

我只是想加载一个主包中的视频文件,这看起来很简单,但由于某种原因我不断收到MPMoviePlayerController的错误,我有以下代码。在iOS中播放视频失败

- (void)viewDidLoad{ 
[super viewDidLoad]; 

NSString *path = [[NSBundle mainBundle] pathForResource:@"ipad2" ofType:@"mp4"]; 

self.myPlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:path]]; 
[self.myPlayer prepareToPlay]; 

self.myPlayer.movieSourceType = MPMovieSourceTypeFile; 
[self.myPlayer.view setFrame:self.view.bounds]; 
[self.view addSubview:self.myPlayer.view]; 

[self.myPlayer play]; 

} 

我只得到一个黑色的屏幕和下面的输出:

2013-01-09 13:38:15.686 myVideoApp[1789:907] [MPAVController] Autoplay: Likely to keep up or full buffer: 0 
2013-01-09 13:38:15.690 myVideoApp[1789:907] [MPAVController] Autoplay: Skipping autoplay, not enough buffered to keep up. 

我也尝试添加这些通知玩,但是永远不会发送:

[[NSNotificationCenter defaultCenter] 
addObserver:self 
selector:@selector(playVideo:) 
name:MPMoviePlayerLoadStateDidChangeNotification 
object:self.myPlayer ]; 

当我打印self.myPlayer.loadState我得到了0这是undefined loadState。
这些是一个简单的viewController与任何其它方法,并且我对.h文件这些声明: @property (nonatomic, strong) MPMoviePlayerController *myPlayer;

我真的在iOS 6运行,并且这些可以同时在设备和模拟器

回答

2
NSString *path = [[NSBundle mainBundle] pathForResource:@"ipad2" ofType:@"mp4"]; 

您是否在调试器中检查过path不是nil

self.myPlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:path]]; 

这是从文件路径创建URL的错误方法。改为使用+[NSURL fileURLWithPath:]

+0

感谢改变创建URL的方式解决了这个问题 –

0

我也使用MPMoviePlayerViewController在我的应用程序上直播视频,并获得上面的列表errors.And我发现MPMoviePlayer不支持更大的数据来显示视频,但如果您使用较小的数据的视频工作正常,它不会给任何错误。实际上并不是准备玩电影播放器​​的属性的问题。

如果您需要显示更大的数据,然后在您的应用程序中使用webview。