使用AudioQueue播放PCM音频流的音量很小

时间:2015-09-17 02:05:03

标签: ios objective-c iphone audioqueue

使用AudioQueue播放PCM数据时遇到问题。使用iPhone的扬声器时音量很低;我甚至把系统音量调到最大。但是,当我使用耳机时音量很好。

我将数据插入队列中,如下所示:

memcpy(mBuffers[mIndex]->mAudioData, pcmData, mBufferByteSize);
mBuffers[mIndex]->mAudioDataByteSize = mBufferByteSize;
mBuffers[mIndex]->mPacketDescriptionCount = mBufferByteSize/2;
OSStatus status = AudioQueueEnqueueBuffer(mQueue, mBuffers[mIndex], 0, NULL);
NSLog(@"fill audio queue buffer[%d]",mIndex);
if(mIndex == kNumberBuffers - 1) {
    isStartPlay = YES;
    mIndex = 0;
    AudioQueueSetParameter(mQueue, kAudioQueueParam_Volume, 1.0);
    status = AudioQueueStart(mQueue, NULL);
}else {
    mIndex++;
}

我设置了这样的音量:

AudioQueueSetParameter(mQueue, kAudioQueueParam_Volume, 1.0);

1 个答案:

答案 0 :(得分:1)

您使用的是AVAudioSessionCategoryPlayAndRecord音频会话类别吗?如果是这样,那么你可能正在通过接收器播放,这非常安静。

这种奇怪的默认行为可以追溯到那些戏剧和唱片类别被认为主要用于VOIP应用程序的日子,更奇怪的是,这些应用程序被禁止进入AppStore。

要通过普通发言人覆盖播放,请尝试将AVAudioSessionCategoryOptionDefaultToSpeaker添加到您的类别选项中:

[session setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];