Показаны сообщения с ярлыком webcam. Показать все сообщения
Показаны сообщения с ярлыком webcam. Показать все сообщения

udev и camsource

(Пере)запускалка camsource (программы для показывания картинок с веб-камер) с помощью udev:

SUBSYSTEM=="video4linux", ACTION=="add", RUN+="/usr/bin/camsource -r /etc/camsource.conf"

Запускается на старте (когда udev обнаруживается usb-устройства), и перезапускается при их перетыкании (или перетыкивании).

Можно было бы сделать более красиво, т.е. использовать события "add" и "remove" и переменную DEVICE. Однако этому мешает, во-первых, использование нескольких источников в моей конфигурации (и camsource -k выключил бы сразу все), во-вторых какой-то встроенный глюк в самой программе. Дело в том, что запускаясь, процесс почему-то уходит в состояние зомби, и в /proc/NNNNN/fd оказывается пустота. А при использовании параметра [device] код ищет процесс именно по файловым дескрипторам. Иначе говоря, этот параметр вообще не работает.

Применив фантазию к udev, можно например включать трансляцию видео-потока. Что даже удобнее, чем вписывание не комплектуемых init.d-скриптам запуска camsource, ffserver и т.п. во всякие странные места типа /etc/init.d/boot.local.

Борьба с Video 4 Linux 2

Сегодня я боролся с pwc драйвером, вернее с интерфейсом Video 4 Linux 2. Поскольку дома из устройств работающих через v4l оказалась только одна камера, не считая ноутбучной, и не считая цифрового фотоаппарата 2000 (!) года покупки, использовался образец Philips SPC 900NC вместе с драйвером pwc из ядра 2.6.18 и pwc 10.0.12-rc1 с ядром 2.6.8.

Пара полезных ссылок, которые должен запомнить каждый:


Теперь имею представление, как этим интерфейсом пользоваться. Написал простенькую программку, которая тут-же гордо сообщила:

Camera capables:
Driver: pwc
Device: Philips SPC 900NC webcam
Bus: usb-0000:00:1d.2-2
Kernel: 10.0.12
Capables:
* capture
* readwrite
* streaming
Formats:
0 (1) Raw Philips Webcam [843274064]
1 (0) 4:2:0, planar, Y-Cb-Cr [842093913]
Current: 640x480 460800 842093913


или с другой камерой, Philips 840K:

Camera capables:
Driver: pwc
Device: Philips 740 webcam
Bus: usb-0000:00:10.0-1
Kernel: 10.0.12
Capables:
* capture
* readwrite
* streaming
Formats:
0 (1) Raw Philips Webcam [843274064]
1 (0) 4:2:0, planar, Y-Cb-Cr [842093913]
Current: 640x480 460800 842093913


А вот дальше началось самое интересное, поскольку опытным путём было выяснено, что VIDIOC_STREAMON и VIDIOC_STREAMOFF останавливает ( или запускает соответственно ) передачу и освобождают канал:

B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0


Этот факт особенно радостен, т.к. например camsource работает так, что драйвер pwc дропает неиспользованные кадры, а канал постоянно занят. Поэтому при подсоединении двух камер к компьютеру на базе Vortex86 обнаружилось, что usb-хост тянет передачу с двух камер в формате 640x480 только при максимальной компрессии, которая сказывается на качестве изображения. Т.е. это открываешь девайс, потом сцапал кадр и затаился на минуту, сцапал ещё...

В то же время, к сожалению, действие флага PWC_FPS_SNAPSHOT не было вообще обнаружено.

p.s. Перечитал этот бред и понял что с согласованием оборотов русского языка у меня действительно плохо.

web-камера

Опять засыпало снегом, ничего не видно уже вторые сутки. Датчики ветра опять примерзли )



А вот тут снег начал отваливаться от неё:



Веб-камеры Philips SPC 900NC, работает с pwc драйвером. Кроме нескольких замечаний, работает нормально.

update: забыл, драйвер работает на ядре linux 2.6.8.