web-dev-qa-db-ja.com

iOSはMPMoviePlayerControllerでビデオを再生します

私はこのコードを手に入れました:

theMoviPlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:@"/Resources/disc.mp4"]];
    theMoviPlayer.controlStyle = MPMovieControlStyleFullscreen;
    theMoviPlayer.view.transform = CGAffineTransformConcat(theMoviPlayer.view.transform, CGAffineTransformMakeRotation(M_PI_2));
    UIWindow *backgroundWindow = [[UIApplication sharedApplication] keyWindow];
    [theMoviPlayer.view setFrame:backgroundWindow.frame];
    [backgroundWindow addSubview:theMoviPlayer.view];
    [theMoviPlayer play];

しかし、私は本当に私のプロジェクトにビデオを追加する方法を知りません。ビデオファイルをどのフォルダに置く必要がありますか!?それとも、プロジェクトに追加するために何か他のことをする必要がありますか?

編集:

Xcodeではこのように見えますが、正しいですか?今、再生エラーが発生するからです。以前、私はこのビデオを再生するためにURLを使用し、これは非常にうまく機能しましたが、このファイルではローカルではありません:(

enter image description here

7
krackmoe

バンドルパスがジャックされているように見えます。以下が機能するはずです。

NSBundle *bundle = [NSBundle mainBundle];
NSString *moviePath = [bundle pathForResource:@"disc" ofType:@"mp4"];
NSURL *movieURL = [[NSURL fileURLWithPath:moviePath] retain];

theMoviPlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
theMoviPlayer.controlStyle = MPMovieControlStyleFullscreen;
theMoviPlayer.view.transform = CGAffineTransformConcat(theMoviPlayer.view.transform, CGAffineTransformMakeRotation(M_PI_2));
UIWindow *backgroundWindow = [[UIApplication sharedApplication] keyWindow];
[theMoviPlayer.view setFrame:backgroundWindow.frame];
[backgroundWindow addSubview:theMoviPlayer.view];
[theMoviPlayer play];
13
Apollo SOFTWARE

MediaPlayerフレームワークを追加する

ファイルにインポートします

#import <MediaPlayer/MediaPlayer.h>

MPMoviePlayerControllerのオブジェクトを作成します

MPMoviePlayerController * moviePlayer;

ビデオを再生したい場所にこのコードを書いてください

NSString *filepath   =   [[NSBundle mainBundle] pathForResource:@"spacetest.mp4" ofType:nil];
NSURL    *fileURL    =   [NSURL fileURLWithPath:filepath];
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];
[self.view addSubview:moviePlayer.view];
moviePlayer.fullscreen = YES;
[moviePlayer play];
8
Mohit

上で約束したようにHTML5を使用する:

    NSString *videoTitle = @"disc.mp4";
    NSURL *baseURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
    NSString *playPath = [NSString stringWithFormat:@"<center><video  width=\"640\" height=\"480\" controls><source src=\"%@\" media=\"all and (max-width:1024px)\"></video></center>",videoTitle];


    [webView loadHTMLString:playPath baseURL:baseURL];

これは640x480で再生されますが、HTML5ビデオタグに精通している場合は、かなり大幅にカスタマイズできます。

1
Apollo SOFTWARE

UIWebViewではなくMPMoviePlayerControllerを使用しているため、mp4またはファイルをリソースに配置すると、XCode/iOSがそれを検出します。ファイルが存在するディレクトリ/グループが青色ではなく黄色であることを確認してください。相対パスにしたくありません。

リソースをプロジェクトにドラッグするだけです。アイテムをコピー先にコピーするが選択され、フォルダの最初のオプションが選択され、そして最も重要なのは、ターゲットに追加することです!

以下のコードを試してください。

NSBundle *bundle = [NSBundle mainBundle];
NSString *moviePath = [bundle pathForResource:@"disc" ofType:@"mp4"];
NSURL *movieURL = [[NSURL fileURLWithPath:moviePath] retain];

theMoviPlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
theMoviPlayer.controlStyle = MPMovieControlStyleFullscreen;
theMoviPlayer.view.transform = CGAffineTransformConcat(theMoviPlayer.view.transform, CGAffineTransformMakeRotation(M_PI_2));
UIWindow *backgroundWindow = [[UIApplication sharedApplication] keyWindow];
[theMoviPlayer.view setFrame:backgroundWindow.frame];
[backgroundWindow addSubview:theMoviPlayer.view];
[theMoviPlayer play];
0
Apollo SOFTWARE