gpt4 book ai didi

ios - 如何将音频效果应用于文件并写入文件系统 - iOS

转载 作者:搜寻专家 更新时间:2023-10-31 21:51:43 26 4
gpt4 key购买 nike

我正在构建一个应允许用户将音频过滤器应用于录制音频的应用程序,例如 Reverb、Boost。

我找不到任何关于如何将过滤器应用于文件本身的可行信息来源,因为稍后需要将处理后的文件上传到服务器。

我目前正在使用 AudioKit 进行可视化,我知道它能够进行音频处理,但只能用于播放。请提出任何进一步研究的建议。

最佳答案

AudioKit 有一个不需要 iOS 11 的离线渲染节点。这是一个例子,player.schedule(...) 和 player.start(at.) 位是必需的,因为 AKAudioPlayer 的底层 AVAudioPlayerNode 会阻塞调用如果您使用 player.play() 启动线程等待下一次渲染。

import UIKit
import AudioKit

class ViewController: UIViewController {

var player: AKAudioPlayer?
var reverb = AKReverb()
var boost = AKBooster()
var offlineRender = AKOfflineRenderNode()

override func viewDidLoad() {
super.viewDidLoad()

guard let url = Bundle.main.url(forResource: "theFunkiestFunkingFunk", withExtension: "mp3") else {
return
}
var audioFile: AKAudioFile?
do {
audioFile = try AKAudioFile.init(forReading: url)
player = try AKAudioPlayer.init(file: audioFile!)
} catch {
print(error)
return
}
guard let player = player else {
return
}


player >>> reverb >>> boost >>> offlineRender

AudioKit.output = offlineRender
AudioKit.start()


let docs = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let dstURL = docs.appendingPathComponent("rendered.caf")

offlineRender.internalRenderEnabled = false
player.schedule(from: 0, to: player.duration, avTime: nil)
let sampleTimeZero = AVAudioTime(sampleTime: 0, atRate: AudioKit.format.sampleRate)
player.play(at: sampleTimeZero)
do {
try offlineRender.renderToURL(dstURL, seconds: player.duration)
} catch {
print(error)
return
}
offlineRender.internalRenderEnabled = true

print("Done! Rendered to " + dstURL.path)
}
}

关于ios - 如何将音频效果应用于文件并写入文件系统 - iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45799686/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com