尝试播放音频时找不到文件错误(Obj-C)

Posted

技术标签:

【中文标题】尝试播放音频时找不到文件错误(Obj-C)【英文标题】:File not found error in attempt to play audio (Obj-C) 【发布时间】:2012-04-27 17:09:44 【问题描述】:

我是新手,所以为了简单起见,我正在尝试将声音添加到我的 main.m 中

据我所知,下面的代码应该可以工作,但是当我运行它时,我得到一个“Error Domain=NSOSStatusErrorDomain Code=-43”操作无法完成。 (OSStatus 错误 -43。)“(找不到文件)”

我尝试过使用各种音频文件和格式 - 在 Xcode 中添加到项目中,但无法弄清楚为什么它找不到我的 G1.wav

AVAudioPlayer *audioPlayer;

        NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"/G1.wav"]];

        NSError *error;
        audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
        audioPlayer.numberOfLoops = -1;

        if (audioPlayer == nil)
            NSLog([error description]);
        else
            [audioPlayer play];  

EDIT 删除了 NSBundle 和 mainBundle 引用 - 我的误解

【问题讨论】:

当您查看您的应用程序包时,该文件实际上是否以 What.app/Contents/Resources/G1.wav 结尾?如果不是,这就是您收到“找不到文件”错误的原因,解决方案是找出您在 Xcode 中做错了什么以将文件放入错误的位置。如果是,那么问题就不同了。如果我们知道它是什么,诊断会容易得多。 所以我现在很确定我感到困惑并在 NSBundle 行不工作时添加了它。我现在已将该行替换回 'NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"G1.wav"]];'它不起作用。我没有应用程序包。我所做的只是将 G1.wav 文件拖到我的支持文件中,并假设上面的行是正确的......但遗憾的是找不到文件 通过从命令行移到基于可可的项目来修复它。这意味着我实际上可以参考捆绑包。感谢您的帮助 【参考方案1】:

这样你可能会更好:

NSString *path = [[NSBundle mainBundle] pathForResource:@"G1" ofType:@"wav"];
NSURL *url = [NSURL fileURLWithPath:path];
...

使用pathForResource:ofType:,您不必担心文件在包的层次结构中的位置。 API 调用解决了这个问题。在您的代码中,resourcePath 返回的任何内容显然都不是正确的路径。

您也可以在这里和那里添加一些NSLog() 调用,以查看实际情况。

【讨论】:

除非您需要处理 OS X 10.5 或 ios 3,否则没有充分的理由在结果上调用 pathForResource:ofType: 然后 fileURLWithPath:,您可以直接调用 URLforResource:withExtension:。更重要的是,这实际上并没有解决用户的问题,因为您指定的路径与他的原始代码完全相同,只是方式不同。 @abamert: URLForResource:withExtension: 并不是我回答时首先想到的。这显然是在这里使用的好东西。对于你的第二点,我不同意。 OP 正在通过连接 resourcePath 的结果和文件名来构造路径。 resourcePath 只是包含资源的目录的路径,而不是特定于资源的路径,这是他需要的。 感谢大家的帮助,我通过移动到基于可可的应用程序来修复它,以便我可以参考捆绑包。我认为命令行需要更准确地指向文件。

以上是关于尝试播放音频时找不到文件错误(Obj-C)的主要内容,如果未能解决你的问题,请参考以下文章

搜索文件时 MPMoviePlayer 播放音频但不播放视频

尝试在 Discord.js 中播放音频文件

音频文件不与 mediaController 一起播放?

无法播放网络音频文件

Xcode Swift 7.3 播放音频文件

使用 NAudio 录制和播放音频