Несколько дополнений.
1. Драйверы V4L2 штатно входят в состав PuppyRus-2, и стандартные камеры автоопределяются, и драйвер подключается автоматически.
2. mplayer можно запустить с опцией -vf screenshot, тогда нажатие на клавишу "s" будет производить снимок фото с камеры и запись его в .png файл. Нажатие на клавишу "пробел" замораживает изображение на камере (повторное наватие на пробел - размораживает):
mplayer tv:// -tv driver=v4l2:width=640:height=480:fps=25:device=/dev/video0 -vo xv -vf screenshot
3. Можно записывать MPEG-видео с помощью стандартных программ, например mencoder (часть mplayer) и ffmpeg:
ffmpeg -t 5 -i /dev/dsp -f video4linux2 -i /dev/video0 -s 640x480 myvideo.mpg
(записывает в myvideo.mpg
mencoder tv:// -tv driver=v4l2:width=640:height=480:device=/dev/video0 -ovc lavc -ofps 30 -o myvideo.avi tv://
(записывает в myvideo.avi)
4. Эти способы записи видео достаточно быстры и универсальны. Они работают даже на очень слабых машинах прямо из командной строки (без оконного интерфейса).
5. Этими же средствами можно организовать запись видео с нескольких камер одновременно.
Если у пользователя несколько видеокамер, они автоопределятся как устройства /dev/video0, /dev/video1, /dev/video2, ....
Для каждой из них можно запустить параллельный процесс ffmpeg или mencoder, и, таким образом, сохранять одновременно видео со всех камер. Такой способ можно использовать в системе видеонаблюдения. Например:
ffmpeg -t 5 -f video4linux2 -i /dev/video0 -s 640x480 camera0.mpg &
ffmpeg -t 5 -f video4linux2 -i /dev/video1 -s 640x480 camera1.mpg &
ffmpeg -t 5 -f video4linux2 -i /dev/video2 -s 640x480 camera2.mpg
(записывает видео с трех камер в файлы camera0.mpg, camera1.mpg, camera2.mpg)
Пример конфигурации menconder для видеонаблюдения.Нашу задачу записи потока в данном случае облегчают 2 особенности: 1) не надо сохранять звук (/dev/dsp) больше, чем для одной камеры (т.к. это выдаст конфликт доступа к устройству), 2) для видеонаблюдения лучше сделать fps поменьше (до 1 или 2 вполне нормально), т.к. если вести запись сутками, то записывамемые файлы будут заполнять жесткий диск слишком быстро.
Примерные установки, подходящие для видеонаблюдения:
mencoder tv:// -tv driver=v4l2:width=320:height=240:device=/dev/video0 -nosound -ovc lavc -ofps 0.5 -o cam0.avi
В таком режиме этот процесс с одной камеры занимает у меня на процессоре Centrino 1.6MHz примерно 13% процессорного времени. Т.е. на свой комп я вполне могу подцепить штук 5 камер и записывать с них одновременно. Файл .avi (слабо сжатый) при этом растет со скоростью примерно 350кБ/мин. Т.о., за 24 часа наблюдения у меня появится файл размером всего 500МБ. Недорогой переносной жесткий диск может накапливать данные круглосуточного наблюдения неделями.