XCodeでプロジェクトにドラッグした簡単なイントロアニメーションビデオファイルを再生しようとしているため、mainBundleから再生できるはずです。
このコードで:
NSURL *urlString = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"introvideo" ofType:@"mp4"]];
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:urlString];
[player play];
次のエラーメッセージが表示されます:*キャッチされない例外 'NSInvalidArgumentException'が原因でアプリを終了しています、理由: '*-[NSURL initFileURLWithPath:]:nil string parameter'
どんな助けでも素晴らしいです!
これは、コードがintrovideo.mp4ファイルを見つけられないことを意味します。そのファイルをバンドルに正常に追加したことを確認してください。プロジェクトの設定でバンドルリソースのコピーを確認できます。
コードが正しくありません。下記に合わせて変更してください。それでも、ビデオをバンドルリソースにコピーします。
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:@"MacBook Pro with Retina Display" ofType:@"m4v"]];
MPMoviePlayerViewController *playercontroller = [[MPMoviePlayerViewController alloc]
initWithContentURL:url];
[self presentMoviePlayerViewControllerAnimated:playercontroller];
playercontroller.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
[playercontroller.moviePlayer play];
[playercontroller release];
playercontroller = nil;
NSLog(@"Video is Playing");
そのビデオがアプリケーションのリソースバンドルで利用可能かどうかを確認する必要があります。
あなたが述べたようにyou getting this error message: * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[NSURL initFileURLWithPath:]: nil string parameter
。
それは単に問題がresourcePathにあることを示し、リソースバンドルにそのようなファイルが存在しないことを意味します。そのため、pathForResource
はnil
パスを返します。
そのビデオファイルを再度配置し、そのファイルがリソースバンドルに存在することを確認する必要があります。
次に、Rehan
のコードを使用して先に進む必要があります。
NSURL *url = [NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"video" ofType:@"mov" inDirectory:@""]];
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:url];
[[player view] setFrame:[self.view bounds]]; // Frame must match parent view
[self.view addSubview:[player view]];
[player play];
[player release];
それはあなたにとって十分な価値があると思います。
ありがとう
PathForResource:ofType:はnilを返すようです。それを確認します
NSURL *url = [NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"video" ofType:@"mov" inDirectory:@""]];
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:url];
[[player view] setFrame:[self.view bounds]]; // Frame must match parent view
[self.view addSubview:[player view]];
[player play];
[player release];
「Sounds」ディレクトリ全体をプロジェクトに配置し、「バンドルリソースのコピー」セクションに追加しました。正常に動作していましたが、その後クラッシュし始めました。
修正は、ファイル名の前にディレクトリ名を付加することでした。たとえば、これはされませんでした機能します:
SKAction.playSoundFileNamed("crash.caf", waitForCompletion: false)
...しかし、これはdid機能です:
SKAction.playSoundFileNamed("Sounds/crash.caf", waitForCompletion: false)