Конвертирование VideoCD в MPEG4Основной недостаток формата VCD заключается в том, что полнометражный фильм помещается только на 2 CD. Это сильно сказывается на стоимости, так 1 фильм стоит 165-185 рублей, даже пиратская копия стоит больше сотни, что значительно дороже видео кассеты, при практически таком же качестве. Поэтому VCD, у нас в стране, мало распространены. VCD воспринимается скорее как экзотика. До недавнего времени считалось, что записать на 1 компакт-диск фильм в приемлемом качестве невозможно. Но со времени разработки формата VCD (1993г.) сменилось 2 или 3 поколения компьютеров. Стало возможным применять более совершенные методы компрессии и сильнее учитывать особенности восприятия человека, ведь главное требование к форматам видео компрессии это возможность декомпрессии в реальном времени. Так в ноябре 1998г. была объявлена новая разработка Moving Picture Expert Group - стандарт MPEG4, частью которого является сжатие видео. Аппаратные требования для воспроизведения видео в MPEG4 высоки - нужен PentiumII300 (Сравните с P133 для VCD). Но за счет более совершенной компрессии стало возможным сжимать видео намного сильнее, чем при использовании MPEG1 (VCD). Теперь можно без проблем поместить фильм на 1 CD с качеством даже лучше, чем VCD! С другой стороны такие аппаратные требования уже не являются серьезными - подойдет любой компьютер из тех что сейчас выпускают и продают. Ситуация напоминает ту что была лет 5 назад, когда появился формат MPEG1 Layer3. Помните мультимедийные диски "Все альбомы группы" в формате ADPCM 22050 Hz 4bit - ужасное качество, зато работали на четверках. После появился mp3 - размер файла тот же, а качество на порядок выше, но нужен был уже Pentium. А все за счет усложнения алгоритма. Некоторые даже называют MPEG4 "mp3 в мире видео". У этого формата есть все шансы заменить MPEG1 и MPEG2: он, прежде всего, обеспечивает лучшее качество при том же размере файла или меньший размер при том же качестве, большую гибкость в выборе разрешения, частоты кадров и скорости потока данных, лучшую передачу быстрого движения, меньшее время компрессии, легко сочетается с разными аудио кодеками, менее чувствителен к потери части данных, хорошо подходит для просмотра видео через сеть в реальном времени. Итак, вернемся к теме нашей статьи. Понятно, что максимально, чего мы можем добиться - это сделать так, что бы полученный фильм отличался от исходного как можно меньше. На самом деле, возможно даже некоторое субъективное улучшение качества за счет большей плавности смены кадров во время движения. Прежде всего, нам нужен MPEG4 кодек. Таких кодеков на сегодняшний день 2 - "Microsoft MPEG-4 Video Codek" (V1, V2, V3) и DivX ;-) MPEG-4 (Fast-Motion и Low-Motion). DivX на самом деле является, всего лишь, взломанной версией, того же Ms MPEG4 Codeka, как утверждают авторы, они убрали глюки и слегка его улучшили. Ms MPEG4 устанавливается, например, вместе с Windows Media Tools (http://www.microsoft.com/windows/mediaplayer/). Для установки DivX кодека нужно скачать и установить "divx_311alpha.exe" (http://divx.ctw.cc/). Возможно понадобится установить еще и Direct X Media. Оба эти кодека позволяют выставить следующие параметры сжатия: Data Rate (величина потока данных), Key frame interval (интервал между ключевыми кадрами) и Compression Control (smoothness/crispness, соотношение плавность/четкость). Рассмотрим эти параметры подробнее. Data Rate - самое важное значение, именно от него зависит и качество видео и размер файла. Чем оно больше, тем выше качество, но и размер файла больше. Измеряется в битах в секунду. В MPEG4 этим параметром мы задаем максимальное значение потока данных, реальное значение зависит от содержимого фильма в данный момент и может постоянно изменяться. Так, например, при сжатии титров фильма DataRate уменьшается более чем в два раза. Key frame interval - MPEG4 по терминологии Microsoft относится к interframe (межкадровым) методам компрессии, т. e. таким, где полностью сохраняется небольшое число ключевых кадров (Key frame или I-Frame), остальные кадры (Delta frames) содержат только разницу между предыдущими и последующими кадрами. Key frame interval задает промежуток между ключевыми кадрами. Именно этим объясняется задержка при попытке запустить фильм с любого места - что бы показать произвольный кадр плеер должен вернуться к ключевому кадру и построить все кадры до нужного. Казалось бы, чем больше ключевых кадров, тем лучше. Однако это не так. Дело в том, что ключевой кадр требует большего количества данных, чем промежуточный, и когда вставляется ключевой кадр на последующие кадры остается уже меньшее количество информации (ведь поток ограничен). Вообще современные кодеки могут обходиться очень малым числом ключевых кадров. Так, например, VDO кодек ставит 1 кл. кадр на 9999 кадров, а для MPEG4 кодека в программе NetShow стоит по умолчанию значение 1 кл. кадр на 3600 сек. На самом деле значение Key frame interval для MPEG4 кодека означает всего лишь максимальное расстояние между кл. кадрами, MPEG4 кодировщик сам вставляет кл. кадры в сложные моменты. При быстром изменении сцен, он может даже вставить несколько кл. кадров подряд. Кроме перемотки кл. кадры нужны еще для редактирования фильма без рекомпрессии, по ним можно легко разрезать фильм на куски и после их склеивать. Самое лучшее, что можно сделать с этим параметром это оставить его по умолчанию. Compression Control (Smoothness/crispness) - Smoothness определяет плавность движения, crispness определяет резкость или детальность изображения. К сожалению, эти величины исключают друг друга, т. е если вы увеличиваете одну, то другая уменьшается. Вообще этот параметр важен только для низких DataRate или частоте кадров менее 20Гц. На высоких DataRate при изменениии этого параметра фильмы получаются совершенно одинаковыми. Для нашей задачи правилнее поставить четкость на максимум или оставить значение по умолчанию. Сравним эти кодеки с помощью моей
программы (630 Кб). Эта программа сравнивает 2 видео клипа и выражает
отличие в виде числа, при этом учитываются особенности восприятия. Чем
меньше отличие, тем больше клипы похожи друг на друга. Более подробную
информацию о принципах работы программы можно найти у нее в инструкции. К
сожалению, не удалось использовать для сравнения версию 3 Ms кодека. Дело
в том, что Microsoft, начиная с версии 3845 своих кодеков, закрыла V3 для
использования в программах, отличных от ASF encoding tools. Итак, сделаем
из одного исходного клипа в формате MPEG1 по 15 других на каждый кодек, с
Data Rate изменяющимся от 100 до 1500 c шагом 100, при этом остальные
параметры будем держать постоянными (Key frame=10, Compression
Control=100). Измерим размеры файлов и отличия каждого полученного клипа
от исходного. Построим на основании полученных данных графики зависимости
Отличия/DataRate и Размер/DataRate. В качестве исходного клипа взят
рекламный ролик к фильму "6-е чувство" (файл "add01.mpg") с убраным
звуком, размер 7Мб. Этот файл взят с лицензионного диска с фильмом "6-е
чувство". Я вырезал трех минутный фрагмент и убрал звук из этого файла.
Исходный же файл имел размер порядка 30Мб. Я выбрал этот фильм в качестве
исходного, потому что в нем содержатся разноплановые сцены. В общем то
этот выбор был до некоторой степени случайным. На основании этих графиков можно сделать следующие выводы (не забывайте, что чем график отличий ниже, тем лучше):
Что бы как-то охарактеризовать значение "Отличие" на графике, скажу, что при отличии меньше 8 я уже не могу отличить полученный фильм от исходного, за исключением некоторых кадров. При значении больше 12 качество просто ужасное. Но, конечно, это все очень субъективно. (Напомню, что конкретные цифры на графике верны только для моего тестового фильма, но общие закономерности будут сохранены для любого) На основании всего вышесказанного могу посоветовать использовать MS MPEG4 Codek V2. Во-первых, ни у вас, ни у ваших знакомых не будет проблем с кодеком, не придется ничего скачивать и устанавливать. Даже если у вас стоит очень старая версия Ms Media Player-а, то он сам подключится к Internet и установит все что надо, совершенно без вашего участия. Во-вторых, пользоваться взломанным софтом как-то нехорошо, особенно если исходный совершенно бесплатен. В-третьих, неизвестно, что хакеры там могли испортить. Теперь перейдем к практической части статьи. Должен предупредить, что полученные фильмы в формате MPEG4 будет нельзя смотреть, ни на DVD/VCD плеерах, ни на игровых приставках. Весь софт, который упоминается в статье бесплатный и доступен для свободного скачивания. На VCD видео-файлы имеют расширение *.dat . Это не совсем MPEG1, точнее это MPEG1 в который добавлена некоторая информация необходимая для VCD плееров. В любом случае эту информацию нужно удалить. Для этого есть специальная утилита VCDGEAR2.0 (http://www.vcdgear.com/files/vcdgear20.zip). Запускаем, выбираем тип преобразования dat->mpeg. Кнопкой "Load" выбираем dat файл на VCD и куда мы его хотим сохранить. Кнопка "Start". Скорость этого преобразование зависит от скорости вашего CD-ROM-а и займет не более 10 минут. В результате вы получите MPEG файл, который будет мегабайт на 7-8 меньше исходного DAT файла. На этом этапе нас может ожидать серьезная проблема. Дело в том, что потеря 1 байта на обычном CD-ROM-е c программами может быть фатальна. Поэтому там около 1/8 всего диска занимают всевозможные коды для обнаружения и коррекции ошибок. Когда при чтении диска с данными обнаруживается ошибка, этот фрагмент пытается считаться еще несколько раз на пониженной скорости. С VCD ситуация другая. Постоянность потока намного важнее, а на ошибки чтения можно не обращать внимания. Лучше пусть мелькнет пара зеленых квадратиков в уголке, чем придется наблюдать один кадр 20 секунд. Поэтому для VCD используется формат "White Book" в котором большая часть контрольных кодов просто убрана. В результате скопировать фильм с VCD на жесткий диск без ошибок сложно. Конечно, программа VCDGEAR исправляет ошибки в формате MPEG, если такие возникли при чтении, но только небольшие. Поэтому рекомендуется перед чтением аккуратно протереть диск от соринок и разогреть его в CD-ROM-e в течении нескольких минут. Если ошибка все-таки появилась при чтении (а как это проверить я напишу ниже, операционная система, естественно, ошибок не выдает, ведь необходимых контрольных кодов просто нет), то можно попробовать выполнить эту операцию еще несколько раз, можно вначале dat файл скопировать на HDD и уже после конвертировать в mpeg, можно даже попробовать выйти в DOS и скопировать файл там. Хотя если у вас современный CD-ROM, то особых проблем быть не должно. MPEG4 позволяет для кодирования звука использовать любой доступный звуковой кодек. Неплохим выбором является MPEG1 Layer3. Установите, например, Fhg Radium MP3 codec (ftp://ftp.ssga.ru/pub/DISTR/mp3soft/Encoders/ra-codec12.zip). В качестве основного инструмента в дальнейшем мы будем использовать отличную программу VirtualDub1.3d (http://www186.pair.com/vdub/v1_3d/VirtualDub.zip). Теперь приступим собственно к сжатию. Мы будем работать с обоими частями фильма отдельно и склеим их в самом конце.
Если вы все будете делать, как указано выше, то никаких проблем с синхронизацией звука не будет, проверено много раз. Синхронизация может быть нарушена, если при сжатии появились лишние кадры, но это легко можно проверить - запоминаем число кадров в исходном mpeg1 фильме и сравниваем с количеством кадров в преобразованном (если конечно вы ничего не обрезаете). Этой проблемой страдает программа FlasK MPEG, которую многие рекомендуют для этих целей. VirtualDub сохраняет число кадров 1 в 1. Эта статья носит рекомендательный характер, я могу в чем-то и ошибаться, так что больше экспериментируйте. В любом случае вы теперь сможете конвертировать VCD фильм в MPEG4 и записать его на 1 CD-R, не потеряв при этом в качестве. Вообще возможности MPEG4 намного больше, в данном случае исходное качество VCD, нас сильно ограничивало. Добиться почти идеального качества MPEG4 видео можно только если сжимать DVD диски. Но перевод DVD в MPEG4 сильно отличается от перевода VCD в MPEG4. Возникают следующие проблемы:
О решении этих вопросов я хочу написать свою следующую статью. |
Стас Вихров (stassoft@yahoo.com) Опубликовано -- 21 июля 2000 г. |