iOS - 无法播放音频文件

标签 ios mp3 avfoundation avaudioplayer

我正在尝试在 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

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

最佳答案

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

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

关于iOS - 无法播放音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9728743/

相关文章:

ios - 与 init 一起使用的 Swift 单例(编码器 :)

cocoa-touch - 在屏幕上向后滚动时,UITableViewCell 会被重新选择

ios - 我如何找到 CouchDB 是否已启动并正在运行?

ios - swift中的音频播放器没有获得音量和音高的值(value)

swift - 如何使用 `AVCaptureSessionPreset320x240` ?

ios - 使用重叠按钮对 UIImageView 进行动画处理

jquery - 从 Android WebView 中的链接播放 MP4 或 MP3

java - 用java压缩音乐的 jar ?

ruby-on-rails - ruby 在 rails 上。回形针 mp3 验证失败

ios - 后台应用程序/双击主页按钮时音频崩溃