如何为aac编码OSX正确设置比特率

时间:2017-01-13 15:51:56

标签: c++ macos core-audio bitrate

我有1秒PCM数据,我成功写入AAC文件。

但是,我无法控制输出文件的比特率。

以下是我的AAC编解码器的配置:

AudioStreamBasicDescription clientFormat = {0};

clientFormat.mSampleRate         = 44100;
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;

据我研究其他例子,这是设置比特率的正确方法:

AudioConverterRef acRef;
UInt32 acsize = sizeof(acRef);
UInt32 bitRateIn = 96000;

ExtAudioFileGetProperty(audiofileRef, kExtAudioFileProperty_AudioConverter,
                                                         &acsize, &acRef);

AudioConverterSetProperty(acRef, kAudioConverterEncodeBitRate,
                                              sizeof(UInt32), &bitRateIn);

在此之后,我将数据写入文件。

由于文件为1秒且比特率为96kbit / s,输出文件应为96/8 = 12千字节。但是输出文件大约是62千字节。

在获得这种奇怪的行为后,我使用MediaInfo打开了文件,它有3种不同的比特率:

标称比特率 - 96kb / s(这是我设定的)

比特率 - 48kb / s

整体比特率 - 476kb / s

mediainfo

此处文件大小对应的总比特率为476/8 = 59千字节(其余为元数据和标题)。

如何正确设置比特率?

0 个答案:

没有答案