Как установить битрейт в аудио-очереди - PullRequest
1 голос
/ 26 апреля 2011

Я использую этот код для записи звука в аудиоформате kAudioFormatMPEG4AAC.Как я могу изменить битрейт на 96K, 128K или 320K?

С уважением, Джон

Ответы [ 2 ]

3 голосов
/ 27 апреля 2011

Я не уверен, что вы можете сделать это напрямую, используя AudioQueue, установив параметр. Тем не менее, я думаю, что следующий подход будет работать:

  • Настройка AudioQueue для записи на линейный PCM
  • Настройка ExtAudioFile с форматом данных клиента, соответствующим AudioQueue, и форматом данных файла AAC
  • Установите желаемый битрейт AAC, получив AudioConverter, связанный с ExtAudioFile (kExtAudioFileProperty_AudioConverter), и установите битрейт конвертера (kAudioConverterEncodeBitRate).

Я не пробовал это на iOS, но если кодировщик AAC использует аппаратный кодек, я сомневаюсь, что вы сможете установить битрейт. AudioFormat.h предоставляет несколько методов для определения того, какие кодеки являются аппаратными или программными, и способы запроса одной реализации к другой.

0 голосов
/ 11 октября 2013

Дело в том, что AudioQueue использует тот же бэкэнд, что и AudioConverter, хотя в AudioQueueProperty enom нет ключа для bitRate, вы все равно можете позаимствовать их у конвертера.Получите битрейт следующим образом:

AudioQueueGetProperty(mQueue, kAudioConverterEncodeBitRate, &bitRate, &propertySize);

и установите его так:

AudioQueueSetProperty(mQueue, kAudioConverterEncodeBitRate, &bitRate, propertySize);
...