AudioKit并行渲染多个文件

时间:2018-11-30 14:55:58

标签: swift avaudioplayer audiokit

问题

我正在与AudioKit一起在我的应用程序上编辑样本。我正在改变音调,音量和速度。在所有更改均为模式之后,我将其渲染为单独的文件。所有渲染都发生在主线程上。我需要一种并行处理所有渲染的方法,以提高性能。

上下文

我有以下设置:

private func setPlayer() {

    player = try? AKAudioPlayer(file: AKAudioFile())
    player.completionHandler = {
        NotificationCenter.default.post(name: .AudioSessionPlayerDidEndLoop, object: nil)
    }

    timePitch = AKTimePitch(player)
    offlineRender = AKOfflineRenderNode(timePitch)
    player.looping = shouldLoop

    AKSettings.playbackWhileMuted = true
    AudioKit.output = offlineRender

}

我正在更改timePitch的效果和player的音量。然后,我使用此块将每个样本成功渲染为新的音频文件:

    if let renderFile = try? AKAudioFile(forWriting: url!, settings: settings) {
        if #available(iOS 11, *) {
            try? AudioKit.start()
            try? AudioKit.renderToFile(renderFile, duration: player.duration/timePitch.rate, prerender: {
                self.playForRender()
            })

        } else {
            //oldRender(renderFile, duration: player.duration/timePitch.rate)
        }
    }

效果很好,但是对于我的用例来说有点慢。 15秒内可渲染60个样本。

由于我仅使用一个player,并且AudioKit是一个单例,因此我知道无法在单独的线程中运行每个渲染。

问题

是否可以使用AudioKit并行渲染多个音频文件?建议/可行的方式是为每个样本创建一个player吗?

0 个答案:

没有答案