如何在 coreaudio 中为 AudioStreamBasicDescription 指定比特率?

blu*_*her 5 core-audio ios

我正在使用音频单元录制一些 PCM 音频。在回调中,当我有 30 秒的音频时,我想将比特率为 12kb/s 的 8000Hz AAC 编码文件写入磁盘。

这是我使用的 AudioStreamBasicDescription,但我的输出最终为 40 kb/s。我的问题是,我可以更改一些参数以降低比特率,如果可以,我应该修改哪些参数?

    // specify the M4A
    AudioStreamBasicDescription outputFormat = {0};

    outputFormat.mSampleRate         = 8000.0;
    outputFormat.mFormatID           = kAudioFormatMPEG4AAC;
    outputFormat.mFormatFlags        = kMPEG4Object_AAC_Main;
    outputFormat.mChannelsPerFrame   = 1;
Run Code Online (Sandbox Code Playgroud)

Nic*_*ick 1

mBitsPerChannel请参阅AudioStreamBasicDescription 中的字段。

一个音频样本的位数。例如,对于使用 kAudioFormatFlagsCanonical 格式标志的线性 PCM 音频,请按如下方式计算此字段的值:

mBitsPerChannel = 8 * sizeof (AudioSampleType);
Run Code Online (Sandbox Code Playgroud)

对于压缩格式,将此字段设置为 0。

https://developer.apple.com/library/ios/documentation/MusicAudio/Reference/CoreAudioDataTypesRef/#//apple_ref/c/tdef/AudioStreamBasicDescription

  • 这设置了位深度,但没有设置位速率,对吗?位深度约为 16 位或 24 位,而比特率约为 128kbps (2认同)