无法从mainBundle播放MP4video文件

所以我试图播放一个简单的介绍animationvideo文件,我已经拖到我的XCode项目,因此应该能够从我的mainBundle播放,对不对?

有了这个代码:

NSURL *urlString = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"introvideo" ofType:@"mp4"]]; MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:urlString]; [player play]; 

我得到这个错误信息: *由于未捕获的exception“NSInvalidArgumentException”,终止应用程序,原因:'* – [NSURL initFileURLWithPath:]:nilstring参数'

任何帮助将是伟大的!

这意味着你的代码找不到你的introvideo.mp4文件。 确保您已成功将该文件添加到您的软件包。 您可以检查您的项目设置:复制包资源。 在这里输入图像说明

你的代码不正确。 请相应地更改以下内容。 仍将您的video复制到您的捆绑资源。

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

看来pathForResource:ofType:返回nil。 检查一下

  1. 这个文件的确join了“复制资源”的构build阶段;
  2. 你没有错误的文件的名称 – 设备上的path是区分大小写的。

您需要检查您的应用程序资源包中是否有可用的video。

正如你提到you getting this error message: * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[NSURL initFileURLWithPath:]: nil string parameter

它只是表明问题在resourcePath中,意味着在Resource Bundle中没有这样的文件存在。这就是为什么pathForResource返回nilpath。

您需要再次放置该video文件,并确保该文件存在于资源包中。

那么你应该去代码为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]; 

我希望它可能值得你充满。

谢谢

 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) 

Xcode 9

这是一个更新的图像。

转到构build阶段>复制包资源 ,看看你的文件是否在那里。 如果不是,您可以通过按“+”button来添加它。

在这里输入图像说明