Звук и акустика

Кодирование MPEG-4 в DivX 4.11



Обычно преобразование DVD в популярный формат MPEG-4 занимало большее время по сравнению с продолжительностью фильма, но недавно произошел существенный сдвиг в направлении ускорения кодирования. Во-первых, Intel помогла сделать процесс кодирования в DivX 4.11 существенно быстрее. Во-вторых, несколько популярных программ увеличили свою функциональность, что позволило улучшить производительность. Таким образом, одновременное преобразование DVD видео и Dolby Digital аудио в реальном режиме времени постепенно становится реальностью. До недавних пор это относилось только к MPEG-4 видео.

Lehmen comments: На самом деле, кодирование в реальном времени возможно, если не сильно (или совсем не) заботит качество выходного материала. Чего на практике не происходит при кодировании именно DVD в Divx. Кроме совершенно жуткого качества изображения, использование методик, описанных в данной статье, совсем не гарантирует отсутствие проблем со звуком. Поэтому данная статья представляет интерес (и не малый) только как сравнение процессоров и кодеков, с точки зрения оптимизации одного под другое. Использовать её как руководство к действию при кодировании видео нельзя.

Чем же помогла Intel?

Итак, Intel помогла оптимизировать DivX кодек. Команда разработчиков Intel пришла на помощь разработчикам ПО. Intel тщательно проанализировала исходный код и, соответственно, оптимизировала его под SSE. Таким образом, и появилась оптимизированная под SSE версия 4.11. К тому же Intel выслала Tom's Hardware измененную версию FlaskMPEG 0.6, однако мы не рекомендуем ее использовать. Дело в том, что эта версия работает быстрее только на процессорах Pentium 4, что огорчит многих пользователей, поскольку остальные процессоры в расчет не принимаются. Мы включили эту версию в наше тестирование.

Lehmen comments: не советую использовать Flask для кодирования. В своё время это была замечательная программа, но сейчас появились гораздо лучшие методы, которые дают качество выходного материала, недостижимое для Flask и ему подобных программ. Некоторые из них уже описаны мной на 3DNews.


Помогает ли SSE Athlon XP?

До нашего тестирования мы попробовали различные версии альтернативных программ. Нашей целью было доказать, что если программа оптимизирована под SSE, то и на Athlon XP (Palomino) и на Duron с ядром Morgan мы также увидим некоторые улучшения. Ведь только последние процессоры AMD смогли поддерживают SSE. Итак, мы были правы. Программы, оптимизированные под SSE, действительно быстрее работают и на новых процессорах AMD.

Lehmen comments: И это не может не радовать. Хотя, я бы не был так оптимистичен. Дело в том, что ещё попадаются программы, которые, обнаруживая процессор от AMD, даже не пытаются использовать SSE, несмотря на то, что Athlon XP его поддерживает. К счастью, с выходом различных патчей и новых версий таких программ становится всё меньше.

К тому же, после выпуска DivX 4.11 ситуация с программным обеспечением изменилась. Кроме появления кодеков, оптимизированных под SSE (типа DivX 4.11), появилась еще одна революционная функция - использование цветового пространства YUV вместо старого RGB, что заметно ускоряет преобразование DVD/MPEG-2 в MPEG-4. Давайте попытаемся найти причину.

Lehmen comments: На самом деле использовать YUV2 можно было достаточно давно, даже с Divx 3.11 кодеком (естественно, при использовании "правильного" программного обеспечения), так что до революции здесь далеко...


DivX 4.11 - те же настройки, новое ядро

Нас разочаровало меню настроек нового DivX 4.11. Оно выглядит точно так же, как и в версии 4.02, которую мы до этого использовали. Однако движок в 4.11 в корне отличается. Впрочем, показанные на иллюстрации настройки - это именно те настройки, с которыми мы и производили тестирование. Обратите внимание на то, что параметр "performance/quality" (производительность/качество) установлен в "slowest" (медленное) позицию. Таким образом, мы получаем высококачественную картинку, в зависимости от установленного потока. Все наши последующие комментарии в тестировании относятся именно к режиму "slowest". Установка в положение "fastest" (быстрое) автоматически увеличит частоту кадров. Но все же, мы отражаем подход большинства пользователей, предпочитающих качество скорости.

Lehmen comments: Движок и кодек - вещи не одинаковые, и разочарование здесь выглядит достаточно странно. Насколько мне известно, изменения и оптимизация в новом кодеке коснулись, в основном, того КАК делается, но ЧТО делается осталось прежним. Хотя, если бы в кодек добавили настроек, я бы не огорчился ;-)
Насчёт "высококачественной" картинки, которую можно получить при битрейте 780 и размере кадра в 720*576 (как они кодили) я промолчу. На tomshardware работают либо очень непритязательные люди, либо они сами не смотрели, что у них получилось. Либо я - китайский лётчик :-)


DVD2AVI 1.76 - быстрый, но неаккуратный

Когда мы начали искать альтернативный инструмент преобразования в MPEG-4, наше внимание привлек DVD2AVI. Первоначально нас поразила его стабильность. Даже VOB файлы или MPEG-2 файлы со случайными ошибками изображения обрабатывались DVD2AVI без всяких проблем. Мы также были приятно удивлены скоростью преобразования по сравнению со старым FlaskMPEG 0.6. Но самой хорошей чертой стала возможность переключения в цветовое пространство YUV. При ее задействовании программа стала просто "летать".

Пришло время добавить ложку дегтя. Версия 1.76 не умеет одновременно преобразовывать звук в MP3 параллельно с видеопотоком. Вместо этого, программа оснащена простейшей функцией демультиплексирования. Если вы пожелаете соединить видео и аудио, вам придется воспользоваться еще одной программой, к примеру, VirtualDub. DVD2AVI обладает еще одним существенным минусом: кривым преобразованием масштаба кадра (к примеру, при переходе от 4:3 к 16:9). Некоторые DVD в формате 16:9 вообще показываются как 4:3. Такое преобразование приводит к эффекту кривого зеркала, точнее, к "длинным лицам" (позднее мы более подробно остановимся на этом).

Lehmen comments: DVD2AVI замечательная программа, которая великолепно работает в качестве frame server'а. И то что она не растягивает анаморфное изображение (что у Тома называется кривым преобразованием, что неправильно, потому что вся "фишка" в том, что никакого преобразования нет и в помине) - огромный плюс. Это даёт возможность в процессе дальнейшего кодирования использовать для преобразования сколь угодно продвинутый и качественный метод.

Такие преобразования слишком сложны для обычного пользователя, который предпочитает все делать за один прием. По дружественному пользователю интерфейсу, FlaskMPEG - безусловный лидер.

Lehmen comments: Полностью согласен. Но настоятельно не рекомендую делать всё за один приём, если вас заботит то, как будет выглядеть и звучать результат.

Сейчас по Интернету распространяется взломанная версия DVD2AVI 1.82. В нее уже встроен MP3 компрессор для аудио. Однако, судя по нашему опыту, эта версия нестабильна, поэтому вряд ли стоит ее использовать.

Lehmen comments: Более того, в "взломаной" версии изменён формат проектов создаваемых DVD2AVI, что делает её использование уж совсем бесмысленным.


Цветовое пространство YUV быстрее, чем RGB

Этот факт достаточно просто объяснить - большинство продающихся сегодня DVD хранят цветовую информацию именно в YUV. Таким образом, преобразование из MPEG-2/YUV в MPEG-4/YUV экономит драгоценное время по сравнению с классической процедурой FlaskMPEG. К сожалению, FlaskMPEG 0.6, старый стандарт, поддерживает только цветовое пространство RGB в MPEG-4. А, следовательно, при использовании RGB помимо преобразования видеопотока, нужно еще и изменять цветовое пространство с YUV на RGB. Поддержка YUV в MPEG-4 позволяет избавиться от последнего шага.

Lehmen comments: Кроме выигрыша в скорости, использование YUV цветов даёт более правильную цветовую гамму (и, соответственно, качество) итогового материала что, на мой взгляд, гораздо важнее. Начёт "старого" стандарта, который не якобы не работает с YUV, у Toma несколько погорячились, это не совсем так ;-)


Flask XMPEG 4.2a: движение в нужном направлении


Слева - настройки видеосжатия, справа - аудиосжатия
Настоящий FlaskMPEG 0.6, разработанный Альберто Вигата, последний раз обновлялся 6 марта 2001 г. Далее инициатива была перенята программистами французского сайта www.mp3guest.com (кстати, английский вариант там тоже есть), и сейчас их программа называется XMPEG 4.2a. Скачать XMPEG 4.2a можно здесь ( /files/pub/tools/dvd/xmpeg4_2a.exe). Дизайн Flask MPEG 4.2a хорошо сочетается с Windows XP. Устанавливаемый plug-in AVI можно использовать и из других программ, типа Pinnacle Studio 7. Только учтите: если вы будете использовать Microsoft MP3 кодер, максимальный поток составит лишь 56 кбит/с, если же вы установите кодек radium (ra-codec12.zip), вы можете сжимать с потоком и более 128 кбит/с.

Опция YUV2 указывает на революционные изменения в XMPEG 4.2a. Как только вы ее включаете, она значительно увеличивает скорость кодирования DVD. Похоже, сейчас мы увидим возрождение многих популярных продуктов благодаря массовому проникновению YUV.

Еще одной приятной возможностью является поддержка различных форматов кадра. Кроме стандартных форматов 4:3 и 16:9, пользователь может выбирать и специальные. Некоторые DVD и MPEG-2 видео используют необычные форматы кадра, что иногда приводит к эффекту "длинных лиц". Все это можно скорректировать в XMPEG 4.2a.

Довольно полезны и функции обрезки/конверта (cropping/letterboxing). Они позволяют вам легко обрезать изображение и убрать ненужные черные края. Лучший способ посмотреть на результат - обратиться к панели предварительного просмотра.

Французские программисты за основу взяли интерфейс DVD2AVI-MMX, который используется во многих программах. Но пусть суффикс MMX не вводит вас в заблуждение. Кодек DivX 4.11 оптимизирован, главным образом, для использования с SSE - "DVD2AVI MMX" просто его название в программе.

Lehmen comments: Всё выше написанное конечно же правда, но я не думаю, что это движение в правильном направлении. Скорее, это путь в тупик. Поезд, на котором едут нормальные кодировщики, давно свернул в другую сторону, и если вы хотите на него попасть, вам придётся забыть про методику, описанную выше. Эта информация представляет собой интерес только в том, по какой методике тестировались процессоры, но ничего более.

Как вы понимаете, за сжатие отвечает как кодек, так и утилита.

Lehmen comments: За само сжатие отвечает только кодек, утилита отвечает за то, в каком виде видеопоток будет "доставлен" к кодеку (обрезание краёв, изменение размера, изменение пропорций, и т. д.)


Тестирование

Тестовая система на базе Windows XP
Аппаратное обеспечение
Процессоры Athlon XP 1900+ (1600/133 МГц FSB)
Athlon XP 2000+ (1666/133 МГц FSB разгон)
Socket 423: Intel Pentium 4 2,0 ГГц
Материнские платы EPOX EP-8KHA+ (VIA KT266A) Socket 423: ASUS P4T-E (Intel 850)
Память Socket 478: 256 Мб, PC800, 400 МГц, Viking
Socket 462: 256 Мб, PC2100, 133 МГц, CL2.0, Micron
Жесткий диск 40 Гб, 5T040H4, Maxtor UDMA100, 7200 об/мин, 2 Мб кэш
Видеокарта NVIDIA GeForce3 64 Мб DDR 400/250
Звуковая карта Createive Soundblaster Live 5.1
Программное обеспечение
Операционная система Windows XP Professional, DirectX 8.1, VIA 4-in-1 v4.35
Видеодрайверы NVIDIA Detonator 4 v21.88


FlaskMPEG 0.6: RGB тормозит

В этом тесте мы сравним кодеки DivX 4.02 и 4.11 друг с другом. Тест осуществляется на FlaskMPEG 0.6, который уже устарел. Мы также получили модифицированную версию от Intel, но об этом чуть позже.

В старом DivX 4.02 Athlon XP показал лучший результат. Однако с новым DivX 4.11 Pentium 4/2000 вышел на первое место.

Выпустив модифицированную версию FlaskMPEG 0.6, Intel доказала что процесс сжатия в MPEG4 можно еще улучшить. Владельцам Athlon XP использовать эту версию противопоказано, так как на процессорах AMD она работает только медленнее. Старый FlaskMPEG 0.6 благополучно справился с преобразованием в цветовое пространство RGB, поскольку YUV ему не по зубам. Все указанные опции относятся только к видео - мы отключили кодирование звука. Без звука, Intel смогла преодолеть порог реального времени 25 fps (PAL - Европа, Азия). Если бы мы использовали NTSC видео (Северная Америка), Pentium 4/2000 так же хорошо с ним бы справился. Давайте посмотрим повнимательнее на различия между PAL и NTSC.


DVD2AVI 1.76 - различия между PAL и NTSC

При сжатии мы сделали очень интересное сравнение - между PAL DVD (Европа) и NTSC DVD (Северная Америка). Оба DVD содержали один и тот же фильм. Если процессор преодолел барьер в 25 fps на PAL DVD, то он в NTSC версии смог преодолеть планку 30 fps. Несмотря на то, что мы сжимали один и тот же фильм, скорости сжатия оказались разными. Частота кадров PAL составляет 25 fps, в то время как в NTSC - 30 fps. Но здесь нет ничего не обычного, посмотрите на формулу:
*пиксельный поток PAL: 720x576 пикселей x 25 fps = 10,4 Мпиксель/с
*пиксельный поток NTSC: 720x480 пикселей x 30 fps = 10,4 Мпиксель/с
В одинаковом цветовом пространстве пиксельный поток прямо пропорционален битовому потоку, таким образом, получается отсутствие разницы между PAL или NTSC. Если процессор смог взять барьер реального времени в PAL, то он сможет сделать то же самое и в NTSC. Пожалуйста смотрите на формат видео в каждой тестовой диаграмме.

