Cbr abr vbr что лучше mp3

Автор: Александр Радзишевский (Alex Y. Radzishevsky)
Copyright (C) 1998-2007, Alex Y. Radzishevsky

Что такое CBR и VBR?

Как известно, результатом кодирования сигнала с помощью такого алгоритма, как, например, MPEG-1 Layer III (MP3) (и множества других алгоритмов), является бит-поток с фреймовой (блочной) структурой. Это объясняется тем, что кодирование исходного потока производится не целиком, а по частям. То есть фактически исходный поток разделяется на блоки определенной фиксированной длины, затем каждый блок (фрейм) в отдельности подвергается кодированию и результат (кодированный блок информации) направляется в результирующий поток (будь то файл или поток данных).

CBR (Constant Bit Rate – постоянный битрейт) – это такой способ кодирования исходного аудио потока, при котором все его блоки (фреймы) кодируются с одинаковыми параметрами (с одинаковым битрейтом). Иными словами, битрейт на всей протяженности (всех фреймов) результирующего потока является постоянным.

VBR (Variable Bit Rate – переменный битрейт) – это такой способ кодирования исходного аудио потока, при котором каждый отдельный блок (фрейм) кодируется со своим битрейтом. Выбор битрейта, оптимально подходящего для кодирования данного фрейма, осуществляется самим кодером путем анализа "сложности сигнала" в каждом отдельном фрейме.

Каковы отличия режимов CBR, VBR и ABR применительно к кодеру Lame?

Прежде чем начать разговор, уточним две детали:

1. Кодирование в MP3 происходит поблочно: кодируемый файл разбивается на фреймы (кадры) с одинаковым интервалом, каждый кадр кодируется и записывается в выходной поток; таким образом, выходной поток также имеет кадровую структуру.

2. Фреймы могут быть закодированы не на любом битрейте, а только на одном из входящих в таблицу стандартных для MPEG1 Layer III битрейтов: 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320. Кодирование на любых промежуточных битрейтах ("freeformat") стандартом не предусмотрено.

Люди, использующие VBR в Lame, обычно аргументируют это фразой: "я хочу получать постоянное качество, а не постоянный битрейт". Действительно, ведь в музыке бывают простые пассажи, на которые вполне хватает и 128 Кбит/сек (например паузы между песнями), а бывают и сложные, на которых человек с хорошим слухом, хорошей аудио картой и прочей аудиоаппаратурой услышит дефекты компрессии даже на 320 Кбит/сек. На самом деле такой аргумент не совсем правомочен.

Даже в режиме CBR, mp3-кодер может перераспределять биты во времени, выделяя большее или меньшее количество бит во время сложного или простого пассажей, что позволяет в целом улучшить качество звучания. Такое перераспределение бит делается за счёт так называемого резервуара бит: во время кодирования простых пассажей кодер тратит на них не весь заданный пользователем битрейт, а лишь около 90%, около 10% экономится в резервуаре для кодирования сложных мест (изначально резервуар пуст). При кодировании сложных пассажей кодер будет использовать все 100% указанного битрейта и добавлять дополнительные биты из резервуара (если таковые имеются, то есть если резервуар не пуст). К сожалению, в соответствии со стандартом, размер резервуара ограничен. Это означает, что если простой сигнал продолжается достаточно долго, резервуар накапливает свой объем до определенных максимально допустимых пределов и далее кодирование идёт уже с использованием всех 100% битрейта. И обратная ситуация: если сложный сигнал продолжается достаточно долго, из резервуара (постепенно) забираются все сэкономленные биты и далее кодирование идёт с использованием уже теперь всех 100% битрейта.

Можно было бы сказать что резервуар неплохо справляется со своей основной обязанностью – накопление "лишних" битов во время простых пассажей и их выдача в качестве дополнительных при кодировании сложных пассажей, если бы не одно "но": он обладает конечным и причём весьма ограниченным размером, что означает, что копить его можно лишь до определенных пределов, и вынимать, соответственно, тоже, пока резервуар не опустошится. Именно для того чтобы убрать этот главный недостаток резервуара и был разработан ABR.

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

Допустим, что пользователь указал режим ABR и определенный битрейт B (пользователь может указывать абсолютно любой битрейт от 32 до 320, даже не из стандартной сетки битрейтов, например можно указать в качестве желаемого среднего битрейта 129). Кодер принимает кусок аудио (фрейм), который необходимо закодировать. Таким же образом, как и в CBR, определяет его сложность (об этом мы поговорим ниже). Если пассаж сложный, то кодер также берёт на него больше битов, но уже не из резервуара (как в CBR), а просто на просто увеличивая битрейт на необходимое количество ступеней (выбранный битрейт должен входить в сетку стандартных), создавая таким образом "виртуальный резервуар" (поднять битрейт здесь можно – это не CBR). Что значит "виртуальный резервуар"? Это просто: мы предположили, что указанного пользователем битрейта B кодеру мало, ему нужно K бит (K > B), тогда кодер подбирает такой минимальный стандартный битрейт N, при котором выполняется: N >= K (такой выбор битрейта мы и называем "виртуальный резервуар"). Затем происходит кодирование с помощью K бит взятого куска аудио. Однако N >= K, то есть мы использовали меньше бит, чем есть во взятом фрейме, так не будем же мы выбрасывать эти лишние биты? Вот эти лишние биты мы и записываем в уже настоящий резервуар. Так как в ABR есть возможность использовать "виртуальный резервуар" не имеет смысла строить стандартный резервуар, поэтому когда придет следующий кусок аудио, для его кодирования сначала будут использованы биты из резервуара, а потом кодер решит какой битрейт необходим дальше. Другими словами, если в CBR кодер все время старается накопить как можно больше бит в резервуаре, то в ABR кодер наоборот, старается избавиться от бит в резервуаре, так как копить их незачем – можно просто поднять битрейт.

