此代码在iPad 4.3模拟器上完美运行:
NSString *source = [mediaObject objectForKey:@"source"];
NSString *videoPath = [NSString stringWithFormat:@"%@/%@", path, source];
NSURL *videoUrl = [NSURL fileURLWithPath:videoPath];
MPMoviePlayerController *videoPlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoUrl];
videoPlayer.shouldAutoplay = NO;
videoPlayer.view.frame = CGRectMake(xPos, yPos, width, height);
[backgroundImageView addSubview:videoPlayer.view];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoPlaybackStateDidChange:) name:MPMoviePlayerPlaybackStateDidChangeNotification object:videoPlayer];
但它在iPad 5模拟器上不起作用。我得到一个没有电影和播放控件的黑框。
我阅读了有关MPMoviePlayerController的Apple更新日志,但我没有发现任何有关此问题的信息。你能救我吗?
答案 0 :(得分:4)
我用这种方式解决了问题:在我的头文件中我写道:
MPMoviePlayerController *moviePlayer;
使用此属性:
@property(nonatomic, strong) MPMoviePlayerController *moviePlayer;
并在我初始化moviePlayer的方法中:
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:movieUrl];
self.moviePlayer = player;
似乎将玩家分配给某个属性会“保存”玩家。但不要问我为什么......
答案 1 :(得分:2)
您没有提到您尝试播放的URL类型,但是,如果它是HTTP Live Streaming资源(.m3u8文件),那么请注意iOS 5.0似乎已经收紧了验证内容的问题。 m3u8索引文件。
具体来说,我发现了:
任何单个细分都不能超过#EXT-X-TARGETDURATION
值的两倍;
#EXTINF
值(段长度,以秒为单位)现在只能是一个整数值。
如果其中一个是您的问题,在iOS 5.0模拟器下运行您的应用程序应该在调试器控制台中显示警告。
答案 2 :(得分:1)
对于iOS5上的HLS,TARGETDURATION值实际上不是目标持续时间,但需要是最大持续时间。所以它应该设置为文件中最大的段。