como definir a taxa de bits corretamente para aac codificação OSX
Eu tenho dados de 1 segundo do PCM que escrevo em um arquivo AAC com êxito.
No entanto, não consigo controlar a taxa de bits do arquivo de saída.
Aqui está a configuração do meu codec 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;
Tanto quanto eu pesquisei outros exemplos, esta é a maneira correta de definir a taxa de bits:
AudioConverterRef acRef;
UInt32 acsize = sizeof(acRef);
UInt32 bitRateIn = 96000;
ExtAudioFileGetProperty(audiofileRef, kExtAudioFileProperty_AudioConverter,
&acsize, &acRef);
AudioConverterSetProperty(acRef, kAudioConverterEncodeBitRate,
sizeof(UInt32), &bitRateIn);
Depois disso, escrevo meus dados no arquivo.
Como o arquivo tem 1 segundo e a taxa de bits é de 96kbit / s, o arquivo de saída deve estar em torno de 96/8 = 12 kilobyte. Mas o arquivo de saída tem cerca de 62 kilobytes.
Depois de obter esse comportamento estranho, abri o arquivo usando o MediaInfo e ele tinha 3 taxas de bits diferentes:
Taxa de bits nominal - 96kb / s (é isso que eu configurei)
Taxa de bits - 48kb / s
Taxa de bits geral - 476kb / s
Aqui, o tamanho do arquivo corresponde à taxa de bits geral como 476/8 = 59 kilobyte (o restante são metadados e cabeçalhos).
Como posso definir a taxa de bits corretamente?