Простые пассажи кодируются меньшим количеством бит, на них берётся примерно 95% от указанного битрейта B, но теперь остаток не откладывается в резервуар, кодер просто берёт фрейм с меньшим битрейтом. Возникающая разница (оставшиеся биты) записывается в стандартный резервуар (не выбрасывать же оставшиеся биты. ). Пример. Допустим пришел "простой" пассаж. Тогда кодер берет все биты (если таковые есть) в резервуаре (настоящем), потом ищет ближайший стандартный битрейт, при котором суммарное количество бит, получившееся для этого фрейма (все биты из резервуара + взятый битрейт), составит 95% от заданного пользователем битрейта B, производит кодирование, а лишние биты (если они остались) снова сохраняет в резервуаре.

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

VBR – переменный битрейт. Пользователь указывает желаемое качество. Lame опираясь на свою психоакустическую модель выделяет для каждого фрейма ровно то количество бит, которое необходимо для достижения заданного качества. В выходном потоке фреймы соответственно имеют разные битрейты (которые всегда ложатся в таблицу стандартных битрейтов). Использование резервуара в VBR абсолютно идентично ABR – туда попадают только неиспользованные хвостики фреймов.

Методы оценки сложности сигнала

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

Методы оценки сложности сигнала: метод 1 (VBR)

Первый метод основан на вычислении "психоакустической маскировки" и "ошибки кодирования". Этот метод используется в VBR и теоретически должен был бы давать максимальное качество если бы психоакустическая модель Lame’а была идеальна. В основе этого метода лежит очень простая идея: на кодирование выделяется минимальное количество бит, необходимое для выполнения условия: [ошибка_кодирования]

Битрейт (bitrate, англ.) — означает величину (численность) бит, которая используется для записывания или передачи мультимедийного материала, длящегося на протяжении одной секунды. При фиксации мультимедийного (аудио и видео) контента в формате МР3 происходит его поблочное сжатие с помощью определённых процедур (алгоритмов). А эти алгоритмы подразделяются на виды в зависимости от битрейта (его величины). На каждый из таких блоков (фреймов) отводится от тридцати двух до трёхсот двадцати бит.

Кодирование

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

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

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

Constant bitrate

Как видно из названия (constant — постоянный, англ.), в этой разновидности алгоритма на одну секунду материала выделяется постоянное количество бит. Все блоки равны друг другу.

Благодаря использованию CBR есть возможность заранее знать размер исходного файла или ширину потока. Это важно для передачи информации по каналам, обладающим ограниченной шириной.

Алгоритм Constant bitrate

Применение такого кодирования не идеально:

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

Недостатки качества при записи «сложных» участков решаются повышением битрейта, например, до максимальных 320 кбит/с, но при этом увеличивается ширина потока передачи или размер файла.

Variable bitrate

Легко догадаться, что такая разновидность метода (VBR) является переменной (variable — переменный, англ.).

Для такой кодировки характерно то, что битрейт в этом случае изменяется в процессе самого кодирования программой-кодеком. И зависит битрейт в указанном случае от насыщенности звукового или видеоматериала.

То есть при выборе VBR-кодирования программой для записи пустой картинки будет выбран меньший битрейт, а для записи насыщенных картинок или быстро сменяющихся изображений — больший.

Алгоритм Variable bitrate

Отрицательным моментом этого алгоритма является трудность предвидения предстоящих изменений. Увеличение битрейта при записи будет реально происходить с опозданием.

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

Поэтому CBR с максимальным значением в 320 кбит/с обеспечит большее качество.

Правда, в настоящее время появилась кодировка VBR 2 Pass.

Суть её в том, что программа сначала анализирует мультимедийный поток (в первый раз), а затем производит запись, сжимая её на основе данных, полученных при первичном сканировании. Это даёт лучший результат по качеству, и в этом смысле такая кодировка лучше.

Average bitrate

Average переводится с английского как усреднённый. Таковой является разновидность ABR, являющаяся в некотором роде помесью VBR и CBR.

Выбирая режим ABR, пользователь задаёт какое-то его значение в килобитах в секунду. Кодек же может изменять его в ту или иную сторону, придерживаясь установленного среднего значения.

Алгоритм Average bitrate

Метод ABR выгодно отличается от других назначаемым количеством бит в секунду. Вы можете выбирать абсолютно любой числовой параметр от 8 до 320. В то время как кодировка CBR может использовать только шестнадцатикратное значение.

Из вышеизложенного следует, что если для результата важен размер полученного файла, то для высшего качества лучше присмотреться к кодировке ABR или CBR.

В противном же случае обратить внимание на метод VBR 2 Pass.

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

VBR (Variable bitrate) с английского переводится как изменяющийся (переменный) битрейт. При кодировке в VBR мы получаем файл, битрейт которого изменяется в зависимости от густоты потока данных (то есть, к примеру, битрейт тишины будет ниже, чем битрейт какого-либо звука) . Такой тип кодирования продолжает совершенствоваться, достигая новых показателей амплитуды изменения битрейта потока данных. Основным минусом является то, что невозможно предугадать будущий размер кодируемого файла. Несмотря на это, данный минус никак не омрачит общую картину: размер файла получается меньше, чем при кодировании по типу CBR. Это получается за счёт того, что битрейт тишины или тихих звуков меньше. Последние версии Lame имеют функцию кодирования в VBR, качество которого на порядок выше ABR, а размер меньше, чем CBR.

Оцените статью
ПК Знаток
Добавить комментарий

Adblock
detector