DIGITAL LIBRARY  
  Цифровые форматы | МАГАЗИН - Цифровая Техника  
" Качество - Наш Стиль !!! "  
PORTA.ru - on-line магазин ПОРТАтивной техники.PORTA.ru - on-line магазин ПОРТАтивной техники.
Разделы
Цифровая стационарная электронника
Портативная Техника
MPEG
Графика
Audio CD
 
 
Рекомендации по использованию стандарта сжатия 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.

 
 
Цифровые форматы | МАГАЗИН - Цифровая Техника
Copyright 2003 A-VIDEO   Hачало    -    Email                материалы www.alexsoft.ru      design by Finerdesign.com
Hosted by uCoz