NSBundle 在尝试实例化 AVAudioPlayer 时找到 mp3 文件但没有找到 m4a

Posted

技术标签:

【中文标题】NSBundle 在尝试实例化 AVAudioPlayer 时找到 mp3 文件但没有找到 m4a【英文标题】:NSBundle finds mp3 file but not m4a when trying to instantiate AVAudioPlayer 【发布时间】:2013-07-25 21:19:54 【问题描述】:

我有一个应该播放音频文件的简单应用程序。每当我将 mp3 文件加载到我的 NSURL 时都可以正常工作,并且 AVAudioPlayer 可以播放歌曲。但是,当我更改为 m4a 文件时,NSString 路径返回 nil,就像它无法找到我的文件的路径一样,因此没有形成 NSURL。 m4a 文件当然在项目中。它在代码下方,但我不认为是代码问题。有什么想法吗?谢谢。

NSString *path = [[NSBundle mainBundle] pathForResource:@"end" ofType:@"m4a"];
NSURL *urlFile = [NSURL fileURLWithPath:path];
NSError *error;
soundPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:urlFile error:&error];
if (error)

    NSLog(@"Error in audioPlayer: %@",[error localizedDescription]);
 else 
    soundPlayer.delegate = self;
    [soundPlayer prepareToPlay];
    [soundPlayer play];

【问题讨论】:

您检查文件是否已添加到目标? 【参考方案1】:

检查您的 Target 的构建阶段,如果您的 m4a 文件未列在 Copy Bundle Resources 阶段组下,请添加它,然后清理并再次运行。

【讨论】:

感谢 Yazid 这工作。知道为什么 mp3 进入 Bundle Resources 而 m4a 没有? @user1612579 将文件拖入项目时,会弹出一个窗口,其中包含一些选项。您只需要确保勾选将文件添加到目标的选项。你可能错过了。 嗯,mp3 在你导入的时候已经为你的目标设置了刻度,m4a 没有!!

以上是关于NSBundle 在尝试实例化 AVAudioPlayer 时找到 mp3 文件但没有找到 m4a的主要内容,如果未能解决你的问题,请参考以下文章

给定应用程序的完整路径或 NSBundle 实例,如何获取其图标?

xib文件加载研究

无法在包中加载 NIB:'NSBundle 错误

MonoTouch - 无法在包中加载 NIB:“NSBundle”

无法在 NSBundle 中获取图像路径?

使用 NSBundle 加载我的资源