V4L: как увидеть бабушку в Киеве

Владимир Попов

2007-05-31

V4LVideo For Linux (если кто не знает). Есть такая подсистема ядра, ответственная за всевозможные видеозахваты, потоки и т.п. Поскольку сам я с видеопроцессингом (не считая просмотра DVD) никогда дела не имел, то и не мне его описывать. Случай, однако, показался мне забавным настолько, что я решился о нём рассказать. В жанре "для чайников", так сказать, к которым смело могу причислить в данном случае и себя. Итак...

Пришёл друг детства — попросил веб-камеру к ноутбуку подключить. Дочь (проживающая ныне в Голландии) захотела с бабушкой (находящейся в Киеве) что-то вроде видеоконференции устроить. На ноуте — ХР, естественно. Камера — Logitech QuickCam Express.

В общем: вкусил "интуитивно понятного интерфейса". Мрак. Мало того, что камера "так себе", так ещё и софт "user-friendly". Справедливости ради, должен признать, что знай я на тот момент о существовании спецификации MicroSoft USB Video Device, установи только стандартный драйвер и поищи приложения (быть может, даже бесплатные), которые бы работали с этим драйвером непосредственно, впечатление было бы несколько иным. Беда в том, что узнал я обо всём этом позднее, а для начала просто воспользовался услугами утилиты, автозапускаемой с инсталляционного CD.

Буквально 5-7 предложений проапгрейдиться из Сети, пара перезагрузок — и мы имеем в памяти пятимегабайтный резидент, а в трее — иконку, позволяющую увидеть изображение, передаваемое web-камерой, сделать с её помощью фото или видеоролик. Для коммуникаций же предлагается отправлять добытое почтой или, опять-таки, загрузить Windows Messenger. После того, как я объяснил другу, что для реальных переговоров нужно бы ещё гарнитурку и выделенку (вместо dial-up), он сказал, что "с него хватит" и к этой теме больше не возвращался. Так и осталась у меня Logitech QuickCam Express.

Подключать её к системам, в которых работают собранные мной ядра, смысла не было: я-то точно знаю, что от опции Video For Linux всегда отказывался. А вот к Ubuntu (Dapper) — случилось однажды. Каково же было моё удивление, когда после подключения в системе обнаружилось устройство /dev/video. Обнаружилось — не значит объявило о своём присутствии всплывающим окном и т.п. Не Vista, чай. Но все приличествующие случаю изменения в /sys, соответствующие изменения в /dev и в составе загруженных модулей (вывод lsmod) — состоялись. Драйвер, правда, был почему-то загружен spca5xx (это при наличии вроде бы само собой напрашивающегося quickcam), но начало — интригующее.

Интригующее настолько, что, по-прежнему не испытывая ни малейшей потребности в Video For Linux, я захотел проверить работоспособность драйвера.

Поскольку, как я уже признался, никогда с потоковым видео дела не имел, то пришлось воспользоваться Google и вот список приложений, предложенных мне первым же ответом:

  • gqcam
  • xawtv
  • w3cam
  • vic
  • camserv

Поскольку происходило всё под Ubuntu, то сам Бог велел запустить apptitude и выяснить: " что с чем едят"?

Пока не дошёл до camserv, складывалось впечатление, что ни хрена хорошего затея эта мне не сулит: ну, не устанавливать же gtk-1, ради того, чтобы проверить успешность подключения камеры? Слишком далека была моя инсталляция Ubuntu от того, что, очевидно, инсталлируют обычно video-ориентированные пользователями.

Смутные воспоминания подсказывали, что классические mplayer и avifile умеют работать с потоковым видео, но и этих двух в моей инсталляции Ubuntu не оказалось. Так бы и бросил, в нежелании загромождать систему какими бы-то ни было компонентами, нужными лишь для однократной проверки работы Video For Linux, если бы не дошёл до camserv. Объём пакета (79 kB) и полное отсутствие неудовлетворённых зависимостей сразу вызвали симпатию. В качестве клиента предлагалось использовать браузер. Далее потребовалось:

  • убедиться в том, что редактирования /etc/camserv/camserv.cfg не требуется
  • изменить файл /usr/doc/camserv/examples/webcam.html, указав вместо your.camserv.hostlocalhost
  • запустить camserv: /etc/init.d/camserv start
  • открыть тот самый webcam.html в firefox, например.

...И оно таки работало! Повторюсь: "втыкнув" какой-то QuickCam Express в Ubuntu и загрузив 80-килобайтное приложение я получил работоспособную вебкамеру с возможностью непосредственной трансляции в Сеть (для этого, собственно camserv и предназначен). "Земля и небо" в сравнении с вознёй в ХР. Напомню: там — не признаваемый M$ драйвер, 130-мегабайтная инсталляция и, по-прежнему, никакой "сетевизны". Не анекдот ли?

Вообще-то camserv умеет и снимки делать (capture), и разрешение менять, да и все прочие параметры, обнаруживаемые при открытии вкладки Settings соответствующей win-утилиты — доступны. Просто меня это уже не особенно интересовало. Если говорить о сколько-нибудь серьёзном использовании web-камеры для видеоконференций, то внимание, разумеется, нужно обратить на vic и Skipe. Важно то, что устройство, используемое последними, — в системе существует.

Успех операции произвёл на меня такое сильное впечатление, что я не поленился подключить аналогичным образом и фотоаппарат (благо Fujitsu FinePix S3100 может использоваться и в качестве web-камеры). Ну... "не всё скоту масленица", как любит говорить один мой знакомый. Для устройства с такими VendorID/ProductID подходящего модуля не нашлось. Что в таких случаях делают — уже совсем другая история. И хотя как раз в этой области я совсем уж дилетантом не являюсь, но об этом — как-нибудь в другой раз. А вышесказанное... просто приятно удивлён как поддержкой дешёвых web-камер текущим ядром Linux, так и качеством "универсального" ядра Ubuntu.