无法从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。 检查一下
- 这个文件的确join了“复制资源”的构build阶段;
- 你没有错误的文件的名称 – 设备上的path是区分大小写的。
您需要检查您的应用程序资源包中是否有可用的video。
正如你提到you getting this error message: * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[NSURL initFileURLWithPath:]: nil string parameter
。
它只是表明问题在resourcePath中,意味着在Resource Bundle中没有这样的文件存在。这就是为什么pathForResource
返回nil
path。
您需要再次放置该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来添加它。