Рекомендации по использованию стандарта сжатия mp3 на практике.

   

По порядку:

 

 

 

 

Как следует из названия, эта статья посвящена описанию некоторых тонкостей, которые возникают при использовании стандарта сжатия аудиоданных MPEG I/II Layer 3 (mp3). Здесь нет описания какой-то законченной работы вроде тестирования кодеров или проигрывателей mp3, тут я попытался структурировать и изложить свои знания, отразить свой опыт в работе с вышеупомянутым стандартом сжатия.

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

Стратегические вопросы

В этом разделе я рассмотрю вопросы общего плана, не касающиеся непосредственно процесса сжатия.

Имеет ли смысл вообще использовать сжатие с потерями?

Я уверен, что не имеет смысла делать архивы звуковых данных (библиотеки сэмплов, фонотеки и т.п.) в mp3 (это касается и MiniDisk, так как там тоже используется кодирование с потерями, и других форматов). После этого звук нельзя обработать: при использовании многих способов цифровой обработки появляются слышимые искажения, из-за этого нельзя хранить, скажем, сэмплы в mp3. Нельзя никак восстановить утраченные на этапе кодирования части, улучшить звук. То есть это дорога в одну сторону.

Для себя я выбрал хранение фонотеки в wav-файлах. Можно также использовать CD-DA: больше совместимость, но меньше надежность, что меня не устраивает. Еще одна альтернатива - сжатие без потерь, например обычное архивирование (ZIP, RAR) или специальные программы типа RKA, Monkey's Audio. Этот способ порождает множество проблем при работе с этими файлами: wav играют подавляющее большинство проигрывателей, а вот экзотику типа RKA... Я знаю о существовании плагина для RKA под WinAmp, но на WinAmp свет клином не сошелся. В любом случае, один только WinAmp - это не есть совместимость в моем представлении. А другие программы-проигрыватели? А аппаратные плееры? А mp3-CD плееры? Не знаю, как для вас, а для меня совместимость, именно в смысле, указанном выше, очень важна. Я не согласен использовать только одну пару кодер/проигрыватель - это существенно ограничивает мою свободу. Например, для того, чтобы поделиться каким-то файлом со своими знакомыми (оставим пока в стороне вопросы авторских прав) нужно еще убеждать их в необходимости использовать новый проигрыватель.

Хранение wav-файлов позволит мне в случае изобретения некоего принципиально нового и лучшего алгоритма, условно назовем его mp6, быстренько перегнать все свои записи в новый, более качественный формат из точных копий оригиналов, в то время как самих оригиналов может уже и не быть под рукой... Вспомните, аналогичная ситуация возникла, когда начал свое победное шествие формат видеосжатия MPEG4, в этом случае архаизмом считался MPEG 1/2.

Еще аргумент: вы знаете, как аудио-диск, перегнанный в mp3, записать обратно на аудио компакт диск, да так, чтобы между треками не было ни пауз лишних, ни щелчков? Не знаете? Почитайте, скажем, http://www.r3mix.net/. В общем, та еще морока... (Если вы хотите сказать - "а я вот делал - все ОК!" - конкретизирую задачу: музыка без пауз переходит из трека в трек, как на концертах, или у Enigma. Паузой считается не только промежуток в 1-2 секунды, а и маленькие отрезки тишины в единицы-десятки миллисекунд. Знаю, теоретически и в этом случаем можно все сделать идеально слитно, но объемы затрат времени и труда в случаях исходного материала в wav и mp3 просто несоизмеримы.)

Какой формат сжатия с потерями лучше использовать: mp3, LQT, WMA, MP+ или какой-то ещё?

До сих пор я для себя использую простой принцип: никаких экспериментов с форматами. Пока ни одна из альтернатив mp3 даже близко не лежала по качеству и совместимости одновременно. Есть такие, которые имеют приемлемое качество, ну а совместимость? (Про совместимость еще много сказано в ответе на предыдущий вопрос.)

Я знаю, что есть такие форматы, которые уже сегодня обеспечивают качество, сравнимое или даже лучшее, чем у mp3, например LQT AAC, который часто называют mp4. Правда, у него битрейт ограничен до 192 кб/с, за что его не любят ценители mp3 @ 256/320 kbps. И запросы к аппаратуре у него куда как серьезнее, в сравнении с mp3. Последнее, правда, в свете бурного развития вычислительной техники является проблемой временной. Тем не менее, думаю, вы согласитесь, что с совместимостью mp3 пока никому не сравниться.

Мое мнение: вытеснять mp3 будут долго. Вы посмотрите на CD-DA, которому пророчили скорую смерть по появлении mp3, MiniDisk и прочее. Вот что значит - объем уже накопленной информации в старом формате.

