升级到iOS 5后,MPMoviePlayerController不起作用

时间:2011-10-17 15:56:18

标签: mpmovieplayercontroller ios5

此代码在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更新日志,但我没有发现任何有关此问题的信息。你能救我吗?

3 个答案:

答案 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索引文件。

具体来说,我发现了:

  1. 任何单个细分都不能超过#EXT-X-TARGETDURATION值的两倍;

  2. #EXTINF值(段长度,以秒为单位)现在只能是一个整数值。

  3. 如果其中一个是您的问题,在iOS 5.0模拟器下运行您的应用程序应该在调试器控制台中显示警告。

答案 2 :(得分:1)

对于iOS5上的HLS,TARGETDURATION值实际上不是目标持续时间,但需要是最大持续时间。所以它应该设置为文件中最大的段。