到目前为止,我一直在使用 AKPlayers
开发一个多音频播放项目,由 AKSequencer
触发,以获得完美的同步、循环和高级信号处理。进展顺利,但现在我需要一些洞察力才能进入下一个级别。
我正在尝试对远程 mp3 文件播放完全相同的功能 - 从远程 URL 地址流式传输 mp3 文件数组。然而,AKPlayer
到目前为止似乎还不支持流媒体功能。
不过,我在这个网站上发现的一种可能性是 Ryan Francesconi 在线程 "How can I get AudioKit to stream an audio file from a remote URL?” 上的回答。 。他的建议如下:
guard let remote = URL(string: "https://www.sample-videos.com/audio/mp3/crowd-cheering.mp3"),
let data = NSData(contentsOf: remote) else {
AKLog("Remote failed to load.")
return
}
let cachedFile = FileManager.default.homeDirectoryForCurrentUser.appendingPathComponent(remote.lastPathComponent)
try? data.write(to: cachedFile)
let player = AKPlayer(url: cachedFile)
那么,在我开始尝试之前,有人(最好是 Francesconi 先生)可以告诉我如何在 iOS 上实现此代码吗?使用这种缓存和加载想法来开发多个音频文件播放项目是否安全(就无缝同步和循环而言)?如果我能更多地了解这一点,将会非常有帮助。非常感激。 <3
最佳答案
就术语而言,这甚至不是缓存,因为缓存被视为临时存储(在 iOS 中,当系统认为它是最好的时,缓存会被删除),而这种方法实际上保存了数据进入文件系统。一般来说,我认为预下载然后使用下载的文件的想法没有太多风险,因为您正在使用文件系统并且速度非常快。
我唯一真正关心的是下载文件占用的空间。当应用程序处于非事件状态时,您可能需要清除临时文件(如果它们是临时文件)以避免内存问题。
要更好地了解文件的存储方式以及最重要的存储位置,请参阅 Apple filesystem docs.
关于swift - 将缓存的远程音频文件加载到 iOS 上的 AKPlayer,而不是使用本地文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52417879/