我有一个应用程序,用于通过使用和AVAudioEngine
播放本地文件系统中的文件。这工作得很好。AVAudioPlayerNodes
AVAudioFiles
现在我想让我的设置也支持从 Internet 上的服务器流式传输 MP3 文件。
到目前为止我尝试过的
NSURL
我希望我可以从指向网络地址的对象创建某种缓冲区,然后我可以将其与我的AVAudioPlayerNode
.
我已经搜索了Stack Overflow和一般的互联网,但没有找到任何关于如何实现这一点的好技巧。
我知道AVAudioEngine
阵容包括:
- AVAudioPlayerNode,它可以播放来自
AVAudioFile
或 的音频AVAudioBuffer
。我今天已经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
互联网上的服务器流式传输 MP3 文件?
还是我应该放弃并AVPlayer
为此使用?
期待您的回音。