Вернуться   Форум > Университет > Аудиораздел > Музыка
Регистрация Справка Пользователи Календарь Поиск Сообщения за день Все разделы прочитаны

Закрытая тема
 
Опции темы Поиск в этой теме
Старый 07.04.2024, 15:44   #1
MoyUspeh
Заблокирован
Медаль пользователю. ЗОЛОТОМедаль автору. СЕРЕБРО Завсегдатай
Аватар для MoyUspeh
Регистрация: 18.03.2013
Сообщения: 505
Репутация: 8
Ликбез: MP3-формат, особенности сжатия

Небольшая статья, которая максимально кратко расскажет об особенностях сжатия и настройках кодировщика LAME.

1. Битрейт.

CBR - режим сжатия с постоянным битрейтом. Из-за особенностей формата, существует несколько "ступенчатых" значений битрейта, а именно: 32 40 48 56 64 80 96 112 128 160 192 224 256 320 кбит/с. Исходя из этого формируются "блоки" с соответствущим потоком данных. Упрощенно при кодировании звука происходит его частотное разложение и те частоты, которые находятся "рядом" маскируются частотой, которая "громче", исключая смежные. То есть весь частотный диапазон раскладывается на "октавы" и выбирается в каждой октаве в порядке громкости те частоты, которые имеют максимальное значение амплитуды. Заполнение информацией об этих коэффициентах происходит в порядке убывания их "веса", то есть например в битрейте 160 кбит/с будет в 2 раза меньше различных частот, чем например в 320 кбитах/с. Естественно алгоритм гораздо сложнее, но я пытаюсь объяснить просто, "на пальцах". Все бы хорошо, если бы не одно но. Существует так называемое "пороговое" значение количества отрезанных частот, при котором звук меняет своё "качество" для восприятия человеком, поэтому, чтобы сохранить приемлимое качество звука, кодировщик начинает отсекать те частоты, слышимость которых не так сильно повлияет на качество, то есть начинает "резать" частоты с верхних значений до 16 кГц. В зависимости от "сложности" звука этот эффект имеет непостоянное зачение. То есть если битрейта "хватает" для полного спектра - то частоты не режутся и идет полное заполнение данных, если битрейта не хватает - происходит "срез".

Для примера и наглядного объяснения рассмотрим один и тот же звуковой файл на разных битрейтах при одинаковых настройках кодирования (с отключенным LowPass фильтром, про это будет другая статья):
Оригинальный файл (исходник) , 320 кбит/с , 256 кбит/с , 128 кбит/с .
Я использовал три постоянных битрейта для наглядности. По спектрограммам хорошо видно, как работает алгоритм "отсекания" частот выше 16 кГц в зависимости от "наполнения" блоков данных.
В этом и состоит различие звука в зависимости от битрейта, и по спектрограммам легко определить эффективность использования данных при сжатии.

VBR режим - это когда каждый блок кодируется на основании определенного качества звука, где пороговое значение "отсечения" частот одинаково, то есть качество звука неизменно на всем файле, а меняется лишь его битрейт, причем это не произвольное значение, а всё те же 32 40 48 56 64 80 96 112 128 160 192 224 256 320 на блок. То есть это не совсем VBR, а "ступенчатый" CBR. Из плюсов - на битрейтах ниже 320 достигается лучшая эффективность сжатия за счет неизменности качества, а не битрейта. К сожалению, не имеет возможности кодировать блоки с битрейтом выше 320, поэтому ВСЕГДА проигрывает в качестве звука по сравнению с режимом CBR 320 кбит/с при прочих равных.

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

Последний раз редактировалось MoyUspeh, 07.04.2024 в 21:43.
 
Старый 07.04.2024, 16:07   #2
MoyUspeh
Заблокирован
Медаль пользователю. ЗОЛОТОМедаль автору. СЕРЕБРО Завсегдатай
Аватар для MoyUspeh
Регистрация: 18.03.2013
Сообщения: 505
Репутация: 8
2. Режимы: Stereo, J-Stereo, Force Joint, Dual Chanel.

Для оптимизации сжатия разработчики придумали простой способ как можно сэкономить данные и разместить больше информации о частотах в заданном битрейте. Для этого они используют режим Joint Stereo. Суть его в следующем, возьмем все тот же наш исходный файл, и вместо того, чтобы кодировать каждый канал в отдельности, мы будем кодировать их сумму сигналов и разность. При декодировании процесс будет идти в обратную сторону. То есть фактически мы будем кодировать монозвук и его "стереобазу". Как правило в нижних частотах (ударники, голос певца) звук в обоих каналах одинаковый, это позволяет существенно сократить количество кодируемой информации и достичь лучшего качества при одинаковом битрейте.

Теперь расшифруем ключи кодирования и в чем разница:

-m j - J-stereo - это режим, когда кодировщик сам решает, какой вариант сжатия для текущего блока подходит лучше, Stereo или Joint Stereo и кодирует его по выбранному алгоритму. К сожалению, он принимает решение об эффективности ДО сжатия, то есть не может знать ТОЧНО, какой вариант будет лучше. Анализ происходит лишь на основании исходных данных, а не сжатых по двум вариантам. Это его недостаток. Рекомендуется для "старых" записей с высокими шумами, эмфазисом и различным поканальным уровнем записи.

-m s - Stereo - неэффективный вариант, когда каждый канал кодируется независимо, не рекомендуется.

-m d - Dual Chanel - разница по сравнению с режимом Stereo лишь в том, что кодируются оба канала независимо с РАВНЫМ битрейтом (половине на каждый канал), тогда как в режиме Stereo битрейт распределяется согласно "весу" данных на тот канал, где потребность в данных выше. Например если в одном канале тишина, а в другом есть звук - то весь битрейт в режиме Stereo заберет канал со звуком. Самый неэффективный вариант сжатия, категорически не рекомендуется.

-m f - Force Joint Stereo - это режим, когда все блоки кодируются в Joint-Stereo режиме. Самый эффективный вариант сжатия на данный момент. Рекомендуется для всей качественной современной музыки, у которой, как правило, нет проблем с шумами, эмфазисом и разностью по уровням записи каналов. В этом режиме достигается максимальная эффективность использования данных, соответсвенно максимальное результирующее качество звука.

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

Последний раз редактировалось MoyUspeh, 07.04.2024 в 22:54.
 
Закрытая тема


Здесь присутствуют: 1 (пользователей - 0 , гостей - 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск



Часовой пояс GMT +3, время: 10:29.