iOS - 无法播放音频文件

Posted

技术标签:

【中文标题】iOS - 无法播放音频文件【英文标题】:iOS - Failed to play audio file 【发布时间】:2012-03-15 21:52:33 【问题描述】:

我正在尝试在 iPhone 上播放一个 mp3 音频文件,执行以下代码:

    NSURL *audioURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@/%@.mp3", FONYK_FILES_URL, [self.voicenote valueForKeyPath:@"Fonyker.fonykid"], [self.voicenote valueForKeyPath:@"Voicenote.vnid"]]];
    NSData *audioData = [NSData dataWithContentsOfURL:audioURL];
    NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                               NSUserDomainMask, YES) objectAtIndex:0] 
                          stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp3", [self.voicenote valueForKeyPath:@"Voicenote.vnid"]]];
    [audioData writeToFile:filePath atomically:YES];
    NSError *error = nil;
    AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:filePath] error:&error];
    [audioPlayer play];

当它到达 AVAudioPlayer 实例时,它会在调试器中输出:

2012-03-15 17:08:51.531 Fonyk[13004:10703] Error loading /System/Library/Extensions/AudioIPCDriver.kext/Contents/Resources/AudioIPCPlugIn.bundle/Contents/MacOS/AudioIPCPlugIn:  dlopen(/System/Library/Extensions/AudioIPCDriver.kext/Contents/Resources/AudioIPCPlugIn.bundle/Contents/MacOS/AudioIPCPlugIn, 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
2012-03-15 17:08:51.544 Fonyk[13004:10703] Error loading /System/Library/Extensions/AudioIPCDriver.kext/Contents/Resources/AudioIPCPlugIn.bundle/Contents/MacOS/AudioIPCPlugIn:  dlopen(/System/Library/Extensions/AudioIPCDriver.kext/Contents/Resources/AudioIPCPlugIn.bundle/Contents/MacOS/AudioIPCPlugIn, 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

找不到任何相关内容,知道发生了什么吗?

【问题讨论】:

您是否添加了所需的框架?这个 MP3 是有效的 ios 格式吗? 是的,框架已添加。而且我相信 mp3 本身就是一种格式,是否必须有一些特别的东西才能在 iOS 上运行? 一些邪恶的扩展或压缩算法... :) 您是否尝试过使用“audioUrl”播放它(而不是克隆文件)? 是的,然后我了解到你不能这样做,AVAudioPlayer 需要一个以 file:// 开头的 URL 您的问题有可能与此问题重复吗? ***.com/questions/7290418/… 【参考方案1】:

尝试创建 AVURLAsset 并按照AV Foundation Programming Guide 中的描述异步加载它的轨道。在完成块中,您可以创建一个 AVPlayerItem 并将其传递给播放器。

根据AV Foundation Release Notes for iOS 5,从iOS 5 开始,如果曲目尚未加载,播放器应该加载它们。然而,根据我的经验,这行不通。手动加载它们是可行的,这就是我所做的。

【讨论】:

得到了同样的错误,它必须像 Eduardo 所说的那样,这是一个模拟器问题。无论如何,谢谢你,当我能够在设备上运行时,我会回来查看。 我可以在模拟器中播放 mp3 文件。另一个小区别:我使用的是 AVPlayer 而不是 AVAudioPlayer 但我怀疑这是问题所在。祝你好运。 介意在此处发布您使用的代码吗?看看有没有区别。我只是按照指南中的说明对其进行了编码。

以上是关于iOS - 无法播放音频文件的主要内容,如果未能解决你的问题,请参考以下文章

Expo AV 音频无法在 iOS/iPhone 上播放

iOS 9 无法播放下载到设备的音频/视频文件

m4a 音频文件无法在 iOS 9 上播放

iOS 8 swift 无法播放音频文件

ios 如何播放在线的音频文件

使用Samsung录制的音频无法在iOS上播放