我有一个应用程序,其中使用
AVAudioEngine
通过AVAudioPlayerNodes
和AVAudioFiles
从本地文件系统播放文件。这很完美。
现在我想让我的设置也支持从互联网上的服务器流式传输MP3文件。
到目前为止我尝试过的
我希望我可以从指向网络地址的NSURL
对象创建某种缓冲区,然后将其与我的AVAudioPlayerNode
一起使用。
我已经在Stack Overflow和internet上进行了搜索,但没有找到任何关于如何实现此目标的好提示。
我知道AVAudioEngine
系列包括:
- AVAudioPlayerNode, which can play audio from an
AVAudioFile
or aAVAudioBuffer
. I already useAVAudioFile
for my "local file setup" today. AVAudioFile, which is to be used for local files. An 'AVAudioFile' is created with an 'NSURL' so I've tried with an URL that points to a MP3 file on a server like so in a 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
呢?
期待您的回复。