6

iPad で Retina 解像度 (2048x1536) の動画を再生する方法があれば教えてください。MPMoviePlayerController を使用してビデオをフルスクリーンで再生できるアプリを開発していますが、iPad の網膜解像度でビデオを再生することはできません。ドキュメントから:

サポートされている形式 このクラスは、iOS でサポートされている任意のムービーまたはオーディオ ファイルを再生します。これには、ストリーミング コンテンツと固定長ファイルの両方が含まれます。ムービー ファイルの場合、これは通常、拡張子が .mov、.mp4、.mpv、および .3gp で、次の圧縮規格のいずれかを使用するファイルを意味します。

H.264 ベースライン プロファイル レベル 3.0 ビデオ、30 fps で最大 640 x 480。(ベースライン プロファイルは B フレームをサポートしません。) MPEG-4 パート 2 ビデオ (単純なプロファイル) このクラスを使用してオーディオ ファイルを再生すると、オーディオの再生中に QuickTime ロゴ付きの白い画面が表示されます。オーディオ ファイルの場合、このクラスは最大 48 kHz の AAC-LC オーディオ、および最大 48 kHz の MP3 (MPEG-1 Audio Layer 3) ステレオ オーディオをサポートします。

それは真実ではありません!!! iPhoneでH.264ビデオ(960x640)、iPadで1024x768ビデオを再生できます...

では、どうすれば iPad の Retina 解像度でビデオを再生できますか? 出来ますか?MPMoviePlayerController を使用せずに iOS アプリでビデオを再生する方法はありますか?

4

2 に答える 2

1

iPad Retina は、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 を追加することを忘れないでください。この例では、playMovie IBAction にアタッチされた touchUpInside イベントを持つ xib ファイルの再生ボタンを想定しています。

于 2013-01-19T08:51:52.733 に答える