AVAudioPlayer错误加载文件

时间:2011-09-03 00:39:23

标签: iphone objective-c ios avaudioplayer

我正在尝试使用AVAudioPlayer播放一个简单的声音,我在控制台中不断收到此错误:

2011-09-02 20:29:07.369 MusicLog[967:10103] Error loading /System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAHALPlugIn.bundle/Contents/MacOS/AppleHDAHALPlugIn:  dlopen(/System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAHALPlugIn.bundle/Contents/MacOS/AppleHDAHALPlugIn, 262): Symbol not found: ___CFObjCIsCollectable
  Referenced from: /System/Library/Frameworks/Security.framework/Versions/A/Security
  Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation
 in /System/Library/Frameworks/Security.framework/Versions/A/Security

这是我的代码,当按下我的按钮时,它应播放声音:

NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"tick" ofType:@"caf"];
NSError *error;

    NSURL *soundURL = [NSURL fileURLWithPath:soundPath];
    AVAudioPlayer *tickPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL error:&error];
[tickPlayer setDelegate:self];
[tickPlayer setNumberOfLoops:0];
[tickPlayer prepareToPlay];
if (tickPlayer == nil)
{
    NSLog(@"%@", [error description]);
}
else
{
    [tickPlayer play];
}

我是否以某种方式将文件放在错误的位置?我只是将文件拖入项目并根据需要选择副本。

编辑:经过更多测试后,我发现在运行IOS 4.2模拟器时,我没有收到此错误,仅在IOS 5模拟器上。我可以假设这是iOS 5中的错误吗?

谢谢,

6 个答案:

答案 0 :(得分:22)

我遇到了同样的问题。它似乎只是iOS5模拟器中的一个问题。我还没有在iOS 5设备上测试过。我一直希望XCode升级会让错误消失,但到目前为止还没有运气。

答案 1 :(得分:2)

我遇到了同样的错误,但是在我将变量保存为类属性之后仍然播放了声音。如果您放在此处的代码写入方法内,请尝试移动此变量。我想声音没有播放,因为在方法超出范围后,audioPlayer实例会丢失。

@implementation SomeAudioController {
    AVAudioPlayer *tickPlayer;
}

答案 2 :(得分:1)

使您的AVAudioPlayer成为具有强大参考的属性。

来源:AVAudioPlayer refuses to play anything, but no error, etc

上面的回答帮助我在我的模拟器中播放.wav文件,但我还没有让它在我的设备上运行。关于缺少编解码器的事情..?

修改

要在设备上播放音频,我还必须将以下行添加到AppDelegate.m的didFinishLaunchingWithOptions:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];

答案 3 :(得分:1)

尝试检查是否已启用“All Exceptions”断点,这将导致调试器在异常处断开。只需禁用此功能并重新构建它即可。

答案 4 :(得分:0)

当我尝试在按钮点击时播放一些mp3文件并编译到iOS5时,我也遇到了同样的错误。当我编译到iOS4时,错误消失但声音仍未出现。没有运行时错误,并且在调试控制台中正确打印了NSLog。你找到了播放mp3文件的方法吗?

答案 5 :(得分:-1)

来自多媒体编程指南:

  

iOS中的首选音频格式适用于未压缩(最高质量)   音频,使用16位,小端,线性PCM音频数据打包在一个   CAF文件。您可以在Mac OS X中将音频文件转换为此格式   使用afconvert命令行工具,如下所示:

     

/usr/bin/afconvert -f caff -d LEI16 {INPUT} {OUTPUT}

     

afconvert   工具可以转换为各种音频数据格式和文件   类型。请参阅afconvert手册页,并在shell中输入afconvert -h   提示,了解更多信息。

     

对于一次播放一个声音时的压缩音频,以及何时播放   不需要与iPod应用程序同时播放音频,请使用   包装在CAF或m4a文件中的AAC格式。

     

当您需要播放多个声音时,可以减少内存使用量   同时,使用IMA4(IMA / ADPCM)压缩。这会减少文件   大小但在解压缩期间需要最小的CPU影响。和。一样   线性PCM数据,包装CAF文件中的IMA4数据。