在音频队列上设置输入音量

时间:2010-12-16 15:10:17

标签: iphone core-audio audioqueueservices

所以我在网上找不到任何说不能做的事,但每当我尝试在iPhone上做这件事时,都会从AudioQueueSetParameter返回错误。具体来说,如果我尝试这段代码:

AudioQueueParameterValue val = f;
XThrowIfError(AudioQueueSetParameter(mQueue, kAudioQueueParam_Volume, val), "set queue volume");

然后我收到以下错误:kAudioQueueErr_InvalidParameter。 Apple的文档说明这意味着:“指定的参数ID无效”。

但是如果我在输出队列上尝试相同的确切代码,它就可以正常工作。有没有人知道为什么我可以改变输出音量但不输入?

由于

2 个答案:

答案 0 :(得分:2)

根据 Apple的音频队列服务参考 AudioQueue参数仅适用于播放音频队列。

要检索有关输入流的信息,请尝试使用AudioQueue属性。

// streamDescription here means your AudioStreamBasicDescription
UInt32 levelSize = sizeof(AudioQueueLevelMeterState) * streamDescription.mChannelsPerFrame;
AudioQueueLevelMeterState *level = (AudioQueueLevelMeterState*)malloc(levelSize);
if (AudioQueueGetProperty(inQueue,
                          kAudioQueueProperty_CurrentLevelMeter,
                          &levelSize,
                          &level) == noErr) {
    printf("Current peak: %f", level[0].mPeakPower);
}

答案 1 :(得分:0)

我认为你可以自己将AudioQueueBuffer s的PCM值乘以某个体积因子来产生音量调整。