Примечание: вообще-то точная частота кадров в NTSC на самом деле 29,97 fps, но мы взяли приближенное значение.

Lehmen comments: Вообще-то при работе с NTSC материалом следует "возвращать" (это называется IVTC) его в оригинальные 24 кадра (на самом деле 23.976), в которых он и снимался на киноплёнку.

При использовании версии DivX 4.02, Pentium 4/2000 не смог угнаться за Athlon XP 1900+/2000+. Но DivX 4.11 изменил ситуацию. Без обработки аудиопотока, все процессоры смогли взять барьер реального времени (30 fps для NTSC) в цветовом пространстве YUV. Причем улучшение здесь заметно не только для Pentium 4/2000, но и для Athlon XP.

В тестировании мы использовали еще один фильм. Мы взяли отрывок с погоней BMW из фильма про Джеймса Бонда. Такой отрывок критичен к пропускной способности. Обратите внимание - формат фильма PAL, где порог реального времени - 25 fps. Как видим, с 4.11 версией DivX улучшились результаты и Athlon XP, и Pentium 4. И вновь Pentium 4 вышел на первое место.


Flask XMPEG 4.2a: лучший инструмент

Давайте попытаемся узнать, возможно ли кодирование в реальном времени MPEG-2 потока в MPEG4 параллельно с Dolby Digital звуком в MP3. Мы разнесли тестирование двухканального Dolby Digital звука и 5-канального. В этом тесте мы использовали лучший, на наш взгяд, инструмент - Flask XMPEG 4.2a.

Феноменально! Даже при самом сложном преобразовании 5-канального звука Dolby Digital и MPEG-2 потока, Pentium 4/2000 смог взять порог реального времени. Однако следует заметить, что Athlon XP 1900+ и 2000+ (эта модель вскоре будет выпущена) дышат Pentium 4 в затылок. Владельцы Athlon XP также получат преимущество от нового кодека DivX 4.11.


Заключение

Последняя версия DivX кодека - 4.11, без сомнения, привнесла революционные изменения. Впервые Pentium 4/2000 смог преодолеть барьер реального времени при одновременном кодировании видео и звука, даже в самых "тяжелых" вариантах. В очередной раз Intel наступает на AMD, впрочем, как вы можете убедиться в тестах, AMD пока что может держать удар.

Ранее почти неизвестное, цветовое пространство YUV, наконец, стало использоваться в программах. Его предшественник, пространство RGB, никогда не давало такой частоты кадров как YUV. Владельцы Athlon XP могут "на халяву" воспользоваться плодами Intel, оптимизировавшей DivX кодек под SSE. И Athlon XP (Palomino), и новый Duron (Morgan) получают прирост от оптимизации. Маленькое замечание: вы должны использовать последние версии программ, так как наш ветеран FlaskMPEG 0.6, разработанный Альберто Вигатой, уже заслужил почетный отдых.

На сегодняшний момент бесплатная программа Flask XMPEG 4.2a обладает наибольшим потенциалом, и она, к тому же, явно быстрее коммерческих продуктов по копированию DVD.

Lehmen comments: А вот это уже совсем интересно. Что это имелось в виду под коммерческими продуктами по копированию DVD? Это кто же такое дозволил? А как же куча судебных процессов? За что, спрашивается, боролись?? За что кровь проливали??? За что DeCSS погибла так геройски и безвинно (почти)?

Так что если вам нужен инструмент, быстро кодирующий DVD или MPEG-2 в MPEG-4 формат, обратите свое внимание на XMPEG 4.2a.

Lehmen comments: Не надо... в смысле, быстро кодировать. Лучше медленнее, да лучше :-)

Intel доказала, что оптимизация исходного кода под SSE может добавить определенный процент производительности даже в старую FlaskMPEG 0.6. Хорошо бы французские программисты попросили Intel оптимизировать XMPEG 4.2a под SSE.

С другой стороны, разработчики должны быть уверены, что Intel не изменила исходные коды для умышленного "замедления" Athlon XP. Или разработчики должны дать AMD возможность также внести свою лепту. Или каждый производитель процессоров должен разработать свой plug-in, независимо от другого. А уж пусть потом пользователь решает, что ему больше нравится.

 
 
Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.
Материалы по теме
⇣ Комментарии
window-new
Soft
Hard
Тренды 🔥