Выбор битрейта для записи мультимедиа
Битрейт (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. Теперь вы знаете, чем отличается каждая из них, какая лучше для вашей конкретной задачи и какую из них нужно выбрать.
Что такое битрейт? Какая разница между CBR и VBR?
Битрейт — основополагающий параметр сжатия видео. Он выражает общую степень сжатия потока и тем самым определяет размер требуемого канала передачи данных. Чем выше битрейт, тем больше деталей видеоизображения удается сохранить, и тем реалистичнее выглядит видео. При выборе битрейта всегда приходится находить баланс между качеством кодирования и размером канала.
Существует два основных подхода к распределению битов в потоке: постоянный (constant bitrate — CBR) и переменный (variable bitrate — VBR) битрейты. Под постоянным и переменным битрейтом инженеры могут подразумевать две разные вещи. При вещании имеется в виду постоянное или переменное количество бит, которое передается за 1 секунду. При кодировании — постоянное и переменное наполнение и опустошение буфера с одной или разной скоростью.
CBR показывает стабильный уровень битрейта независимо от сцены, не создает резких перепадов нагрузок. CBR не оптимален со стороны качества, потому что поток не изменяется в зависимости от динамики и сложности видео.
Позволяет в сложных местах повышать битрейт и снижать степень сжатия, чтобы получать более качественное изображение. Переменный битрейт регулируется в зависимости от скорости изменения картинки. Например, битрейт статичного видеофрагмента (заката) будет значительно ниже, чем битрейт движения (автомобильной погони).
Больше полезной информации о видео технологиях вы можете найти здесь.
Постоянный битрейт (CBR) против переменного битрейта (VBR) что выбрать?

Содержание:
Если вы хотите копировать музыку с компакт-дисков или иных носителей информации, на которых она хранится в не сжатом виде, в форматы с потерей качества, такие как MP3, WMA, AAC и другие вам нужно выбрать с каким битрейтом вы будете это делать, с постоянным (CBR) или переменным (VBR).
Метод кодирования с постоянным битрейтом (CBR)
CBR (Constant Bitrate) – при кодировании в CBR на всём протяжении музыкального файла битрейт будет оставаться неизменным и равным тому, какое значение вы выбрали.
Самыми распространёнными значениями являются следующие: 128, 192, 256, 320 кбит/с.
Преимущество кодирования CBR заключается в том, что файл будет обработан быстрее, что при кодировании, что при раскодировании. К тому же абсолютно любая программа или аппаратное средство, которые способно воспроизводить музыку из форматов MP3, WMA, AAC умеет это делать если она закодирована в CBR, чего нельзя сказать о переменном битрейте. Старое оборудование, или программы, не всегда поддерживают воспроизведение музыки с CBR.
Правда, нужно отметить, что музыка, закодированная в CBR, в итоге занимает больше памяти, чем та же музыка, но закодированная в VBR.
Чаще всего кодирование в CBR используют для тех случаев, когда она будет передаваться по сети, или когда заранее известно, что она будет воспроизводится на старом оборудовании.
Постоянный битрейт важен для музыки, которая будет передаваться по сети тем, что поток данных будет стабильным, и если он входит в рамки пропускной способности сетевого канала, то значит воспроизведение будет плавным, без рывков и прерываний. А вот если вещать музыку сжатую с переменным битрейтом, могут возникнуть трудности, когда кусок песни, который закодирован с максимальным битрейтом не будет проходить в пропускную способность канала, вызывая тем самым затыкания во время воспроизведения.
Вернуться к содержанию
Метод кодирования с переменным битрейтом (VBR)
VBR (Variable Bitrate) – при кодировании в VBR он не является константой, но постоянно меняется по мере воспроизведения.
Этот метод кодирования позволяет увеличить битрейт на сложных музыкальных участках, и уменьшать на простых, тем самым позволяя качеству оставаться примерно на одном уровне, но при этом экономя место в памяти.
VBR с успехом применяется и поддерживается большинством форматов и программного обеспечения.
Форматы, которые поддерживают VBR: MP3, WMA, OGG, AAC и другие.
Основным преимуществом переменного битрейта над постоянным заключается в экономии места в памяти для хранения музыки.
При кодировании в VBR используются более сложные и ресурсоёмкие алгоритмы, поэтому воспроизведение требует больших вычислительных мощностей от устройства. По этой причине некоторое старое оборудование может вообще не воспроизводить музыку с VBR.
Вернуться к содержанию
За счёт чего достигается экономия памяти при кодировании в VBR?
Алгоритмы сжатия анализируют не только сам звук, но и его сложность, раскладывая на элементарные составляющие. Таким образом, сложные участки музыки, где одновременно звучат множество инструментов, либо звук инструмента часто меняет свою тональность и громкость, кодируются с максимальным качеством. Но если в музыке появляются простые секунды, или вообще наступает тишина, эти кусочки кодируются с гораздо меньшим битрейтом.
За счёт этого подхода и достигается экономия памяти.
Но нужно всегда помнить о том, что основным недостатком VBR является невозможность воспроизведения музыки на старом оборудовании или на старом программном обеспечении.
Вернуться к содержанию
Какой тип кодирования выбрать: переменный или постоянный?
Если вы абсолютно уверены, что закодированная вами музыка будет воспроизводиться на современном оборудовании, то я рекомендую использовать переменный битрейт.
Если же ваша музыка будет воспроизводится на очень широком спектре оборудования, лучше подстраховаться и кодировать её с постоянным битрейтом.
Все телефоны, плееры и компьютеры, которые выпущены за последние 10 лет должны без проблем поддерживать воспроизведение в VBR, поэтому в подавляющем большинстве случаев я рекомендую использовать именно VBR.
Так музыка будет занимать меньше памяти, но в то же время сохранит высокое качество.
Особенно важно использовать VBR, если музыка будет хранится на портативных устройствах, вроде mp3 плееров или телефонов. Хоть в последнее время в них и встраивают довольно серьёзное количество памяти, её, всё же, желательно использовать экономно.
Вернуться к содержанию
Что такое CBR, ABR, VBR?
Автор: Александр Радзишевский (Alex Y. Radzishevsky)
Copyright (C) 1998-2007, Alex Y. Radzishevsky
Что такое CBR и VBR?
Как известно, результатом кодирования сигнала с помощью такого алгоритма, как, например, MPEG-1 Layer III (MP3) (и множества других алгоритмов), является бит-поток с фреймовой (блочной) структурой. Это объясняется тем, что кодирование исходного потока производится не целиком, а по частям. То есть фактически исходный поток разделяется на блоки определенной фиксированной длины, затем каждый блок (фрейм) в отдельности подвергается кодированию и результат (кодированный блок информации) направляется в результирующий поток (будь то файл или поток данных).
Каковы отличия режимов 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 от CBR в том, что в CBR все фреймы обязаны быть одного размера (то есть битрейт для всех фреймов должен быть одинаков), в ABR же это ограничение снято, соответственно, существует возможность вместо стандартного весьма ограниченного по размеру резервуара использовать практически бесконечный «виртуальный» резервуар. Выглядит это приблизительно следующим образом.
Простые пассажи кодируются меньшим количеством бит, на них берётся примерно 95% от указанного битрейта B, но теперь остаток не откладывается в резервуар, кодер просто берёт фрейм с меньшим битрейтом. Возникающая разница (оставшиеся биты) записывается в стандартный резервуар (не выбрасывать же оставшиеся биты. ). Пример. Допустим пришел «простой» пассаж. Тогда кодер берет все биты (если таковые есть) в резервуаре (настоящем), потом ищет ближайший стандартный битрейт, при котором суммарное количество бит, получившееся для этого фрейма (все биты из резервуара + взятый битрейт), составит 95% от заданного пользователем битрейта B, производит кодирование, а лишние биты (если они остались) снова сохраняет в резервуаре.
Методы оценки сложности сигнала
Таким образом, основное отличие CBR, ABR и VBR, как вы уже наверное поняли из сказанного выше, состоит в использовании разных методов подсчёта необходимого для кодирования каждого фрейма количества бит.
Методы оценки сложности сигнала: метод 1 (VBR)
Первый метод основан на вычислении «психоакустической маскировки» и «ошибки кодирования». Этот метод используется в VBR и теоретически должен был бы давать максимальное качество если бы психоакустическая модель Lame’а была идеальна. В основе этого метода лежит очень простая идея: на кодирование выделяется минимальное количество бит, необходимое для выполнения условия: [ошибка_кодирования]
Внутри MP3. А как оно всё устроено?
Однажды мне понадобилось решить простенькую (как мне тогда казалось) задачу – в PHP-скрипте узнать длительность mp3-файла. Я слышал о ID3 тегах и сразу подумал, что информация о длительности хранится либо в тегах, либо в заголовках mp3-файла. Поверхностные поиски в интернете показали что за пару-тройку минут решить эту задачу не получится. Поскольку от природы я довольно любопытен а время не поджимало — решил не использовать сторонние инструменты а разобраться в одном из самых популярных форматов самостоятельно.
Если Вам интересно, что там внутри – добро пожаловать под кат (трафик).
В данной статье мы не будем подробно останавливаться на извлечении ID3v2 тегов – это можно вынести в отдельную статью, так как там есть различные нюансы. А так же на фрагментах заголовков, которые практически не используются в настоящее время (например, часть Emphasis заголовка mp3-фрейма). Так же мы не рассматриваем структуру самих аудиоданных — тех самых, которые слышим из колонок.
ID3 теги
ID3 (от англ. Identify a MP3) — формат метаданных, наиболее часто используемый в звуковых файлах в формате MP3. ID3 подпись содержит данные о названии трека, альбома, имени исполнителя и т. д., которые используются мультимедиапроигрывателями и другими программами, а также аппаратными проигрывателями, для отображения информации о файле и автоматического упорядочивания аудиоколлекции.
Существует две абсолютно разных версии ID3-данных: ID3v1 и ID3v2.
ID3v1 – имеет фиксированный размер в 128 байт, которые дописываются в конец mp3-файла. Там можно хранить: название трека, исполнитель, альбом, год, комментарий, номер трека (для версии 1.1) и жанр.
Довольно быстро всем стало понятно, что 128 байт – очень уж небольшое место для хранения таких данных. И поэтому, со временем, появилась и успешно используется вторая версия данных – ID3v2.
В отличии от первой версии, теги v2 имеют переменную длину и размещаются в начале файла, что позволяет поддерживать потоковое воспроизведение. (Формат ID3v2.4 позволяет так же хранить данные и в конце файла).
Данные ID3v2 состоят из заголовка и последующих фреймов ID3v2. Например, в версии ID3v2.3 существует более 70 типов фреймов.
В данном случае вместе с заголовком ID3v2 (10 байт) – данные ID3v2 занимают 1024 байта.
После ID3v2-заголовка идут собственно теги. Подробный разбор чтения тегов ID3v2, как сказано выше, я решил не включать в эту статью.
Теперь у нас есть информация о наличии и длине тегов ID3 и мы можем приступать в разбору mp3-фрейма и понять-таки – где же хранится длительность. А заодно понять и всё остальное.
MP3-фрейм
Весь mp3-файл состоит из фреймов, которые можно извлекать только последовательно. Фрейм содержит в себе заголовок и аудио-данные. Поскольку мы не ставим себе целью написать прошивку для магнитофона – нас интересует именно заголовок фрейма.
О нем подробнее (куча таблиц и сухой информации)
Размер заголовка – 4 байта.
Режимы сжатия данных или какой бывает битрейт
Существует 3 режима сжатия данных:
CBR (constant bitrate) – постоянный битрейт. Не меняется на всем протяжении трека.
VBR (variable bitrate) – переменный битрейт. При этом сжатии битрейт постоянно меняется на протяжении трека.
ABR (average bitrate) – усредненный битрейт. Это понятие используется только при кодировании файла. На «выходе» получается файл с VBR.
Длительность = Размер аудиоданных / Битрейт (в битах!) * 8
Например, файл имеет размер 350670 байт. Есть ID3v1 теги (128 байт) и ID3v2 теги (1024 байта). Битрейт = 96. Следовательно размер аудиоданных равен 350670 – 128 – 1024 = 349518 байт.
Длительность = 349518 / 96000 * 8 = 29,1265 = 29 секунд
Необходимо пояснить – как определить режим сжатия. Всё просто. Если файл сжат с VBR – то добавляется VBR-заголовок. По его наличию мы и можем понять, что используется переменный битрейт.
Есть два вида заголовков: Xing и VBRI.
Xing размещается со смещением от начала первого mp3-фрейма в позиции, согласно таблице:
Например: у нас ID3v2 тег занимает 1024 байта. Если наш mp3-файл имеет режим канала «Стерео» — то заголовок VBR Xing будет начинаться со смещения 1024 + 32 = 1056 байт.
Заголовок VBRI всегда размещается со смещением +32 байта от начала первого mp3-фрейма.
Первые четыре байта в обоих заголовках содержат маркер ‘Xing’ или ‘Info’ для Xing. И ‘VBRI’ для VBRI.
Эти VBR заголовки имеют переменную длину и содержат различную информацию о кодировании файла. Подробнее о структуре заголовков VBR (и не только) можно почитать, например, тут.
Я же расскажу только о том, что нас интересует в данный момент. А именно – количество фреймов (Number of Frames). Это число длиной 4 байта.
В заголовке Xing оно содержится по смещению +8 байт от начала заголовка. В VBRI +14 байт от начала заголовка.
Используя таблицу Сэмплов на фрейм (Sampler Per Frame) мы можем получить длительность mp3-файла, закодированного с переменным битрейтом.
Длительность = Количество фреймов * Сэмплов на фрейм / Частоту дискретизации
Например: из заголовка VBRI получили количество фреймов 1118, сэмплов на фрейм = 1152. Частота дискретизации = 44100.
Длительность = 1118 * 1152 / 44100 = 29.204 = 29 секунд.
На этом на сегодня всё. Если был кому-то полезен — спасибо.
Для тех, кто захочет немедленно поковырять внутренности mp3 — Тут лежат скрипт на php, которые я писал для себя одновременно с данной статьей и четыре небольших mp3-файла для теста.













