Техническое примечание TN2271

Режимы управления скорости передачи для кодирования AAC

Аудио кодер Apple AAC поддерживает различные стратегии управления скорости передачи, адаптированные для широкого диапазона приложений. Этот документ объясняет эти стратегии и направляет пользователя при выборе стратегии данного приложения.

Введение
Указание суммы выходных данных и целевого качества
Интерфейсы
Сводка
История версии документа

Введение

Так же, как со многими другими инструментами сжатия с потерями, AAC предлагает различные компромиссы между качеством звука и суммой выходных данных. Сумма выходных данных может быть измерена с точки зрения скорости передачи, размеров пакета и размера файла. Кодер AAC поддерживает прямое управление суммой выходных данных небольшим количеством параметра уровня. Несмотря на то, что это сложно для измерения субъективного качества звука, AAC поддерживает прямое управление этим свойством качественным параметром. Вследствие требований противоречия достижения определенной скорости передачи по сравнению с качеством только один из этих двух параметров может использоваться для кодирования.

AAC поддерживает четыре режима управления скорости передачи, поддерживающие или немного уровня или качественный параметр как показано в Таблице 1.

Таблица 1  четыре режима управления скорости передачи и их основной параметр.

Режим управления скорости передачи (kAudioCodecPropertyBitRateControlMode)

Параметр

Постоянный параметр

CBR (Постоянная скорость передачи) - kAudioCodecBitRateControlMode_Constant

Скорость передачи

kAudioCodecPropertyCurrentTargetBitRate

ABR (Средняя скорость передачи данных) - kAudioCodecBitRateControlMode_LongTermAverage

Скорость передачи

kAudioCodecPropertyCurrentTargetBitRate

VBR_constrained (Ограниченный VBR) - kAudioCodecBitRateControlMode_VariableConstrained

Скорость передачи

kAudioCodecPropertyCurrentTargetBitRate

VBR (Переменная скорость передачи) - kAudioCodecBitRateControlMode_Variable

Качество

kAudioCodecPropertySoundQualityForVBR

Три режима, основывающиеся на параметре скорости передачи, разрешают различные суммы изменений скорости передачи в течение долгого времени.

Указание суммы выходных данных и целевого качества

Сумма выходных данных, сгенерированных кодером, обычно указывается параметром скорости передачи в битах в секунду. Кодек стремится к целевой скорости передачи. CBR режим обеспечивает самое трудное управление цели скорости передачи, в то время как ABR режим и VBR_constrained режим налагает меньшие ограничения на изменение скорости передачи в течение долгого времени. В режиме VBR увеличится скорость передачи, когда качественный параметр будет увеличен, но нет никакого прямого управления средней скорости передачи данных. Все режимы управления генерируют пакеты с переменным размером, как проиллюстрировано на Рис. 1, даже на CBR режим.

  Иллюстрация рисунка 1 пакетов, представляющих звуковой сигнал.

Оффлайновые приложения

В оффлайновых или основанных на файле приложениях размер сжатого файла является самой важной мерой, связанной с установкой скорости передачи или качества. Следовательно, для этих приложений мгновенное колебание скорости передачи и переменные размеры пакета менее важны. В конечном счете цель здесь состоит в том, чтобы достигнуть лучшего качества звука для данного размера файла, или с другой стороны, для получения самого маленького размера файла для данного качества.

В размере конечного файла можно управлять ABR режим, с приближением скорости передачи размера файла разделился на аудио продолжительность. С помощью целевое качество можно управлять VBR режим. VBR_constrained режим обеспечивает компромисс между ABR и VBR режимы. Средняя скорость передачи данных в этом режиме будет, по крайней мере, так же высока как в ABR если качество иначе отбросило бы, режим, но разрешено увеличиться.

Приложения реального времени

Для приложений реального времени, таких как потоковая передача или связь, мгновенные размеры пакета и временно переменные скорости передачи могут быть более важными в зависимости от свойств канала передачи. В то время как ABR режим адаптируется для управления размером файла в оффлайновых приложениях, VBR и CBR режимы являются более надлежащими в течение реального времени.

