簡體   English   中英

如何使用AudioKit保存音頻文件?

[英]How to save audio file with AudioKit?

我有音頻文件。 我對它做了一些影響

let pitchshifter = AKPitchShifter(self.audioPlayer)
pitchshifter.shift = 10
AudioKit.output = pitchshifter

如果我在應用程序中播放它,它可以工作,但我想將其保存為新文件,以便稍后將其用作avasset。 如何實施?

我嘗試使用AKNodeRecorder,但這會產生空音軌:

let url = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("recorded")
let format = AVAudioFormat(commonFormat: .pcmFormatFloat64, sampleRate: 44100, channels: 2, interleaved: false)!
let tape = try! AKAudioFile(forWriting: url, settings: format.settings)
let mixer = AKMixer(self.audioPlayer!, pitchshifter)
AudioKit.output = mixer
self.recorder = try! AKNodeRecorder(node: mixer, file: tape)

try? AudioKit.start()
self.audioPlayer?.play()
self.audioPlayer?.completionHandler = {
    self.recorder?.stop()
    self.selectedAudioURL = tape.url
}

我也嘗試了renderToFile方法 - 它也沒有工作,我得到了這個錯誤

let url = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("recorded.m4a")
let format = AVAudioFormat(commonFormat: .pcmFormatFloat64, sampleRate: 44100, channels: 2, interleaved: false)!
let tape = try! AKAudioFile(forWriting: url, settings: format.settings)
try! AudioKit.renderToFile(tape, seconds: Double(CMTimeGetSeconds(self.selectedAudioAsset!.duration)))

這就是我將初始文件添加到AudioKit的方法:

let audioFile = try AKAudioFile(forReading: audioURL, commonFormat: .pcmFormatFloat32, interleaved: true)
let player = AKPlayer(audioFile: audioFile)
self.audioFile = audioFile
self.audioPlayer = player
player.startTime = self.startTime
AKSettings.defaultToSpeaker = true

在此先感謝您的回答!

根據我的發現,你必須使用預渲染器“播放”你想要錄制的內容:

try AudioKit.renderToFile(outputFileForWriting, duration: sequencerTotalSeconds, prerender: {
    self.sequencer.play()
})

但是,對我來說。渲染單軌道序列會產生竇音。 : - /

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM