
| Процессоры | Системные платы | Видеосистема | Носители информации | Мультимедиа | Периферия | Коммуникации | Поиск по сайту |
Тестирование MPEG Layer 3 (MP3) кодеровПредисловиеПару слов о стиле изложения. Я хотел сделать материал, изложенный здесь, доступным для максимально большого круга читателей. Поэтому информации очень много, и, почти наверняка, ее больше, чем кому-либо нужно. Так, например, человеку не искушенному в технологиях звукозаписи не будет интересно смотреть на графики с чисто техническими характеристиками звука; а специалисту нет нужды читать, что такое децибелл. Таким образом, прошу вас, если вам какой-то раздел вам не интересен, просто пропустите его. Возможно, он будет интересен кому-то другому. Прежде всего я хочу очертить круг вопросов, которые я хотел выяснить для себя, проведя это тестирование. Я решил собрать себе фонотеку и сохранить записи в формате MP3. В связи с этим у меня возникло 2 вопроса:
То есть изначально я планировал сохранять аудио-информацию в двух копиях: одна со сжатием побольше (п. 1) - для ежедневного использования, другая с претензией на максимальное сохранение качества (п. 2) - для использования в будещем, скажем, для записи избранных песен на CD или для переведения фонотеки на новый, более прогрессивный и качественный формат. Таким образом сразу можно выделить мои предпочтения к кодерам: скорость работы меня не интересовала вообще, степень сжатия (а, значит, и размер результирующего файла) меня интересовали по стольку по скольку. Главным критерием было качество. Прошу вас, еще раз внимательно перечитайте предисловие и не задавайте мне вопросы типа "А почему ты не любишь Xing (как вариант: формат vqf, или еще что-нибудь)? Он ведь быстрый, и качество сносное." Меня не устраивает сносное качество при высокой скорости, компактности и прочем. Мне нужно максимально возможное качество передачи звука, даже ценой размера и скорости кодирования. Описание метода тестированияПри помощи программы Digital Audio Copy for Win32 (WinDAC) 1.49 были созданы копии 2-х записей с CD в WAV-файлах. Записи были выбраны по следующим критериям: различимое на слух наличие высокочастотной составляющей, наличие нетривиальных стереоэффектов, наличие песен в моей небогатой фонотеке на CD. В итоге я выбрал Dog New Tricks от Garbage (из альбома Garbage) и Gone Away от Offpring (из альбома Americana). Я отлично знаю, что куда как больший динамическией диапазон звука не у рок-музыки, а у, скажем, симфонической музыки. К сожалению, ее нет на CD у меня дома. Как только у меня появится возможность взять где-то CD с классикой в исполнении органа или симфонического оркестра, я проведу новый этап тестов. Потом я создавал файлы формата MP3 при помощи нескольких кодеров. С помощью каждого кодера было создано несколько файлов - со всеми степенями сжатия меньше, чем 11:1 (128 kbps) включительно, которые поддерживает данный кодер. После этого файлы формата MP3 были декодированы в файлы формата WAV и дальнейшая работа велась уже с этими WAV-файлами. Это сделано для того, чтоб ликвидировать искажения, вносимые проигрывателями MP3-файлов. Для декодирования MP3 использовался декодер l3dec V2.71 ISO/MPEG Audio Layer III Software Only Decoder от Fraunhofer-IIS - организации, которая первая разработала и начала распространять коммерческий программный кодер и декодер MP3. Популярность, которую приобрел данный кодер, а также то, что Fraunhofer-IIS продает свои продукты для самых серьезных приложений, оставляет надежду, что декодирование файлов происходит в строгом соответствии со стандартом ISO MPEG (многие проигрыватели MP3 пытаются как-то улучшить качество звучания и единственное что у них получается наверняка - это внести дополнительные искажения). В случае, если файл невозможно декодировать при помощи l3dec (некоторые файлы со сжатием 4:1, 320 kbps), использовался WinAmp 2.24, декодер которого построен также на основе кода от Fraunhofer-IIS. Далее при помощи программы CoolEdit Pro 1.1 (в последнее время - версии 1.2) анализировались первые 30.000 секунд каждого файла и строилсиь амплитудно-частотные характеристики (АЧХ) отдельно для левого, правого каналов и условного центра (смесь левого и правого каналов в пропорции 1:1). Так уж этот CoolEdit устроен, но нормально эти АЧХ выглядят только в диапазоне от 350 Гц до 21.7 кГц. Для дальнейшего анализа АЧХ я написал программу на языке Object Pascal в среде Borland Delphi 3 - программа очень сильно привязана к локальной структуре каталогов и именам файлов у меня на винчестере, поэтому вам наверняка не удастся запустить ее сразу. Тем не менее - вот ее исходные тексты (20.5 Kb). Программа имеет на входе набор копий экрана (screenshot'ов) из CoolEdit'а с АЧХ, а на выходе создает набор более-менее оформленных рисунков с этими АЧХ и графики сравнения АЧХ оригинальной записи с CD с АЧХ файла MP3. Именно эти графики наиболее наглядно представляют информацию о качестве кодирования, именно они и представлены на этой странице. Впрочем, при помощи ссылок вы сможете получить доступ ко всем графикам и АЧХ. Программа использует несложные формулы, которые описаны в соответствующем разделе. Описание терминов
Напомню, что стандарт ISO MPEG Audio Layer III предусматривает сжатие с потерями качества, причем потери тем больше, чем больше степень сжатия. Между степенями сжатия и битрейтами существует регламентируемая стандартом однозначная зависимость:
(Таблица не полная, тут перечисленны только битрейты, которые я использовал в тестировании. Таблица составлена в предположении, что на вход подаются аудиоданные в формате PCM 16 бит, стерео, с частотой дискретизации 44 кГц.) Использовавшиеся формулыКак уже упоминалось, наиболее наглядно информация о качестве кодирования показана на графиках, где сравниваются АЧХ оригинального и закодированного файлов. Учитывая то, что CoolEdit строит АЧХ в дБ, нетривиально как сравнивать величины с АЧХ. Тем более, что результирующие графики я хотел тоже построить в дБ: отношение уровня сигнала закодированного файла к уровню сигнала оригинала.
Обозначим уровень сигнала как Ux. Нас интерисует величина
Эта же величина в дБ равна
Выполним простые математические преобразования в (2): |
|
|
Считая что
получим
Строго говоря, у нас нет никаких оснований считать, что (4) верно. Но, учитывая то, что в обе части равенства относятся к одной и той же записи (оригинальный вариант и закодированный), будем считать что при кодировании максимальный уровень сигнала не изменяется или почти не изменяется. Таким образом мы получили удобную формулу (5) для анализа АЧХ и построения интересующих нас зависимостей. Формула (5) используется в программе для анализа АЧХ, которая упомянута выше. Использовавшиеся кодерыНа сегодняшний день существует 3 основных источника, создавшие программы для кодирования музыки в MP3. Это уже упоминавшийся Fraunhofer-IIS, Xing Technologies и собственно ISO, которая приложила к стандарту ISO MPEG демонстрационный свободно распространяемый (но весьма медленный) код. Львиная доля созданных на сегодня кодеров использует код одной из этих организаций. Кодеры на основе кода от Fraunhofer-IIS работают достаточно быстро, весьма качественно, но не обеспечивают степень сжатия 4:1 (320 кб/с). Кодеры на основе кода от Xing быстры но некачственны. Кодеры на основе кода от ISO очень медленны (демонстрационный код совсем не оптимизирован), обеспечивают высокое качество и степени сжатия вплоть до 4:1. Итак: AudioCatalyst by Xing Technology Corporation - version 2.1Коммерческий кодер от Xing Technology Corp. Весьма оригинальная программа: представляет собой оригинальный код от Xing Tech в режиме "без высоких частот" и код от Fraunhofer'а оптимизированный по скорости (качество, соответственно упало, но все же лучше чистого Xing'а) в режиме "сохранения высоких частот". Все это - в одном блоке с программой для копирования музыки с CD - AudioGrabber. Работает очень быстро, но качество оставляет желать лучшего, хотя опять же: при "сохранении высоких частот" качество лучше оригинального Xing'а, хотя и до Fraunhofer'а не дотягивает. Домашняя страница - http://www.xingtech.com. Интерфейс программы полностью позаимствован у AudioGrabber'а. BladeEnc : Blade's MP3 Encoder - version 0.82Свободно распространяемый кодер, написанный Тордом Янсоном (Tord Jansson). Представляет собой оптимизированный код от ISO. Работает быстрее, чем "чистый" ISO-код, но в интернете есть сообщения о некорректной работе на степени сжатия 11:1 (128 кб/с). Домашняя страница - http://bladeenc.cjb.net. Интерфейс программы только из командной строки, но в интернете есть полно программ-оболочек к Blade. Я использовал Bladebatch 2.97 SE Евгения Логинова, тоже свободно-распространяемая программа, домашняя страница на eal.da.ru. LAME : LAME Ain't an Mp3 Encoder, version 3.24Свободно распространяемый патч для исходного кода ISO, разрабатываемый группой энтузиастов. Представляет собой оптимизированный код от ISO. Распространяется в виде набора исходных файлов, которые являются дополнениями и исправлениями исходного кода ISO (Это сделано для обхода законов про лицензирование программ кодирования MP3 фирмой Fraunhofer. Ведь LAME это не программа, это набор исходников, значит ее нельзя запретить к свободному распространению :) Тем не менее в интернете легко найти уже компилированые варианты LAME под любую ОС.). Работает быстрее и качественее, чем "чистый" ISO-код. Домашняя страница - http://www.sulaco.org/mp3. Интерфейс программы только из командной строки. Примечание: этот кодер тестировался в двух режимах: со включенной и с выключенной психоаккустической моделью (LAME -f). Это не 2 разных кодера, а всего лишь 2 режима работы одного кодера, хотя они и отличаются по результату. MP3 Compressor v. 0.9f by MP3hCСвободно распространяемый кодер на основе кода от Fraunhofer IIS, написанный неким MP3hC. Является дальнейшем развитием l3enc - а именно переписанная версия того же алгоритма. За счет оптимизации программа работает в 3 раза быстрее (со слов автора). Поддерживает только степень сжатия 11:1 (128 кб/с). Веб страница - http://www.chez.com/mp3hc/. Интерфейс программы очень удобный и имеет уникальную в своем роде возможность изменения приоритета выполнения программы кодирования непосредственно во время кодирования файлов. MP3 Encoder : MPEG Layer-3 Encoder V3.1 Demo by Fraunhofer IIS-AСвободно распространяемая демо-версия коммерческого кодера от Fraunhofer IIS. Является дальнейшем развитием l3enc, который упоминался выше. Не поддерживает степень сжатия 4:1 (320 кб/с). Веб страница - http://www.iis.fhg.de/audio/. Интерфейс программы только из командной строки, но в интернете есть полно программ-оболочек. Я создавал обычные пакетные (batch, *.bat) файлы. Эта демо-версия кодирует только первые 30 секунд файла. MP3 Producer : .mp3 Producer v. 2.1 (Build 47) by Fraunhofer-Gesellschaft - IISКоммерческий кодер от Fraunhofer IIS. Является дальнейшем развитием l3enc, который упоминался выше, но ушел от него очень и очень далеко. Не поддерживает степень сжатия 4:1 (320 кб/с). Веб страница - http://www.iis.fhg.de/audio/. Интерфейс программы не самый лучший, но все же лучше, чем командная строка. mpegEnc : mpeg Encoder v. 0.07 by SoloHСвободно распространяемый кодер, написанный неким SoloH. Представляет собой оригинальный код от ISO. Работает медленно, но точно качественно. Домашняя страница - http://www.isafeelin.org/soloh/mpegEnc.html. Интерфейс программы весьма и весьма хорош. Xing : XingMP3 Encoder 1.02 by Xing Technology CorporationКоммерческий кодер от Xing Technology Corp. Представляет собой оригинальный код от Xing Tech. Работает очень быстро, но качество оставляет желать лучшего. Домашняя страница - http://www.xingtech.com. Интерфейс программы весьма оригинален но не очень удобен. Xing : XingMP3 Encoder 1.5 by Xing Technology CorporationНовая версия коммерческого кодера от Xing Technology Corp. Оригинальный код от Xing Tech. Работает очень быстро, но качество оставляет желать лучшего - за время с выхода предыдушей версии был введен режим "сохранения высоких частот", но и он не спасает положения, хоть все-таки высоких частот чуть-чуть добавляет. Домашняя страница - http://www.xingtech.com. Интерфейс программы совсем не измеился. Результаты тестированияПоддержка битрейтов
Поддержка стерео режимов
По стандарту ISO MPEG существует несколько способов кодирования стерео сигналов:
Некоторые кодеры позволяют в явном виде выбирать режим кодирования стерео сигнала, другие выбирают автоматически. Следуюшая таблица иллюстрирует это:
Обозначения: JS - joint stereo, S - stereo, DC - dual chanel; если указано несколько значений, значит программа допускает выбор режима. Первым указан режим использовавшийся при тестировании. Скорость кодированияКак я уже говорил, для меня этот параметр не критичен: если программа работает качественно, то я согласен подождать. Тем не менее, для того, чтоб тестирование было более полным, я протестировал и производительность кодеров.
Для тестирования скорости кодирования я отрезал по 30.000 секунд от WAV-файлов с записью песен с CD. В
таблице приведено время кодирования 30 секунд песни Garbage, ниже - Offspring'а. Все тесты проведены
на моем домашнем компьютере (Pentium 60 МГц, ОЗУ 24 МБ, ОС Windows 98). Во время тестирования запущены
только 2 программы - "Свойства: Дата и время" из "Панели управления" (там часы с секундомером)
и кодер (на переднем плане). Если программа поддержавает выбор приоритета выполнения операции кодирования, то
выбирался приоритет Normal.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||