swift - 将缓存的远程音频文件加载到 iOS 上的 AKPlayer,而不是使用本地文件

标签 swift audio-streaming audiokit

到目前为止,我一直在使用 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/

相关文章:

ubuntu - 创建一个虚拟麦克风 Ubuntu 16.04 并将音频从 RTSP IP 摄像机流式传输到其中

audio - 使用 FFMPEG 填补原始音频 UDP 流的空白

ios - AudioKit:AKPlayer 根本不加载 AKAudioFile

ios - 一旦录音机使用 AudioKit 在 Swift 中完成录音,如何实现监听器或 while(true) 以停止滚动波形图

midi - 通过虚拟输出使用 AKSequencer 发送 midi

swift - 如何使用 IGListKit 滚动到部分的底部

ios - 在 CollectionView 中关闭已使用的单元格并打开未使用的单元格

ios - 如何自定义相机 View 并捕获叠加中的部分?

ios - CameraRoll 方形显示和圆形 mask - UIImagePickerController

c++ - 来自使用 ffmpeg 的文件的音频流