ios - 在 AVAudioEngine 中从网络流式传输数据,这可能吗?

标签 ios objective-c macos swift avaudioengine

我有一个应用程序,我在其中使用 AVAudioEngine 通过 AVAudioPlayerNodesAVAudioFiles 播放本地文件系统中的文件。这工作得很好。

现在我想让我的设置也支持从 Internet 上的服务器流式传输 MP3 文件。

到目前为止我尝试了什么

我希望我可以从指向网络地址的 NSURL 对象创建某种缓冲区,然后我可以将其与我的 AVAudioPlayerNode 一起使用。

我搜索了 Stack Overflowinternet一般来说,但还没有找到任何关于如何实现这一点的好技巧。

我知道 AVAudioEngine 阵容包括:

  • AVAudioPlayerNode ,它可以播放来自 AVAudioFileAVAudioBuffer 的音频。我今天已经将 AVAudioFile 用于我的“本地文件设置”。
  • AVAudioFile , 用于本地文件。 “AVAudioFile”是使用“NSURL”创建的,因此我尝试使用指向服务器上 MP3 文件的 URL,就像在 Playground 中一样:

    var fileError: NSError? = nil
    let file = AVAudioFile(forReading: someURL, error: &fileError)
    if fileError != nil {
        fileError
    }
    

这个错误会奖励我:

Error Domain=com.apple.coreaudio.avfaudio Code=2003334207 "The operation couldn’t be completed. (com.apple.coreaudio.avfaudio error 2003334207.)" UserInfo=0x7fbfab424480 {failed call=ExtAudioFileOpenURL((CFURLRef)fileURL, &_extAudioFile)}
  • AVAudioPCMBuffer ,这是我希望使用的类,但我找不到任何方法来用数据实例化它。

我的问题(只是为了说清楚:-))

有没有聪明人知道如何使用 AVAudioEngine 从 Internet 上的服务器流式传输 MP3 文件?

或者我应该放弃并为此使用 AVPlayer 吗?

期待您的来信。

最佳答案

Apple 的文档没有具体说明它是否可以与在线托管的 mp3 一起使用,但是当我尝试使用 mp3 url 初始化 AVAudioFile 时,它会立即崩溃并出现致命异常。我认为这回答了你的问题。

关于ios - 在 AVAudioEngine 中从网络流式传输数据,这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30862664/

相关文章:

iOS:以编程方式更改选项卡 - Storyboard

iphone - 什么是强属性属性

python - 从 PDF 中搜索文本的脚本

ios - 如何添加联系人自定义应用程序帐户,如下图所示

ios - 使用绝对设备URI时Phonegap 2.2音频错误

ios - 更改 tableView 单元格内的 UILabel 框架高度

ios - GCD 异步串行队列 - 可以限制队列大小吗?

java - 最小化停靠时设置类似mac的图标

macos - 在 VPN 连接 Mac OS X 中添加路由

ios - 可以限制 iOS 应用程序发布到的国家/地区吗?