Цифровое видео в упаковке Линукс

-- 29 июля 2004 года--

1. Веб-камеры

Linux - совместимые камеры, в т.ч. с интерфейсом USB, имеются в достатке, если не сказать, - во множестве. Цена или качество могут стать решающими при выборе модели, но все же не забудьте просмотреть список Linux-совместимых веб-камер. Некоторые новые массовые модели от Creative Labs на сегодняшний день идут в продажу без поддержки Linux, а жаль!

2. Тюнеры и программы просмотра TV

То же можно сказать и о встраиваемых PCI-тюнерах на основе чипа от Brooktree Corporation, их уже очень давно научились использовать с помощью bttv (http://linux.bytesex.org/v4l2/bttv.html). Просмотреть список поддерживаемых программой карт также будет не лишним при покупке тюнера. По соотношению цена/качество, можем посоветовать обратить внимание хотя бы на PixelView PlayTV Pro. Для просмотра телепрограмм, а также для записи "raw video" с веб-камеры или с экрана ТВ, можно запустить Xawtv или Mplayer.

3. Пример создания MPEG-ролика

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

Камера снимает начальный материал, который нас не устраивает по приведенным выше причинам: он имеет размер в десяток мегабайт, синхронный звук слишком низкого качества и вдобавок из-за слабого встроенного в ноутбук микрофона почти не слышен, а посмотреть ролик можно только одной программой mplayer, которая есть далеко не у всех. Короче говоря, плохо выкладывать его в таком виде на наш сервер.

Нам понадобятся утилиты mencoder, lame и mjpegtools. Мы последовательно обрабатываем начальный материал (далее как файл alex_showup.avi) различными утилитами и добиваемся поставленной выше цели: создать небольшой ролик для Интернета.

1) В графическом редакторе (подойдет gimp) создадим начальную заставку - надписи на темном фоне,  и  фильтром "размоем"
ее. Итого 20 последовательных кадров формата png. Совместим картинки в 1-сек. ролик output.avi - заставку к фильму:

mencoder \*.png -mf on:fps=2:type=png -vop crop=320:240:1:1 -o output.avi -ovc lavc

2) Сведем заставку и сам фильм в один непрерывный ролик, попутно изменим число кадров (fps) в секунду с 20 на стандартные 24, а плохой звук выключим:

cat output.avi alex_showup.avi | mencoder -fps 20 -ofps 24 -nosound -  -ovc lavc -lavcopts vcodec=mjpeg -o foo.avi

3) Подготовим звуковую дорожку с помощью record, sox и soxmix. Полученный файл r1.wav преобразуем в MPEG-2:

cat r1.wav | mp2enc -m -b 32 -o foo.mp2

4) Преобразуем avi в формат mpeg-1, попутно убрав шумы камеры и профильтровав:

lav2yuv +p foo.avi | yuvdenoise | yuvmedianfilter | mpeg2enc -B 35 -f 0 -q 5 -b 320 -a 1 -o foo.m1v

5) Сведем звук и видео в один файл:

mplex -V -r 360 foo.mp2 foo.m1v -o you_can_do_it.mpg

Обратите внимание на совсем скромный для 30-сек. ролика размер получившегося файла. Надеемся, что вы смогли нормально его посмотреть ( you_can_do_it.mpg ) на вашем компьютере.

А.Шевляков  alex@motivation.ru

Copyright © ООО 'Мотивация', 2004. Все права защищены.