Невозможно воспроизвести видеофайл MP4 из mainBundle

Итак, я пытаюсь воспроизвести простой видеоролик с интро-анимацией, который я перетащил в свой проект в 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

Любая помощь будет замечательной!

Ответ 1

Это означает, что ваш код не может найти ваш файл introvideo.mp4. Убедитесь, что вы успешно добавили этот файл в свой пакет. Вы можете проверить свой проект: Копировать ресурс Bundle. enter image description here

Ответ 2

Неверный код. Измените соответственно следующее. Все еще копируйте видео в свои ресурсы пакета.

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");

Ответ 3

Кажется, что pathForResource: ofType: возвращает nil. Убедитесь, что

  • этот файл действительно добавлен в фазу сборки "копии ресурсов";
  • Вы не ошиблись в имени файла - пути на устройстве чувствительны к регистру.

Ответ 4

Вам нужно проверить, доступно ли это видео в комплекте приложений.

Как вы упомянули you getting this error message: * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[NSURL initFileURLWithPath:]: nil string parameter.

Он просто указывает, что проблема в resourcePath, означает, что такого файла нет в Resource Bundle.that Почему этот pathForResource возвращает nil путь.

Вам нужно снова поставить этот видеофайл и убедиться, что файл существует в папке "Ресурсы".

Затем вам следует перейти AHead с кодом как 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];

Я надеюсь, что это может быть для вас полноценным.

Спасибо

Ответ 5

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];

Ответ 6

Я поместил весь проект "Звуки" в проект и добавил его в раздел "Скопировать ресурсы пакета". Он работал нормально, но потом он начал рушиться.

Исправление было связано с добавлением имени каталога к именам файлов. Например, эта не работала:

SKAction.playSoundFileNamed("crash.caf", waitForCompletion: false)

... но этот сделал:

SKAction.playSoundFileNamed("Sounds/crash.caf", waitForCompletion: false)

Ответ 7

Xcode 9

Вот обновленное изображение.

Перейдите в раздел Сборка фаз > Копировать ресурсы пакета и посмотрите, есть ли у вас файл. Если вы не можете добавить его, нажав кнопку "+".

введите описание изображения здесь