有没有办法在不指定文件类型的情况下设置AVPlayer?
AVPlayer兼容播放mov、wav等多格式本地文件解决方案
问题根因
你当前硬编码文件扩展名的写法,限制了AVAsset只能识别对应后缀的资源,换其他格式的文件时URL路径错误、资源类型不匹配,自然无法播放。
修复步骤
- 移除硬编码扩展名的相关代码,不要在拼接路径时强制写死
mov或者wav后缀 - 读取文件时直接使用包含完整后缀的文件名初始化URL,示例代码如下:
// 此处的fileName为你从列表数据源拿到的、包含完整后缀的文件名,比如@"test.mov"或者@"audio.wav" NSString *fullPath = [[NSBundle mainBundle] pathForResource:fileName ofType:nil]; // 如果是沙盒路径,直接拼接沙盒目录+完整文件名即可 NSURL *mediaURL = [NSURL fileURLWithPath:fullPath]; AVPlayerItem *playItem = [AVPlayerItem playerItemWithURL:mediaURL]; AVPlayer *player = [[AVPlayer alloc] initWithPlayerItem:playItem];
其中pathForResource的ofType参数传nil时,系统会自动匹配所有后缀的对应文件,不需要单独指定格式。
- 如果你的列表数据源只存了文件名前缀没有存后缀,可以在读取本地文件目录时,提前把所有文件的完整名称、后缀都存到数据源里,供点击时直接调用。
相关代码截图


内容的提问来源于stack exchange,提问作者user16882472
相关产品推荐
相关产品推荐

