【问题标题】:App crashes on [[AKMicrophone alloc]initWith:[[AVAudioFormat alloc]initStandardFormatWithSampleRate:AVAudioPCMFormatFloat32 channels:2]]应用程序在 [[AKMicrophone alloc]initWith:[[AVAudioFormat alloc]initStandardFormatWithSampleRate:AVAudioPCMFormatFloat32 channels:2]] 上崩溃
【发布时间】:2019-08-28 20:54:32
【问题描述】:

初始化 AKMicrohone 时应用程序崩溃。

  • Objective-C
  • AudioKit :4.8
-(void)setupFrequencyDetector{
    @try {
        AKSettings.audioInputEnabled = true;
        //self.mic = [[AKMicrophone alloc]initWith:[[AVAudioFormat alloc]initWithCommonFormat:AVAudioPCMFormatFloat32 sampleRate:44100 channels:2 interleaved:true]];
        self.mic = [[AKMicrophone alloc]initWith:[[AVAudioFormat alloc]initStandardFormatWithSampleRate:AVAudioPCMFormatFloat32 channels:2]];
        self.tracker = [[AKFrequencyTracker alloc]init:self.mic hopSize:4096 peakCount:20];
        self.silence = [[AKBooster alloc]init:self.tracker gain:0];
        AudioKit.output = self.silence;
    } @catch (NSException *exception) {
        NSLog(@"Exception :%@",exception.description);
    } @finally {}
}

例外:必需条件为假:format.sampleRate == hwFormat.sampleRate AudioKit+StartStop.swift:start():34:无输出节点 尚未设置,不会进行任何处理。

【问题讨论】:

  • 当您只提供一种方法时,很难肯定地给您答案。该错误似乎暗示您从未设置输出,所以 setupFrequencyDetector 甚至在 AudioKit 启动之前被调用?最好提供一个显示此错误的项目的 GitHub 链接。
  • 没有别的了。 1.在仅限 Objective-C 的项目中安装“AudioKit”。 2. 导入音频套件。 3. 定义“AKMicrophone、AKFrequencyTracker & AKBooster”的属性。 4.在viewDidAppear(:)中调用这个函数。

标签: ios audiokit


【解决方案1】:

通过设置音频格式和采样率解决了这个问题。

AVAudioFormat *audioFormat = [AudioKit.engine.inputNode inputFormatForBus:0];
AKSettings.sampleRate = audioFormat.sampleRate;
self.mic = [[AKMicrophone alloc]initWith:audioFormat];

更新功能:

-(void)setupFrequencyDetector{
@try {
    AKSettings.audioInputEnabled = true;
    AVAudioFormat *audioFormat = [AudioKit.engine.inputNode inputFormatForBus:0];
    AKSettings.sampleRate = audioFormat.sampleRate;
    self.mic = [[AKMicrophone alloc]initWith:audioFormat];
    self.tracker = [[AKFrequencyTracker alloc]init:self.mic hopSize:4096 peakCount:20];
    self.silence = [[AKBooster alloc]init:self.tracker gain:0];
    AudioKit.output = self.silence;
} @catch (NSException *exception) {
    NSLog(@"Exception :%@",exception.description);
} @finally {}}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多