我正在尝试使用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中的错误吗?
谢谢,
答案 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数据。