如何设置音频队列中的比特率

时间:2011-04-26 19:45:12

标签: iphone core-audio

我正在使用这里的代码来录音,音频格式为kAudioFormatMPEG4AAC。 如何将比特率更改为96K,128K或320K?

此致 约翰

2 个答案:

答案 0 :(得分:3)

我不确定您是否可以通过设置参数直接使用AudioQueue执行此操作。但是,我认为以下方法可行:

  • 设置AudioQueue以录制到线性PCM
  • 使用与AudioQueue匹配的客户端数据格式和AAC的文件数据格式设置ExtAudioFile
  • 通过获取与ExtAudioFile(kExtAudioFileProperty_AudioConverter)关联的AudioConverter设置所需的AAC比特率,并设置转换器的比特率(kAudioConverterEncodeBitRate)。

我没有在iOS上试过这个,但如果AAC编码器使用的是硬件编解码器,我怀疑你是否可以设置比特率。 AudioFormat.h提供了一些方法来确定哪些编解码器是硬件与软件,以及请求一种实现与另一种实现的方式。

答案 1 :(得分:0)

事实上,AudioQueue使用与AudioConverter相同的后端,虽然AudioQueueProperty enom中没有bitRate键,但你仍然可以从转换器中借用它们。得到这样的比特率:

AudioQueueGetProperty(mQueue, kAudioConverterEncodeBitRate, &bitRate, &propertySize);

并将其设置为:

AudioQueueSetProperty(mQueue, kAudioConverterEncodeBitRate, &bitRate, propertySize);