数据包大小(每数据包 mBytes)或核心音频中 AAC 文件的比特率

Packet size (mBytesPerPacket) or the bitrate for AAC files in Core Audio

本文关键字:数据包 音频 AAC 文件 比特率 核心 mBytes      更新时间:2023-10-16

我想配置一个具有恒定比特率 AAC 类型的AudioStreamBasicDescription

AudioStreamBasicDescription clientFormat = {0};
clientFormat.mSampleRate         = 44100.0;
clientFormat.mFormatID           = kAudioFormatMPEG4AAC;
clientFormat.mFormatFlags        = kMPEG4Object_AAC_Main;
clientFormat.mChannelsPerFrame   = 2;
clientFormat.mBytesPerPacket     = 0;
clientFormat.mBytesPerFrame      = 0;
clientFormat.mFramesPerPacket    = 1024;
clientFormat.mBitsPerChannel     = 0;
clientFormat.mReserved           = 0;

对于mBytesPerPacket,Apple文档说:

音频数据包中的字节数。指示变量 数据包大小,将此字段设置为 0。对于使用变量的格式 数据包大小,使用 音频流数据包描述结构。

我想把它作为一个常量,所以我必须在那里插入一个非零值(所需的大小),但除了 0 之外的所有内容都失败了。

对此有任何帮助吗?

事实证明,我们可以直接在音频转换器上设置编解码器属性。

所以我做到了:

AudioConverterSetProperty(acRef, kAudioCodecPropertyBitRateControlMode,
                                                  sizeof(control_mode), &control_mode);
AudioConverterSetProperty(acRef, kAudioCodecPropertyCurrentTargetBitRate,
                                                  sizeof(_bitRate), &_bitRate);