Xcodeプロジェクトでビデオを再生するために作成したコードは次のとおりです。プロジェクトを実行すると、クラッシュします。私はこの理由を取得します:キャッチされなかった例外のためにアプリを終了します'NSInvalidArgumentException'、理由:' * -[NSURL initFileURLWithPath:]:nil string parameter'
シミュレーターで実行すると機能するチュートリアルを見つけました。私は自分のビデオをプロジェクトに追加し、それに応じてコードを更新しました。私のビデオは、チュートリアルの他のビデオと同じようにm4v形式です。ビデオを使用してアプリを実行しても、クラッシュして同じエラーが発生します。私は自分のビデオを短時間から取り出してiTunesにエクスポートしました。私は何が間違っているのですか?
.hファイル
#import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>
@interface BigBuckBunnyViewController : UIViewController {
}
-(IBAction)playMovie:(id)sender;
@end
.mファイル
#import "BigBuckBunnyViewController.h"
@implementation BigBuckBunnyViewController
-(IBAction)playMovie:(id)sender
{
UIButton *playButton = (UIButton *) sender;
NSString *filepath = [[NSBundle mainBundle] pathForResource:@"ladder rack 1 4"
ofType:@"m4v"];
NSURL *fileURL = [NSURL fileURLWithPath:filepath];
MPMoviePlayerController *moviePlayerController = [[MPMoviePlayerController alloc]
initWithContentURL:fileURL];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlaybackComplete:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayerController];
[moviePlayerController.view setFrame:CGRectMake(playButton.frame.origin.x,
playButton.frame.origin.y,
playButton.frame.size.width,
playButton.frame.size.height)];
[self.view addSubview:moviePlayerController.view];
//moviePlayerController.fullscreen = YES;
//moviePlayerController.scalingMode = MPMovieScalingModeFill;
[moviePlayerController play];
}
- (void)moviePlaybackComplete:(NSNotification *)notification
{
MPMoviePlayerController *moviePlayerController = [notification object];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayerController];
[moviePlayerController.view removeFromSuperview];
[moviePlayerController release];
}
- (void)dealloc {
[super dealloc];
}
@end
さて、htmlページを作成し、ビューのロードセクションでhtmlページを自分の.mファイルにリンクすることができました。UIWebviewを作成し、それをxibビューに追加しました。ビデオをサーバーに配置しました。これはおそらくより良い解決策であり、ロード時間が短くなります。