Изменяем разрешение картинки


Если у Вас слабая машина и есть неукротимое желание смотреть фильмы, записанные в формате MPEG-4, то во многих случаях выход может быть только один - уменьшить разрешение картинки, при этом нагрузка на процессор уменьшится и просмотр фильма станет возможным (прадва, с потерей четкости). С успехом применять данную процедуру можно для фильмов, сжатых с применением кодека DivX ;-) MPEG-4 Fast-Motion. В случае с кодеком DivX ;-) MPEG-4 Low-Motion есть некоторые проблемы (читайте об этом в конце страницы).

Если, скажем, исходный фильм Taxi имел разрешение 696x392 (кстати, в качетсве примера я выбрал настоящий "шедевр" пиратского резайца :)) и практически не шёл на Вашей машине, то после уменьшения формата картинки, например, до 480x256 - скорее всего, фильм уже пойдёт (если процессор не слабее P-200MMX).

Прежде всего, необходимо выяснить аппаратные требования для включения оверлея у Вашей видео-карты, чтобы при уменьшении картинки не обойти и этот важный параметр стороной. Выяснить это можно таким образом - переводите палитру в "256 цветов", запускаете фильм и смотрите на изображение - если оно идёт как через сетку, то оверлей не работает, а если все выглядит нормально, то оврелей работает (запомните, каким значениям кратны вертикаль и горизонталь - скорее всего, для старых видео-карт, это будут коэффициенты 16x16). Предположим, при работающем оверлее получили коэффициенты для вертикали и горизонтали, равные 16-ти - будем ориентироваться на них в дальнейшем.

Ещё один момент - иногда при компрессии неправильно обрезают черные полосы у широкоформатных фильмов (как в случае с нашим фильмом). Полезного ничего нам остатки черных полос не дают, а часть цифрового потока (и без того малого) и машинных ресурсов при декомпрессии (и без того скромных) - требуют. Осуществляя уменьшение разрешения картинки, мы имеем возможность дополнительно удалить и эти полосы, что само по себе есть "не плохо"...

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

При компрессии неправильно обрезаны черные полосы, а исходное разрешение картинки слишком велико для слабой машины...

Теперь нам необходимо уяснить одну важную вещь - любое изменения первоначального размера кадра должно быть пропорциональным, иначе искажения геометрии (если оно небыло допущено при первоначальной компрессии в MPEG-4) нам не избежать... В нашем случае, после удаления черных полос мы имеем соотношение сторон в кадре 696x362 (не уверен, что с геометрией тут все в порядке... к сожалению, нет этого фильма на DVD, так бы можно было сказать однозначно), т.е. имеем коэффициент соотношения горизонтали к вертикали - 1,92. Теперь зададимся каким-либо конечным значением для горизонтали, например 480 пикселов - тогда вертикаль должна составлять 480/1.92~250 пикселов. Поскольку ближайшее кратное 16-ти значение будет 256, то остановим свой выбор для значения вертикали на нём.

Далее, выбираем настройки кодека DivX ;-). Здесь я использую стандартные кодеки из набора divx_311alpha, которые вставляют ключевые кадры через равные интервалы, посколку абсолютное большинство фильмов сжато ими. Однако, никто не запретит Вам использовать и кодеки с автоматическим анализом сцен и всталяющие ключевые кадры в зависимости от степени изменения содержимого кадра - DivX.Scene-Detect.Patch.v1.0.

Обрезали черные полосы и пропорционально уменьшили картинку - геометрия кадра не изменилась, но четкость неизбежно уменьшится.

Слева исходный размер кадра (окно кадра уменьшено в 4 раза), справа - уменьшенный.

Эксперименты с фильмами, компрессированными изначально кодеком 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). Кстати, с помощью этой программы (или аналогичной) можно осуществить так называемое смешанное кодирование, получая при этом практически идеальное качество картинки...

Hosted by uCoz