У mp3 есть своя область применения. Ведь неудобно каждый час вставлять новый музыкальный диск в дисковод, когда объем винчестера составляет десятки гигабайт. Куда как удобнее записать музыку в mp3 на винчестер или CD-ROM и слушать оттуда. Тут же можно вспомнить о плеерах mp3, mp3-CD, автомагнитолах с поддержкой mp3. Вспомните про выкачивание mp3 из Интернета. Я, например, держу дома около 5 ГБ mp3, в основном 128 кб/с, не потому, что я такой глупый, а потому, что 90% из этих файлов делал не я. Пока эти записи не появились в моей фонотеке в wav - пусть лежат.

Из каких соображений нужно исходить при выборе параметров сжатия?

По моему мнению, можно выделить два режима сжатия: "сохранение приемлемого уровня качества при достижении максимального сжатия" и "полное сохранение качества исходного материала при хоть каком-то сжатии". Правда, стоит заметить, что и тот, и другой пороговые битрейты (и для того, и для другого режимов) сугубо индивидуальны. Так, для меня они составляют 128 и 256 кб/с соответственно.

Я считаю, что неразумно беспокоить себя вопросами в духе "а какого битрейта достаточно, чтобы никто не услышал разницу по сравнению с CD?" Делайте для себя. Особенно если есть склад точных копий, из которых при необходимости можно сделать mp3 с любыми необходимыми параметрами, или даже гипотетические mp6.

Дело в том, что психоакустическая модель, основная часть сжатия mp3, разрабатывается под среднестатистического человека с его среднестатистическими ушами. Достаточно часто можно встретить отклонения как в одну сторону ("А зачем весь сыр-бор городить? Для меня качество mp3@128 kbps, сделанного Xing'ом, ничуть не хуже Audio CD. Я даже на отличной аппаратуре не слышу разницы".), так и в другую ("А вот моя жена/друг/кум/сват/брат запросто отличает mp3@320 kbps от Audio CD. Я даже слепое тестирование провел с записью сэмплов на CD-R, набором из десятков композиций самых разных стилей - оказалось вероятность ошибки практически 0%"). В первом случае вам не нужно тратить много денег на качественную аудиотехнику, а во втором можете порадоваться за ее/его тонкий слух. Так бывает. Чувствительность слухового аппарата индивидуальна.

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

Какой проигрыватель mp3 лучше?

Я сам не занимался сравнением и прослушиванием, тем не менее, попробую ответить, исходя из услышанного от других. Среди программных проигрывателей лучшими традиционно считаются все, сделанные на коде Fraunhofer: некоторые версии WinAmp'а, WinPlay, AudioActive, Microsoft Windows Media Player,... (Код от Фраунгофера используется в WinAmp версий 1.6, 2.20, 2.21, 2.22, 2.666, 2.7, остальные версии используют собственный декодер от NullSoft, называемый Nitrane). Также заслуживает упоминания X-Audio и все, что сделано на этом коде (C4, CoolPlay). Еще есть множество проигрывателей, сделанных на коде ISO, среди самых удачных можно выделить MPG123 и мой любимый Apollo (он хоть и не столь идеален при воспроизведении, зато очень удобен). Все, что сделано на коде Xing (Xing player, FreeAmp) считается самым худшим вариантом - эти проигрыватели задирают высокие частоты, что сделано, по-видимому, для компенсации завала высоких всеми кодерами Xing.

В области аппаратных проигрывателей mp3 я знаю совсем мало, но в любом случае, различная аппаратура использует, как правило, те же алгоритмы, что и программные проигрыватели. Я читал об аппаратной реализации алгоритма Fraunhofer в какой-то микросхеме. Некоторые проигрыватели даже содержат flash-микросхемы для того, чтобы иметь возможность обновлять декодер mp3. В любом случае, советую обращать внимание как минимум на то, на основе какого кода построен алгоритм декодирования. Считается, что все на основе Fraunhofer - хорошо, ISO и X-Audio - зависит от реализации, Xing - однозначно плохо.

Лейм - это ISO код или нет?

Изначально лейм делался как патч (исправление или замена нескольких файлов) для оригинального кода ISO, при этом упор делался на исправление ошибок и совершенствование алгоритма (например, использование коротких блоков). Но уже где-то с полгода назад на версии около 3.6 было замечено, что весь код ISO изменен, и лейм свободно компилируется без оригинальных исходников ISO - все, что нужно для компиляции вошло в патч. Так что на сегодня лейм можно называть ISO кодером только в историческом плане, с точки зрения алгоритма там столько изменено, что проще считать лейм самостоятельной разработкой. Причем разработкой достаточно качественной и перспективной - сейчас лейм уверенно конкурирует с кодерами на основе кода от Fraunhofer как по скорости, так и по качеству.

Что лучше, LAME или Fraunhofer-based кодеры?

Ну... Одним нравится арбуз, другим - свиной хрящик. Единственное, что могу сказать наверняка, что все ISO-based кодеры, а тем более на базе Xing, сегодня использовать смысла не имеет. Лейм впитал в себя все лучшее от ISO и двинулся догонять Fraunhofer, быстро двинулся. Кто-то считает, что уже догнал. Кто-то считает, что лучше не рисковать, а использовать старый добрый Fraunhofer. За ним опыт такой серьезной организации! Ведь у лейма версии появляются каждый день, постоянно в старых версиях ошибки находят. Да, все так. У Фраунгофера тоже находят, но не исправляют годами - разве это лучше? К тому же координатор проекта лейм принял решение с какой-то регулярностью делать stable версии, то есть такие, в которые не вносится никаких новшеств (которые могут содержать ошибки), а только исправляются старые огрехи. Текущая stable - 3.70. Ради большей уверенности в качестве получаемых мп3, имеет смысл использовать именно её. Хотя, мне очень не советовали это делать. Мол, в 3.8х добавили новые возможности, в частности ABR, и улучшили качество.. Но я обычно боюсь непроверенных временем решений.

Замечу, однако, что последняя бета версия - 3.87 - продержалась уже 2,5 месяца. Это наталкивает на мысли о том, что в ней за такой срок не замечено сколько нибудь серьезных огрехов. Для меня этих аргументов достаточно, чтобы сделать свой выбор в пользу 3.87.

По крайней мере, VBR в лейме - точно лучше Fraunhofer'а, хотя и тут он далек от идеала.

Подготовка материала перед сжатием

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

Надо ли понижать уровень файла?

Да, если пиковый уровень исходного сигнала около 0 дБ, иначе при кодировании имеете шанс получить искажения сигнала. Из-за того, что будет использовано сжатие с потерями, исходный сигнал будет восстановлен не точно, а приблизительно. Таким образом, на участке с пиковой амплитудой вы имеете шанс получить превышение пикового уровня сигнала, что и повлечет за собой искажения. Количество искажений будет зависеть от кодера и битрейта (чем выше битрейт, тем меньше искажений). Естественно, чтобы быть гарантированно защищенным, уровень исходного сигнала лучше занизить перед сжатием.

На сколько понижать? Вопрос спорный. Нужно также считаться с тем, что при понижении уровня и передискретизации также будут возникать искажения исходного сигнала. Естественно, что куда как меньше искажений передискретизации будет внесено при понижении в 2 раза, но это достаточно большое понижение громкости. Другие предпочитают целые числа децибелам, указывая, скажем, -3 дБ.

Поскольку наличие искажений от превышения пикового уровня сигнала зависит от битрейта и кодера, приведу здесь наблюдения одного из моих знакомых: "при 320 + лейм нормально - 98%, а при 128 - 85-88% от максимального уровня (100% = 0dB) ." Я сам с такими файлами не экспериментировал.

Надо ли использовать нормализацию?

Практически всегда - нет. Есть такой принцип: невмешательство в работу исполнителя и звукорежисера. Если что-то звучит тише - оно так и должно звучать по задумке. Это все равно, что вы читаете книжку с главной героиней-брюнеткой, но представляете ее себе блондинкой, потому что вам так больше нравится. Это будет уже не та книжка (или песня, соответственно), а ваша вольная обработка.

Тем более неразумно в свете предыдущего вопроса выглядит нормализация под очень высокий уровень (часто 98% или даже 100%).

Таким образом, нормализация при работе с материалом, полученным с аудио компакт-дисков практически никогда неприменима, а при работе с другими записями - только в случае очень уж низкого уровня сигнала и только для альбома целиком (а не для каждой песни). Ведь, часто, отдельные, более лирические композиции, выделяются пониженной громкостью.

Тут также справедливы оговорки, сделанные в предыдущем вопросе, по поводу увеличения уровня в целое число раз, если такая возможность есть - ведь нормализация - это суть передискретизация с новым уровнем сигнала.

Тонкости процесса сжатия

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

Надо ли в Лейме выключать психоакустику (-f)?

Думаю, нет. Обратите внимание на то, что лейм очень быстро развивается. Год назад я тестировал версию 3.24. Сейчас актуальная версия 3.87. В той старой версии, я действительно слышал разницу между файлом, сделанным со включенной психоакустикой и с выключенной. Последний вариант мне нравился больше. Но идеологически это неверно, с точки зрения теории кодирования mp3. Психоакустика составляет неотъемлемую и достаточно важную часть алгоритма сжатия. Так что это была скорее ошибка тех версий лейма - плохо реализованные алгоритмы психоакустики. Ошибку исправили. Тут же могу повторить - кодируйте для себя. Возьмите и послушайте, сравните.

