如何使视频资源符合Retina显示屏要求?

4
我有一个应用程序,在播放2秒钟的电影时加载。目前该应用程序已经上架,除了这个视频之外,所有静态内容都符合视网膜显示标准。我为视网膜显示器准备了一段960x640像素的mp4 h.264编码视频,它在iPhone(是的,高分辨率,不是480x320)和iPhone4模拟器中运行良好,但在运行iOS4的iPod Touch第三代上似乎无法播放。我还没有能够在实际的视网膜显示器上进行测试。

直到现在我才想到,也许MPMoviePlayerController可能不支持高于480x320的分辨率,但文档确实如此说明。

http://developer.apple.com/library/ios/#documentation/MediaPlayer/Reference/MPMoviePlayerController_Class/MPMoviePlayerController/MPMoviePlayerController.html

我知道这最有可能听起来像另一个@2x的解决方案,但那似乎也不起作用。

有什么建议可以让这个高分辨率视频在两个屏幕上播放?如果需要,我可以发布代码。


参考解决方案如下:

MPMoviePlayerController *movieController;

if ([[UIScreen mainScreen] scale] == 2.0) {
  movieController = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource:@"highRes" ofType:@"mp4"]]];
} else {
  movieController = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"lowRes" ofType:@"m4v"]]];
}
1个回答

2
我建议在这里使用代码检查来为您的媒体播放器提供正确的视频文件。

回顾这个问题,我想我没有很好地指明它。我遇到的问题是高分辨率视频不能播放,但是我已经接受了除非你有Retina显示屏,否则高分辨率视频不会播放的事实。在模拟器上播放的事实很可能像许多其他事情一样是偶然的,因为计算机支持播放它,所以它就播放了。我将使用类似于if(scale == 2)videoFile = high-res else videoFile = low-res的代码检查。 - TahoeWolverine
旧设备的硬件存在上限,每个设备略有不同。结果就是如果超过这些限制,视频将无法播放。 - MoDJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接