Кодер генерирует пакеты переменного размера, представляющего блоки постоянного размера входного звукового сигнала. Размер пакета может варьироваться значительно в зависимости от звукового содержимого до 6 144 битов за канал. В режиме CBR ограничиваются размеры пакета так, чтобы истинная постоянная скорость передачи могла быть достигнута с указанной сквозной задержкой. Этот режим соответствует CBR режим, как определено в стандарте MPEG 4. В этом случае сквозная задержка является задержкой кодека плюс задержка вследствие буферизации потока битов. Буферизация потока битов используется для включения передачи с постоянной скоростью передачи переменных размеров пакета.

Рис. 2 иллюстрирует буферизацию потока битов на сайте кодера и декодера для сглаживания переменных размеров пакета кодера. Скорость передачи в этом сценарии является совершенно постоянной, и буферное обилие в кодере и декодере всегда составляет в целом 100%.

  Иллюстрация рисунка 2 схемы буферизации бита в режиме CBR для достижения совершенно постоянной скорости передачи.

Сначала появляясь в iOS 6.0, приложения, которые должны ограничить максимальный размер пакета, могут вынудить кодер поддержать тот предел. Это только поддерживается в VBR режим. Предел размера пакета автоматически приведет к надлежащему качеству VBR, устанавливающему, который может поддержать предел размера пакета. Предел эквивалентной скорости передачи обычно на приблизительно 20% ниже виртуальной скорости передачи, необходимой для непрерывной передачи пакетов с максимальным размером.

Рис. 3 показывает размеры пакета записи кастаньеты в режиме VBR. Размеры пакета варьируются большим фактором. Рис. 4 показывает получающиеся размеры пакета с теми же настройками кодера, но дополнительным ограничением размера пакета к 4 000 битов.

  Размеры пакета рисунка 3 кастаньеты стерео сигнализируют в режиме VBR (качество VBR = 64, частота дискретизации = 44100)
.Figure
4  Размера пакета сигнала кастаньеты стерео в режиме VBR с пределом размера пакета 4 000 битов.

Учитывая предел размера пакета, средняя скорость передачи данных может быть оценена:

Рисунок 5  
Figure 5 Art/tn2271_Formula1.png

с

R: предполагаемая средняя скорость передачи данных

D: поле (обычно 0.2)

S: максимальный размер пакета в битах

Фс: выведите частоту дискретизации звука

N: размер блока кодека в выборках на канал

Пример, для низкой сложности кодер AAC в частоте дискретизации 44.1 кГц с пределом размера пакета 4 000 бит/с результат:

Рисунок 6  
Figure 6 Art/tn2271_Formula2.png

Интерфейсы

OS X включает инструмент командной строки и APIs для управления настройками кодера AAC.

Настройки командной строки

afconvert инструмент командной строки для преобразования аудиофайла включая кодирование и декодирование. Это поддерживает все опции управления скоростью передачи. Таблица 2 перечисляет соответствующие параметры командной строки для управления скоростью передачи afconvert в первом столбце.

Табличные 2  настройки Командной строки для afconvert.

Параметр командной строки

Значение

Примечания

- s <режим управления>

<режим управления> = режим управления Скорости передачи: 0 = CBR 1 = ABR 2 = VBR_constrained 3 = VBR

- b <скорость передачи>

<скорость передачи> = Общая скорость передачи в бит/с

Не применимый в режиме VBR

- u 'vbrq' <качество>

<качество> = качество VBR в диапазоне 0 … 127

Режим VBR только

Использование afconvert В качестве примера

Командная строка для кодирования файла PCM с помощью режима ABR с 128 Кбит/с:

afconvert PCMin.wav AACout.caf –d aac –s 1 –b 128000

Командная строка для кодирования файла PCM с помощью режима VBR с качеством VBR 64:

