Как правильно установить битрейт для 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 килобайт (остальное - метаданные и заголовки).

Как правильно установить битрейт?

0 ответов

Другие вопросы по тегам