簡體   English   中英

AudioKit AKNodeRecorder 創建空的音頻文件

[英]AudioKit AKNodeRecorder create empty audio file

我正在為 iOS 開發一個應用程序,我需要一些音頻處理方法,所以我使用了很棒的 AudioKit。 但是,我在嘗試將效果錄制到音頻文件中時使用 AKNodeRecorder 失敗。

我曾嘗試使用 AudioKitPlayground(4.5.3) 來測試 AKNodeRecorder,但在錄制了“鍵盤”產生的聲音后得到了一個空的音頻文件。

所以我通過 Xcode(10.1) 為 iOS 創建了一個項目,並添加了一些像這樣的 Objective-C 代碼:

........

NSError *error = nil;
AudioFormatID formatId = kAudioFormatLinearPCM;
NSDictionary *dict = @{
                       @"AVFormatIDKey" : @(formatId),
                       @"AVSampleRateKey" : @(44100),
                       @"AVNumberOfChannelsKey" : @(2),
                       };
AKAudioFile *audioFile = [[AKAudioFile alloc] initForWriting:soundFileURL settings:dict error:&error];
if (error) {
    NSLog(@"AKAudioFile init error: %@", error);
}
AKNodeRecorder *akNodeRecorder = [[AKNodeRecorder alloc] initWithNode:self.akMixer file:audioFile error:&error];
if (error) {
    NSLog(@"AKNodeRecorder init error: %@", error);
}
[akNodeRecorder recordAndReturnError:&error];
if (error) {
    NSLog(@"recording error: %@", error);
}
[self.akAudioPlayer playFrom:0.0];
if (self.isChooseBackgroundMusic) {               
    [self.musicPlayer playFrom:0.0];
}
[akNodeRecorder stop];

........

而這里的 self.akMixer 是這樣的:

self.akMixer = [[AKMixer alloc] init:@[self.akAudioPlayer, self.musicPlayer]];

但是,我也得到了空文件。

我的代碼有問題還是我誤解了 AKNodeRecorder? 有什么幫助嗎? 非常感謝!

我在 swift 中遇到了同樣的問題,我能夠通過將所有與音頻相關的變量(如混音器和播放器)聲明為全局變量來解決這個問題。 您可以在下面的代碼中看到。 希望這件事也能在 Objective C 中工作。

class SongRecordingVC: UIViewController {

    var micMixer : AKMixer!
    var micBooster: AKBooster!
    var karaokePlayer : AKPlayer!
    var karaokeMixer: AKMixer!
    var recordingMixer: AKMixer!
    var recordingDummyMixer: AKMixer!
    var outputMixer: AKMixer!
    
    var songPlayer: AVAudioPlayer?

暫無
暫無

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

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