afconvert PCMin.wav AACout.caf –d aac –s 3 –u vbrq 64

Командная строка для кодирования файла PCM с помощью режима VBR_constrained с 128 Кбит/с:

afconvert PCMin.wav AACout.caf –d aac –s 2 –b 128000

Больше информации о параметрах командной строки afconvert может быть получен при вводе:

afconvert -h

Определенные параметры командной строки неявно установят режим управления скорости передачи, поскольку они только доступны для одного определенного режима, это включает следующие параметры, которые только допустимы в режиме VBR, поэтому кодер будет использовать режим VBR, даже если будет опущен параметр-s 3.

-u vbrq <n>

Параметр скорости передачи –b <n> не может использоваться в режиме VBR.

Средняя скорость передачи звука файла может быть получена с инструментом командной строки afinfo.

Управление скоростью передачи через API

При использовании API свойства, доступные для управления скоростью передачи, перечислены в Таблице 3. Кодер будет сконфигурирован согласно этим значениям свойств. Свойства могут быть считаны также. Таким образом, пользователь может узнать, например, какое качество VBR используется, когда устанавливается определенный предел размера пакета.

Табличная 3  Скорость передачи управляет через API.

Свойство API

Значение

Примечания

kAudioCodecPropertyBitRateControlMode

<режим управления> = режим управления Скорости передачи: 0 = CBR 1 = ABR 2 = VBR_constrained 3 = VBR

kAudioCodecPropertyCurrentTargetBitRate

<скорость передачи> = Общая скорость передачи в бит/с

Не применимый в режиме VBR

kAudioCodecPropertySoundQualityForVBR

<качество> = качество VBR в диапазоне 0 … 127

Режим VBR только

kAudioCodecPropertyPacketSizeLimitForVBR

<предел размера> = предел размера пакета в битах

Режим VBR только

Сводка

Кодер Apple AAC обеспечивает четыре режима управления скорости передачи, как описано ниже. В то время как четвертое основывается на качественной цели, первые три основываются на целевой скорости передачи.

Постоянная скорость передачи (CBR)

Этот режим достигает постоянной целевой скорости передачи и совместим с режимом CBR, указанным в стандарте MPEG 4. Этот режим подходит для сетевой передачи с постоянной скоростью передачи при декодировании в режиме реального времени с фиксированной сквозной аудио задержкой. Однако вследствие строгого ограничения с постоянной скоростью передачи, этот режим приводит к более низкому качеству звука и более высокой сложности, чем другие режимы кодирования.

Средняя скорость передачи данных (ABR) - режим по умолчанию

- Рекомендуемый для управления размером файла-

Целевая скорость передачи достигается по долгосрочному среднему числу (обычно после первых нескольких секунд кодирования). В отличие от режима CBR, этот режим не обеспечивает постоянную задержку при использовании передачи с постоянной скоростью передачи, но этот режим обеспечивает почти лучшее глобальное качество в то время как все еще способность строго управлять получающимся размером файла.

Переменная скорость передачи, но ограниченный (VBR_Constrained)

- Рекомендуемый как компромисс между VBR и ABR-

Этот режим подобен VBR, но ограничивает изменение средней скорости передачи данных. Нижний предел является выбранной пользователями скоростью передачи. Более высокая скорость передачи адаптируется к трудному аудио.

Переменная скорость передачи (VBR)

- Рекомендуемый для управления качеством звука-

Звуковое сообщение кодируется с постоянным качеством и фактически никакими ограничениями скорости передачи. Это - лучший режим для достижения непротиворечивого качества звука с самой низкой полной скоростью передачи.

Предел размера пакета может быть применен в этом режиме при необходимости для передачи в реальном времени.



История версии документа


ДатаПримечания
16.10.2012

Обновленный текст + добавил управляющая информация API и иллюстрации.

22.08.2012

Новый документ, объясняющий стратегии кодера AAC и направляющий пользователя при выборе определенной стратегии кодирования данного приложения.