Таким образом, теоретически это неверно, отключать полметода - психоакустику. Практически - попробуйте проверить сами.

Какой режим кодирования стерео сигнала лучше: stereo или joint stereo?

По-разному бывает. Если вы понимаете, в чем разница, то сможете сами придумать пример, когда лучше одно, а когда - другое. Следует учесть, что некоторые записи содержат сдвиг фаз между каналами, что практически исключает возможность использование joint stereo. Правда, есть специальное ПО, которое находит и корректирует такой сдвиг, однако использование еще одной программы в процессе сжатия не делает этот самый процесс проще. Где взять такую программу - сказано в разделе ссылок.

Отметьте, что последние версии лейма умеют автоматически выбирать для каждого фрейма, что лучше: stereo или joint stereo. Именно такой режим я и использую.

Использовать ли переменный битрейт (VBR)?

Проблема в том, что под VBR (Variable BitRate - переменный битрейт) нужна своя психоакустическая модель, которая и будет управлять изменением битрейта. Раньше кодеры использовали CBR (Constant BitRate - постоянный битрейт) и пользовались принципом "обеспечить максимальное качество, упаковывая данные в поток заранее заданной ширины". Переменный битрейт требует совершенно другого подхода - "обеспечить заданный уровень качества, использую поток минимальной ширины", поэтому алгоритмы сжатия для VBR нужно создавать заново, практически с нуля. Из-за этого пока достаточно развитым прообразом такого алгоритма обладает только лейм, как самый быстро развивающийся кодер. Ни Ксинг, ни Фраунгофер качественного результата в области VBR не добились - их алгоритмы варьируют средний битрейт в пределах 10-15% от основного, что нельзя считать удовлетворительным результатом. Все это, очевидно, есть результаты попыток адаптировать алгоритмы CBR для использования с VBR, забывая, что старые алгоритмы вообще не имели возможность изменения битрейта.

Проблема также состоит в том, что до сих пор не существует сколько-нибудь точной математической модели человеческого слуха. Поэтому разработка психоакустических алгоритмов ведется в основном опытным путем, методом проб и ошибок, постоянных прослушиваний и других тестов. Поэтому тем сложнее построить алгоритм, получающий на вход некий "уровень качества", так как не до конца ясно, как этот уровень качества связан с прочими параметрами алгоритма, в частности с битрейтом. Хотя бесспорно, что человеку, далекому от этой технологии, куда как проще оперировать с параметром, непосредственно задающим уровень качества сжатия, чем с некими внутренними параметрами алгоритма.

На этом фоне вполне логичным выглядит появление компромиссного варианта - ABR (Average BitRate - средний битрейт) - реализованного в LAME. По сути, это тот же VBR, но с использованием несколько доработанного старого алгоритма кодирования CBR. В случаях, когда качество падает ниже некоторого порога - битрейт увеличивается. Если кодируемый сигнал достаточно прост, то битрейт занижается, чем и обеспечивается получение в среднем по файлу приблизительно заданного битрейта. В результате мы получаем обычный файл с VBR потоком. В качестве параметра мы указываем не некий абстрактный уровень качества, а средний битрейт, который мы хотим получить - много людей, давно работающих с mp3 CBR, найдут такой способ более удобным просто в силу своих привычек.

Тут же имеет смысл упомянуть о том, что некоторые проигрыватели не умеют корректно воспроизводить VBR. Например, очень качественный проигрыватель NAD дает ужасные искажения при воспроизведении таких файлов; просто когда этот проигрыватель был создан, ни один из кодеров не использовал VBR. Аналогичную проблему в себе таят некоторые из аппаратных проигрывателей mp3.

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

На сегодня вопрос практического использования VBR я считаю следствием личных пристрастий и экспериментов.

Есть ли для LAME оконные оболочки?

Есть, самые популярные - LameBatch и RazorLame, первую я сам использовал раньше, пока не увидел вторую :)

Чем и как ты сам кодируешь музыку?

Леймом, 3.87. На 128 CBR, психоакустика включена. Для того, чтобы показать друзьям-товарищам - хватает. У самого уши не вянут, да и вслушиваться, дабы найти отличия от оригинала, не хочу. То есть это режим "сохранения приемлемого уровня качества при достижении максимального сжатия". Опять же, весь материал, достойный хранения в моей фонотеке, записывается в формате wav.

 

 

 

Вернутся на главную   Вернутся на предыдущую.

Rambler's Top100   

 

Сайт управляется системой uCoz