Если
у Вас слабая машина и есть неукротимое желание смотреть фильмы,
записанные в формате MPEG-4, то во многих случаях выход может
быть только один - уменьшить разрешение картинки, при этом нагрузка
на процессор уменьшится и просмотр фильма станет возможным (прадва,
с потерей четкости). С успехом применять данную процедуру можно
для фильмов, сжатых с применением кодека DivX ;-) MPEG-4 Fast-Motion.
В случае с кодеком DivX ;-) MPEG-4 Low-Motion есть некоторые
проблемы (читайте об этом в конце страницы).
Если, скажем, исходный фильм Taxi имел разрешение
696x392 (кстати, в качетсве примера я выбрал
настоящий "шедевр" пиратского резайца :)) и
практически не шёл на Вашей машине, то после
уменьшения формата картинки, например, до 480x256
- скорее всего, фильм уже пойдёт (если процессор
не слабее P-200MMX).
Прежде
всего, необходимо выяснить аппаратные требования
для включения оверлея у Вашей видео-карты, чтобы
при уменьшении картинки не обойти и этот важный
параметр стороной. Выяснить это можно таким
образом - переводите палитру в "256 цветов",
запускаете фильм и смотрите на изображение -
если оно идёт как через сетку, то оверлей не
работает, а если все выглядит нормально, то
оврелей работает (запомните, каким значениям
кратны вертикаль и горизонталь - скорее всего,
для старых видео-карт, это будут коэффициенты
16x16). Предположим, при работающем оверлее
получили коэффициенты для вертикали и горизонтали,
равные 16-ти - будем ориентироваться на них
в дальнейшем.
Ещё
один момент - иногда при компрессии неправильно
обрезают черные полосы у широкоформатных фильмов
(как в случае с нашим фильмом). Полезного ничего
нам остатки черных полос не дают, а часть цифрового
потока (и без того малого) и машинных ресурсов
при декомпрессии (и без того скромных) - требуют.
Осуществляя уменьшение разрешения картинки,
мы имеем возможность дополнительно удалить и
эти полосы, что само по себе есть "не плохо"...
Перейдем
к практике. Для решения поставленой задачи используем
хорошо знакомую уже многим программу VirtualDub,
точнее, некоторые ее возможности - прилагающиеся
видео-фильтры. Теперь опишу конкретно весь выбор
предустановок преобразования на примере выбранного
фильма.
File=>Open
video file... - открываем фильм с CD-ROM, а
лучше с харда;
Audio=>Direct
stream copy - прямое копирование потока и про
звук забываем;
Video=>Full
processing mode - режим полного преобразования;
Video=>Filters...=>Add...=>null
transform=>Ok=>Clipping - здесь поля X1 offset
и X2 offset можно оставить без изменений,
поскольку при уменьшении мы выберем кратные
16-ти значения, а вот в полях Y1 offset
и Y2 offset поставим значения 16
и 14 соответсвенно, обрезав тем самым
лишние черные полосы (значения подбираются эксперементально
при визуальном контроле). Жмём Ok и выбираем,
собственно, сам фильтр для уменьшения разрешения
картинки - Add=>resize...
Теперь
нам необходимо уяснить одну важную вещь -
любое изменения первоначального размера кадра
должно быть пропорциональным, иначе искажения
геометрии (если оно небыло допущено при первоначальной
компрессии в MPEG-4) нам не избежать... В
нашем случае, после удаления черных полос
мы имеем соотношение сторон в кадре 696x362
(не уверен, что с геометрией тут все в порядке...
к сожалению, нет этого фильма на DVD, так
бы можно было сказать однозначно), т.е. имеем
коэффициент соотношения горизонтали к вертикали
- 1,92. Теперь зададимся каким-либо конечным
значением для горизонтали, например 480 пикселов
- тогда вертикаль должна составлять 480/1.92~250
пикселов. Поскольку ближайшее кратное 16-ти
значение будет 256, то остановим свой выбор
для значения вертикали на нём.
Далее,
выбираем настройки кодека DivX ;-). Здесь
я использую стандартные кодеки из набора divx_311alpha,
которые вставляют ключевые кадры через равные
интервалы, посколку абсолютное большинство
фильмов сжато ими. Однако, никто не запретит
Вам использовать и кодеки с автоматическим
анализом сцен и всталяющие ключевые кадры
в зависимости от степени изменения содержимого
кадра - DivX.Scene-Detect.Patch.v1.0.
Video=>Compression=>DivX
;-) MPEG-4 Fast-Motion - выбираем кодек DivX
;-) Fast-Motion такой же, что и при первоначальной
компрессии, здесь в поле Data rate я
ставлю максимальное значение 6000, но можно
попробовать и меньше, чтобы уложить фильм одним
файлом в объем CD-R... Keyframe every лучше поставить такой
же, как и у источника (определить его можно
разделив общее количество фреймов на количество
ключевых кадров, а полученное значение разделить
на fps);
File=>Save
AVI... - выбираем путь и имя получаемого преобразованого
файла, прописывая расширение *.avi через точку.
Эксперименты
с фильмами, компрессированными изначально кодеком
Fast-Motion, показали, что при выборе
скорости потока в пределах 3000kbit/s, получаемый
файл по объему не превосходит исходный, а дальнейшее
увеличение скорости потока не приводит к существенному
росту конечного объема файла и ощутимо не сказывается
на качестве картинки... На мой взгляд это связано
с особенностью кодека Fast-Motion в том,
что устанавливая какое-либо значение для скорости
потока в поле Data rate, выбирается максимальное
значение, которое будет необходимо для компрессии
группы кадров. Следовательно, если это значение
лежало ниже порога 2500kbit/s (при первоначальной
компресиии), то выбор значения 3000kbit/s останется
невостребованным, т.е. такое значение все равно
не будет достигнуто... В результате, я устанавливаю
в поле Data rate максимальное значение
6000 (с запасом) и объем получаемого файла все
равно не превышает исходный. Исключение было
только однажды (превышение на несколько десятков
мегабайт), пришлось отрезать титры в конце фильма
и довести объем до приемлемого значения...
Другое
дело, кодек Low-Motion. Здесь устанавливаются
значения, которые будут соответсвовать средней
скорости потока (для сцен со средней динамикой)
и колебания (как максимальные, так и минимальные)
могут быть достаточно существенными. Именно
поэтому порой бывает очень трудно просчитать
объем получаемого файла...
Процедура
преобразования этого фильма у меня заняла около
3-х часов на машине P-II/450MHz/128Mb. Попытка
перевести программу на высокий приоритет иногда
приводит к мертвым зависаниям системы, так что,
использую Normal.
При
попытках повторной компрессии фильмов, первоначально
сжатых кодеком Low-Motion, почти всегда
возникают проблемы следующего характера - при
воспроизведении фильма звук продолжает идти,
а картинка замирает, причем такие сбои наблюдаются
по нескольку раз за фильм, независимо от задаваемой
скорости потока и интервала между ключевыми
кадрами (изменяются только места в фильме, где
возникают сбои). Я нашел для себя способ обойти
эту неприятность, однако он слишком продолжительный
по времени и представляет в основном теоретический
интерес... Если сказать в двух словах, то сначала
фильм дважды пережимается с изменением разрешения
(разными кодеками Fast-Motion и Low-Motion),
затем отслеживаются сбойные места и с помощью
программы ProjectDivX конечный вариант фильма
комбинируется из разных кусков (почти всё в
варианте Low-Motion, а сбойные места
в варианте Fast-Motion). Кстати, с помощью
этой программы (или аналогичной) можно осуществить
так называемое смешанное
кодирование, получая при этом практически
идеальное качество картинки...
(c)
WWW.MPEG-WORLD.NAROD.RU -Мир MPEG Site was desinged by AZV'GROUP
Desing Studio (c) 2001
E-mail us to: neomass@mailgate.ru