为何应用程序包中视频文件路径为nil导致播放崩溃?
解决iOS本地视频播放崩溃:NSInvalidArgumentException(nil路径参数)
崩溃原因
报错-[NSURL initFileURLWithPath:]: nil string parameter说明[[NSBundle mainBundle] pathForResource:ofType:]返回了nil,也就是系统找不到你指定的视频文件,导致初始化NSURL时传入无效参数触发崩溃。
解决步骤
核对文件名与代码匹配
确保代码里的文件名@"koi swimming"和扩展名@"m4v"与实际文件完全一致:- iOS文件系统区分大小写,比如
Koi Swimming和koi swimming会被视为不同文件; - 检查文件名是否有多余空格、拼写错误,扩展名是否为小写
m4v(不是M4V或其他格式)。
- iOS文件系统区分大小写,比如
确认文件已加入项目打包列表
- 打开Xcode的
Build Phases选项卡,找到Copy Bundle Resources; - 检查列表中是否包含你的
koi swimming.m4v文件; - 如果不在列表中,点击
+按钮添加该文件,确保编译时会将其打包进App Bundle。
- 打开Xcode的
修复代码中的逻辑问题并增加容错
原代码存在两个问题:一是未先给AVPlayerViewController的player属性赋值就调用播放,二是没有对nil路径做判断。修改后的代码如下:NSString *path = [[NSBundle mainBundle] pathForResource:@"koi swimming" ofType:@"m4v"]; if (path) { NSURL *url = [NSURL fileURLWithPath:path]; AVPlayer *player = [AVPlayer playerWithURL:url]; AVPlayerViewController *controller = [[AVPlayerViewController alloc] init]; controller.player = player; // 先赋值player给控制器 controller.view.frame = self.view.bounds; [self.view addSubview:controller.view]; [player play]; // 直接调用player的play方法 } else { NSLog(@"错误:找不到指定的视频文件"); }验证文件是否被正确打包
运行项目后,在Xcode的Products目录中找到你的.app文件,右键选择Show Package Contents,查看里面是否存在koi swimming.m4v文件。如果不存在,说明文件未被正确添加到项目中。
内容的提问来源于stack exchange,提问作者user1114881
相关产品推荐
相关产品推荐

