ios - AudioKit AKNodeRecorder 创建空的音频文件

标签 ios objective-c audiokit

我正在为 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?

关于ios - AudioKit AKNodeRecorder 创建空的音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53361722/

相关文章:

ios - UIBarbuttonItem更改textColor

swift - 如何在 SwiftUI 中使用 AudioKit?在 View 中更改状态变量

ios - 滚动后重用单元​​格后如何维护 TableView 单元格中的值?

ios - 一种UIView动画取消了iOS中的另一种动画

ios - 白标企业 iOS 应用程序

objective-c - 如何有条件地将框架包含在 Xcode 项目中?

ios - 有没有办法记录应用程序输出的所有声音?

c++ - 在 C++ 类中实现 TPCircularBuffer

javascript 警告和确认弹出窗口不适用于 IOS 9 中的 Webkit

ios - 当我选择单元格时,UIImageView.image 在我的 UITableViewCell 中为 nil,即使我知道它应该有一个值