MPMoviePlayerController "加载电影..."
Posted
技术标签:
【中文标题】MPMoviePlayerController "加载电影..."【英文标题】:MPMoviePlayerController "Loading Movie..." 【发布时间】:2011-05-20 11:02:20 【问题描述】:我正在尝试使用 ios 4.1 播放 iPhone 上资源文件夹中的视频文件。 MPMoviePlayerViewController 显示视图,但它只显示“正在加载电影...”,并且活动指示器旋转。有谁知道这是什么原因?我尝试了各种应该在 iPhone 上运行的视频格式,每次都得到相同的结果。
电影播放器会响应显示和隐藏控件等操作。
我的代码:
-(void) playVideoNamed:(NSString *)videoName
// I get the path like this so the user can enter extension in the filename
NSString *path = [NSString stringWithFormat:@"%@/%@",
[[NSBundle mainBundle] resourcePath], videoName];
NSLog(@"Path of video file: %@", path);
RootViewController *rootController = [(DerpAppDelegate *)[[UIApplication sharedApplication] delegate] viewController];
NSURL *url = [NSURL URLWithString:path];
MPMoviePlayerViewController *vc = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
vc.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
[rootController presentMoviePlayerViewControllerAnimated:vc];
[vc.moviePlayer prepareToPlay]; // Not sure about this... I've copied this code from various others that claims this works
[vc.moviePlayer play];
【问题讨论】:
【参考方案1】:发现问题:
NSURL *url = [NSURL URLWithString:path];
必须替换为:
NSURL *url = [NSURL fileURLWithPath:path];
很难发现那个...
【讨论】:
太棒了!你拯救了我的一天!非常感谢! @Accatyyc,我可以写成NSURL *url=[[NSURL alloc] initFileURLWithPath:path];
你可以写url = [NSURL fileURLWithPath:path isDirectory:NO];
【参考方案2】:
我在不同的线程上执行代码行,首先调度到主线程修复它:
dispatch_async(dispatch_get_main_queue(), ^(void)
MPMoviePlayerViewController* theMovie = [[MPMoviePlayerViewController alloc] initWithContentURL: videoURL];
[self presentMoviePlayerViewControllerAnimated:theMovie];
);
【讨论】:
以上是关于MPMoviePlayerController "加载电影..."的主要内容,如果未能解决你的问题,请参考以下文章
如何显示 MPMoviePlayerController 控件?
MPMoviePlayerController 隐藏 AirPlay 按钮
MPMoviePlayerController 上的专辑封面
MPMoviePlayerController 已弃用,现在怎么办?