我有一个应用程序,我使用AVAudioEngine
来使用AVAudioPlayerNodes
和AVAudioFiles
来播放本地文件系统中的文件。这完全没问题。
现在我想启用我的设置,也支持从互联网上的服务器流式传输MP3文件。
到目前为止我尝试了什么
我希望我可以从指向网络地址的NSURL
个对象创建某种缓冲区,然后我可以将其用于AVAudioPlayerNode
。
我一直在搜索Stack Overflow和internet,但没有找到任何有关如何实现这一目标的好建议。
我知道AVAudioEngine
阵容包括:
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)}
我的问题(只是为了说清楚: - ))
你们中的任何一个聪明人都知道如何使用AVAudioEngine
从互联网服务器上传输MP3文件吗?
或者我应该放弃并使用AVPlayer
吗?
期待您的回音。
答案 0 :(得分:0)
Apple的文档没有说明它是否可以与在线托管的mp3一起使用,但是当我尝试使用mp3网址初始化AVAudioFile
时,它会立即崩溃并发生致命异常。我认为这回答了你的问题。