AudioQueue 读取输入音量

Posted

技术标签:

【中文标题】AudioQueue 读取输入音量【英文标题】:AudioQueue read input volume 【发布时间】:2012-12-03 21:22:31 【问题描述】:

我在 OS X 上,我必须在说话时连续读取输入音量(例如 Siri 会在高或低的紫色条上显示强声或弱声)。 我试过这段代码,但它返回“参数 ID 无效”:

    UInt32 size = sizeof(AudioQueueLevelMeterState) * record_state.data_format.mChannelsPerFrame;
    AudioQueueLevelMeterState *outValue = malloc(size);
OSStatus errorMsg = AudioQueueGetProperty (record_state.queue, kAudioQueueProperty_CurrentLevelMeter,  &outValue, &size     );

    if (!errorMsg) 
        printf("Volume: %f", outValue[0].mPeakPower);
    
    else
    
        printf("Er: %i", errorMsg);
    

我该怎么办? 谢谢。

【问题讨论】:

【参考方案1】:

您是否通过设置kAudioQueueProperty_EnableLevelMetering 属性启用了计量?如果不是,那可能是原因。

【讨论】:

不,我不知道。我应该在哪里做这个? 在你初始化你的音频队列之后,在你设置流描述之后。 好的,完成。它没有进入 else 块,但它在这里崩溃(EXC_BAD_ACCESS): printf("Volume: %f", outValue[0].mPeakPower);

以上是关于AudioQueue 读取输入音量的主要内容,如果未能解决你的问题,请参考以下文章

使用 AudioQueue 播放 PCM 音频流音量低

如何在不使用 AudioQueueRef 的情况下在 AudioQueue 中设置音量?

AudioQueue 如何从 CallBack 读取缓冲区

使用 AudioQueue 读取音频缓冲区数据

如何降低 iphone 的 sdk Audioqueue 的声音?

如何访问 AudioQueue 缓冲区中的数据?