Как правильно установить битрейт для aac кодирования OSX
У меня есть данные PCM за 1 секунду, которые я успешно записываю в файл 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 секунду, а скорость передачи данных составляет 96 кбит / с, выходной файл должен иметь размер около 96/8 = 12 килобайт. Но выходной файл составляет около 62 килобайт.
После этого странного поведения я открыл файл с помощью MediaInfo, и он имел 3 разных битрейта:
Номинальный битрейт - 96kb/s (это то, что я установил)
Битрейт - 48кб / с
Общий битрейт - 476кб / с
Здесь размер файла соответствует общему битрейту как 476/8 = 59 килобайт (остальное - метаданные и заголовки).
Как правильно установить битрейт?