在 AVAudioEngine 中从网络流式传输数据,这可能吗?
Stream data from network in AVAudioEngine, is it possible?
我有一个应用程序,我在其中使用 AVAudioEngine
通过 AVAudioPlayerNodes
和 AVAudioFiles
播放本地文件系统中的文件。这工作得很好。
现在我想让我的设置也支持从 Internet 上的服务器流式传输 MP3 文件。
到目前为止我尝试了什么
我希望我可以从指向网络地址的 NSURL
对象创建某种缓冲区,然后我可以将其用于我的 AVAudioPlayerNode
.
我大体上搜索了 Stack Overflow and the internet,但没有找到关于如何实现这一目标的任何好的提示。
我知道 AVAudioEngine
阵容包括:
- AVAudioPlayerNode,可以播放来自
AVAudioFile
或 AVAudioBuffer
的音频。我今天 "local file setup" 已经使用了 AVAudioFile
。
AVAudioFile,这是要用于本地文件。 'AVAudioFile' 是用 'NSURL' 创建的,所以我尝试使用 URL 指向服务器上的 MP3 文件,就像在 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,这是我希望使用的class,但我找不到任何方法来用数据实例化它。
我的问题(只是为了说清楚:-))
你们当中有聪明人知道如何使用 AVAudioEngine
从 Internet 上的服务器流式传输 MP3 文件吗?
还是我应该放弃并为此使用 AVPlayer
?
期待您的来信。
Apple 的文档没有具体说明它是否可以与在线托管的 mp3 一起使用,但是当我尝试用 mp3 url 初始化 AVAudioFile
时,它立即崩溃并出现致命异常。我认为这回答了你的问题。
我有一个应用程序,我在其中使用 AVAudioEngine
通过 AVAudioPlayerNodes
和 AVAudioFiles
播放本地文件系统中的文件。这工作得很好。
现在我想让我的设置也支持从 Internet 上的服务器流式传输 MP3 文件。
到目前为止我尝试了什么
我希望我可以从指向网络地址的 NSURL
对象创建某种缓冲区,然后我可以将其用于我的 AVAudioPlayerNode
.
我大体上搜索了 Stack Overflow and the internet,但没有找到关于如何实现这一目标的任何好的提示。
我知道 AVAudioEngine
阵容包括:
- AVAudioPlayerNode,可以播放来自
AVAudioFile
或AVAudioBuffer
的音频。我今天 "local file setup" 已经使用了AVAudioFile
。 AVAudioFile,这是要用于本地文件。 'AVAudioFile' 是用 'NSURL' 创建的,所以我尝试使用 URL 指向服务器上的 MP3 文件,就像在 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,这是我希望使用的class,但我找不到任何方法来用数据实例化它。
我的问题(只是为了说清楚:-))
你们当中有聪明人知道如何使用 AVAudioEngine
从 Internet 上的服务器流式传输 MP3 文件吗?
还是我应该放弃并为此使用 AVPlayer
?
期待您的来信。
Apple 的文档没有具体说明它是否可以与在线托管的 mp3 一起使用,但是当我尝试用 mp3 url 初始化 AVAudioFile
时,它立即崩溃并出现致命异常。我认为这回答了你的问题。