Невозможно воспроизвести видеофайл 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"
Любая помощь будет отличной!
7 ответов
Это означает, что ваш код не может найти ваш файл introvideo.mp4. Убедитесь, что вы успешно добавили этот файл в свой пакет. Вы можете проверить в настройках вашего проекта: Copy Bundle Resource.
Ваш код неверен. Пожалуйста, измените в соответствии со следующим. Все еще копируйте свое видео в ресурсы вашего пакета.
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");
Xcode 9
Вот обновленное изображение.
Перейдите в " Фазы сборки"> "Копировать ресурсы комплекта" и посмотрите, есть ли там ваш файл. Если это не так, вы можете добавить его, нажав кнопку "+".
Вам необходимо проверить, доступно ли это видео в наборе ресурсов вашего приложения.
Как вы упомянулиyou getting this error message: * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[NSURL initFileURLWithPath:]: nil string parameter
,
Это просто указывает на то, что проблема в resourcePath, означает, что там нет такого файла в Resource Bundle. pathForResource
возвращается nil
дорожка.
Вам нужно снова поместить этот видеофайл и убедиться, что этот файл существует в In Resource Bundle.
Тогда вы должны идти вперед с кодом как 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: возвращает ноль. Проверь это
- этот файл действительно добавляется на этапе сборки "копирование ресурсов";
- Вы не ошиблись в названии файла - пути на устройстве чувствительны к регистру.
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];
Я поместил в проект целый каталог "Звуки" и добавил его в раздел "Копирование ресурсов комплекта". Он работал нормально, но потом начал падать.
Исправление заключалось в добавлении имени каталога к именам файлов. Например, это не сработало:
SKAction.playSoundFileNamed("crash.caf", waitForCompletion: false)
... но это сработало:
SKAction.playSoundFileNamed("Sounds/crash.caf", waitForCompletion: false)