Работаем с видео

Теперь приступим к обработке, а точнее – к кодированию видео потока c помощью mencoder. Одним из главных параметров здесь является  битрейт. Если вам неважен размер конечного файла, то все определяется требуемым качеством: при битрейте 800 кбит/с картинка выглядит вполне прилично. Если же нужно получить файл определенных размеров, то следует воспользоваться специальным калькулятором, встроенным в различные графические оболочки. Впрочем, все вычисления можно произвести прямо в командной строке – главное немного знать математику  и Bash  на уровне продвинутого пользователя. Настоящие эстеты могут воспользоваться bc. В общем, формула примерно такова:

Mb=(length_min*60*bps/8)/1024

или, в Bash-нотации:

echo «$[($length_min*60*$bps/8)/1024] Mb required»

Чтобы просто оценить результаты работы mencoder, не обязательно дожидаться окончания кодирования. Нажмите Ctrl+C и вы сможете быстро просмотреть получившийся отрывок видео.

Мы переводим длину фильма (в минутах) в секунды и умножаем на битрейт, деленный на 8, поскольку он измеряется в килобитах. Поделив результат на 1024, имеем количество мегабайт, которое будет занимать наш фильм. Заметьте, мы говорим только о видео. Не забывайте добавить к полученному числу размер аудиодорожки.

Из данной формулы легко получить еще одну – для подсчета битрейта, обеспечивающего требуемый размер видео ролика:

bps=(Mb*1024)/length_min/60*8

Полезно оценить порядки этих величин. Допустим, фильм идет 90 минут и мы хотим записать его на стандартный диск CD-R емкостью 700 МБ. Размер звуковой дорожки – 100 МБ. Набрав в консоли:

#echo $[600*1024/90/60*8]

получаем ответ: 904 кбит/с. Теперь можно приступать к конвертированию:

$ mencoder video.vob -oac copy -ovc xvid -xvidencopts bitrate=904 -o video.avi -ffourcc xvid -forceidx

Требуемый кодек (Xvid) указывается опцией -ovc (option video codec), а параметр -xvidencopts определяет его настройки. В данном случае мы выбираем битрейт 904 кбит/с. Звук пока что оставим без изменения – mencoder с трудом справляется с мультиплексированием (т.е. сведением нескольких потоков данных в один) видео и звука Vorbis в контейнер AVI.

На данном этапе можно также применить один или несколько фильтров: обрезать поля, изменить соотношение сторон, выполнить деинтерлейсинг и много чего еще. Полный список фильтров, поддерживаемых mencoder, можно узнать командой:

# mencoder -vf help

а подробную информацию о каком-то фильтре дает команда

# mencoder -vf <filter>=help

Черные поля вокруг кадра лучше урезать сразу. Они неплохо сжимаются (в смысле размера файла), но все же они занимают драгоценное место на носителе – да и выглядят некрасиво. Для этих целей служит фильтр crop, который принимает в качестве параметров ширину и высоту конечной картинки. Например, в предыдущую команду можно добавить:

# mencoder ... -o video.vob -vf crop=640:400 ...

Троеточие обозначает опущенные (совпадающие) опции. Вы также можете переложить всю «черную работу» на фильтр автоокадрирования cropdetect:

# mencoder ... -o video.vob -vf cropdetect ...

Если же вы хотите отмасштабировать изображение (уменьшить или увеличить размер картинки), на помощь придет фильтр scale. Его можно вызвать следующим образом:

-vf scale=w:h

Здесь w и h – новые ширина и высота изображения. Имейте в виду, что фильтры передают обрабатываемое изображение «по цепочке», и порядок их следования в ней имеет значение.

Чтобы после кодирования изображение не было приплюснуто или растянуто и наши люди не получились яйцеголовыми, следует воспользоваться опцией -xvidencopts aspect=<aspect>. В качестве параметра <aspect> можно указать соотношение сторон в виде дроби (4/3) или числа с плавающей точкой. Для его автоматического определения используется параметр autoaspect, а для указания соотношения в контейнере AVI – опция mencoder --force-avi-aspect <0.2-3.0>.

Рассмотрим изученные выше фильтры и опции на конкретном примере. Допустим, размер изображения составляет 640х480, а черные «поля» имеют ширину 20 пикселей. Мы обрежем их, растянем изображение до 720 пикселей в ширину и установим соотношение сторон равным 16/9. С учетом всех этих требований, команда  будет выглядеть следующим образом:

# mencoder video.vob -vf crop=600:480,scale=720 -oac copy -ovc xvid -
xvidencopts bitrate=904:aspect=16/9 -o video.avi -ffourcc xvid -forceidx

Пользоваться -xvidencopts autoaspect после масштабирования и кадрирования бессмысленно.