1

我正在研究一个随机音频文件播放项目。我正在寻找一种从远程服务器下载随机音频文件的方法,但要提前准备一个播放列表以实现无缝循环。我想了解如何在播放期间提前下载随机选择的文件,而不是一次下载所有文件。

当我从本地设备加载时,这很容易:我创建了一个数组AKPlayers,每个数组都加载了不同的音频文件,我通过随机调用函数 (randomWithRepeats) 触发它们。

// Select random audiofile from 1-10, but repeat them 3-4 times.
let rand = RandomWithRepeats(range: 0...9, repeatRange: 3…4)

var players: [AKPlayer] = []

    // This is triggered by AKSequencer's midi note
    func playRandom() {
    do {
        let player = players1[rand.nextValue()]
        player.play()
        debugPrint("player1 \(player.audioFile!.fileName)")
    }
}

但这一次,这似乎很棘手,因为该文件被放置在远程 URL 上,即 google firebase。

到目前为止,我在 上上传了多个音频文件firebase storage,并创建了完全相同的文件firebase database以比较/更新元数据。下载整个音频文件后,我能够随机播放音频文件。它成功了!但我正在寻找一种只提前下载一个或两个文件的方法,因为 1)首先下载所有内容需要太多时间,以及 2)节省用户的数据空间。

理想情况下,我正在寻找一种逐个下载文件的方法,但随机下载文件,因为 AKPlayer 将播放下一个。就像玩俄罗斯方块一样,用户知道接下来会出现什么块,但它仍然是随机的。(可能与某种播放列表有关??)如果我能在这里得到一些建议,将不胜感激。<3

4

0 回答 0