我正在尝试使用MPMoviePlayerController播放视频。在某些iPad上,视频播放,在其他iPad上则没有。
以下是代码:
NSURL *url = [NSURL fileURLWithPath:[self videoPath]];
self.moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:url];
self.moviePlayerController.view.frame = self.view.bounds;
self.moviePlayerController.repeatMode = MPMovieRepeatModeOne;
self.moviePlayerController.controlStyle = MPMovieControlStyleNone;
[self.moviePlayerController prepareToPlay];
... add to subview, play ...
MPMoviePlayerController列出了以下压缩限制:
H.264 Baseline Profile Level 3.0视频,最高640 x 480,30 fps。 (基线配置文件不支持B帧。)
MPEG-4第2部分视频(简单配置文件)
最初,我们使用更高分辨率的H.264,视频与我们的测试人员合作。不幸的是,我无法在我的iPad(第4代)上播放视频。我们保留了现有的分辨率并尝试了MPEG-4 Part 2视频,但视频再次无效。我们可以让视频可靠地工作的唯一方法是将分辨率大幅降低到480 x 640.结果看起来很糟糕。
我添加了通知以监控负载状态,对于无效的视频,模式将从MPMovieLoadStateUnknown
转到MPMovieLoadStatePlayable
返回MPMovieLoadStateUnknown
。效果正常的视频会从MPMovieLoadStateUnknown
转到MPMovieLoadStatePlayable
到MPMovieLoadStatePlayable|MPMovieLoadStatePlaythroughOK
。
我检查了errorLogs和accessLogs,它们都是空的。
为了让更高分辨率的视频在iPad上运行,我可能会考虑接下来要检查什么?
答案 0 :(得分:0)
好的,Apple的MPMoviePlayerController文档有点过时了。我提到了每个iPad的技术规格,它揭示了问题的根源:
支持视频格式:H.264视频高达1080p,每帧30帧 第二,高配置4.1级,AAC-LC音频高达160 Kbps, 48kHz,.m4v,.mp4和.mov文件格式的立体声音频; MPEG-4视频 高达2.5 Mbps,640 x 480像素,每秒30帧,简单 配置AAC-LC音频,每通道高达160 Kbps,48kHz,立体声 .m4v,.mp4和.mov文件格式的音频; Motion JPEG(M-JPEG)最高可达 35 Mbps,1280 x 720像素,每秒30帧,ulaw音频,PCM .avi文件格式的立体声音频
我使用的视频分辨率高于1080p,使用H.264压缩,而MPEG-4高于支持的分辨率。一旦我们降低了分辨率,一切都很完美。