我想知道是否有一些方法可以播放带有Retina resolutoion(2048x1536)的iPad视频。 我正在开发一个可以用MPMoviePlayerController全屏播放视频的应用程序,但它无法播放iPad视网膜分辨率的视频。 来自文档:
支持的格式此类播放支持的任何电影或音频文件 在iOS中。这包括流内容和固定长度文件。 对于电影文件,这通常意味着扩展名为.mov的文件, .mp4,.mpv和.3gp并使用以下压缩之一 标准:
H.264 Baseline Profile Level 3.0视频,最高640 x 480,30 fps。 (基线配置文件不支持B帧。)MPEG-4第2部分视频 (简单配置文件)如果您使用此类播放音频文件,它 在播放音频时显示带有QuickTime徽标的白色屏幕。 对于音频文件,此类支持高达48 kHz的AAC-LC音频,和 MP3(MPEG-1 Audio Layer 3),最高48 kHz,立体声音频。
这不是真的!我可以在iPhone上播放H.264视频(960x640),在ipad上播放1024x768视频......
所以: 如何使用iPad视网膜分辨率播放视频?可能吗? 还有其他方法可以在没有MPMoviePlayerController的情况下在iOS应用上播放视频吗?
答案 0 :(得分:2)
根据我的测试,可以使用H264编码在视网膜iPad上播放2048x1536的文件。诀窍是Handbrake(或FFMPEG)使用those settings生成文件。在此页面上,您将找到可用于测试此分辨率播放的some 1536p video files。
顺便说一下,我在处理本地视频时建议的一件好事就是只嵌入半视网膜"分辨率视频。 半视网膜,我的意思是1536x1152 。这提供了比非视网膜分辨率更多的信息,因此视频在视网膜iPad上更清晰一些。它足够好,小到足以在iPhone 3GS之前的任何iOS设备上播放。所以您只需要为所有设备添加一个视频。
答案 1 :(得分:1)
iPad视网膜能够显示1080p视频内容。此格式与各种分辨率兼容,但最常定义为1920 x 1080.这也是使用内置摄像头拍摄的视频大小,因此显然它可以播放并且比文档状态更大。可接受的尺寸。
我能够使用以下代码验证这一点。创建基本单视图项目并将视频文件添加到支持文件组中。
ViewController.h
#import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>
@interface CDTViewController : UIViewController{
MPMoviePlayerController *moviePlayer;
}
-(IBAction) playMovie;
@end
ViewController.m
@implementation CDTViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
-(void)playMovie {
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"IMG_3803" ofType:@"MOV"]];
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
if ([moviePlayer respondsToSelector:@selector(loadState)]) {
[moviePlayer setControlStyle:MPMovieControlStyleEmbedded];
[moviePlayer setFullscreen:NO];
[moviePlayer prepareToPlay];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerLoadStateDidChange:) name:MPMoviePlayerLoadStateDidChangeNotification object:nil];
}
}
- (void)moviePlayerLoadStateDidChange:(NSNotification *)notification {
if ([moviePlayer loadState] == MPMovieLoadStateStalled) {
//handle stall
} else if([moviePlayer loadState] != MPMovieLoadStateUnknown) {
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerLoadStateDidChangeNotification object:nil];
[[moviePlayer view] setFrame:self.view.bounds];
[[self view] addSubview:[moviePlayer view]];
[moviePlayer play];
}
}
@end
不要忘记将MediaPlayer.framework添加到您的项目中。这个例子假设xib文件中有一个播放按钮,它有一个附加到playMovie IBAction的touchUpInside事件。