首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS NSBundle 无法读取视频文件路径的排查与解决

     編輯:程式設計綜合問答

现象

NSString *path = [[NSBundle mainBundle] pathForResource:@"comp1" ofType:@"mov"];
// 返回 nil,但图片、音频同方法正常

常见原因排查清单

  1. Target Membership 未勾选:在 Xcode 文件检查器右侧 **Target Membership** 栏,确认视频文件对应的 App Target 已勾选。未勾选则不会打包进 Bundle。
  2. 文件名大小写不匹配:真机文件系统**区分大小写**,模拟器不区分。确保 ofType: 与实际扩展名大小写完全一致(如 MOV vs mov)。
  3. 文件实际扩展名隐藏:Finder 中显示 comp1.mov,但实际全名可能为 comp1.mov.mov。在终端 ls -la 核实。
  4. 资源文件夹引用方式错误:若视频放在 **Folder Reference**(蓝色文件夹)而非 **Group**(黄色文件夹),路径层级会包含文件夹名,需用 pathForResource:ofType:inDirectory:。

替代获取路径方式

// 方式一:指定子目录
NSString *path = [[NSBundle mainBundle] pathForResource:@"comp1" ofType:@"mov" inDirectory:@"Videos"];

// 方式二:遍历 Bundle 查找(调试用)
NSArray *paths = [[NSBundle mainBundle] pathsForResourcesOfType:@"mov" inDirectory:nil];
NSLog(@"All mov files: %@", paths);

播放建议

获取到路径后,推荐使用 AVPlayer 播放:

NSURL *url = [NSURL fileURLWithPath:path];
AVPlayer *player = [AVPlayer playerWithURL:url];
AVPlayerLayer *layer = [AVPlayerLayer playerLayerWithPlayer:player];
[layer setFrame:self.view.bounds];
[self.view.layer addSublayer:layer];
[player play];
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved