воскресенье, 25 октября 2009 г.

Подключение web-камеры в Linux

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

CamEye-320.jpgЭх, долгая это история была, подключение моей web-камеры в Linux. "Неблагодарные" открытому сообществу производители камер ни за что не напишут на красивой коробке будет ли работать их камера в Linux, хотя многие камеры работают прекрасно. Но вот как попасть в яблочко я не знал, потому полез во всемирную паутину собирать разные советы и информацию. Даже пробовал взять камеру у знакомого для эксперемента, не получилось (хотя при настройке она возможно и заработала бы), но тогда я еще не знал как и что делать. Но это я отвлекся. В общем говоря в сети я нашел массу советов и информации, описаний камер, таблиц с описанием поддерживаемых камер и прочей "лабуды" (в хорошем смысле слова). Кстати неплохая статья по web-камерам есть в одном из последних журналов Linux-Format. Но главное, что я извлек из этой кучи информации, это то, что web-камеры, работающие в Linux, делятся на 2 группы.

1. Камеры, которые работают под управлением драйвера GSPCA
2. Камеры с интерфейсом UVC

Первые камеры должны иметь чип, соответствующий определенным и довольно распространенным спецификациям, именно поэтому многие даже дешевые камеры начинают работать из коробки, хотя иногда и требуется определенная подстройка.
Вторые относятся к классу так называемых UVC-камер (USB Video Class). Универсальный интерфейс поддержки камер означает, что камера будет работать с операционной системой без драйвера! Однако не совсем конечно без драйвера. Просто этот стандарт описывает универсальные спецификации поддержки USB-видео устройств и встраивается в операционные системы. Т.е. можно говорить, что универсальный драйвер уже установлен в операционной системе, это подобно тому как современные фотоаппараты можно подключать к компьютерам для снятия снимков и при этом не применять какие-то специальные драйверы. Например в windows эти спецификации были встроены начиная с windows XP-SP2, в MacOsX эти спецификации (уж не знаю с какой начиная версии) так же имеются. Немного особняком стоит Linux, по причине большого количества разных дистрибутивов это нужно проверить, поскольку в современные ядра эти спецификации пока не "припаяны". Законная поддержка UVC в ядре Linux существует только начиная с версии ядра 2.6.26. Однако многие производители Linux дают поддержку этого интерфейса с помощью модулей, поэтому будет не сколько не удивительно, если Ваш Linux с более старым чем 2.6.26 ядром уже имеет поддержку стандарта UVC. Ровно точно так же получилось и у меня с моим Ubuntu 7.10. С удовольствием для себя обнаружив, что этот интерфейс поддерживается в моем Ubuntu я выбрал видеокамеру и заказал ее в ближайшем компьютерном магазине. Остается только надеятся, что разновидностей UVC камер со временем станет только больше.

Проверку на поддержку UVC можно сделать командой:

modinfo uvcvideo

и получив примерно что-то в этом духе

filename:       /lib/modules/2.6.22-14-generic/ubuntu/media/usbvideo/uvcvideo.ko
license: GPL
description: USB Video Class driver

Итак я выбрал UVC web-камеру Genius Eye 320. Через недельку после заказа стал ее счастливым обладателем и в этот же вечер подключил ее к своему компу. Однако к разочарованию обнаружил, что картинки не в одной из программ, использующих камеру, я не наблюдаю. Тогда я загрузил машину из под учетной записи с правами администратора и вот оно! Есть картинка!
Далее всего-лишь пришлось решить вопрос с правами на использование камеры моей учетной записью без прав администрирования.
Проверяю, включена ли моя учетная запись в группу video

cat /etc/group | grep video
video:x:44:user1

где user1 это учетная запись с правами администрирования, моей учетной записи здесь нет, выходит, что нужно добавить себя в группу video. Сделать это можно отредактировав файл /etc/group следующим образом:

1. Входим в систему под учетной записью с правами администрирования.
2. Даем команду sudo gedit /etc/group (если у вас нет текстового редактора gedit, то откройте любым другим текстовым редактором)
3. Ищем строку, начинающуюся со слова video. Общий формат записи:

groupname::password:groupid:userlist
где
* groupname — имя группы.
* password - зашифрованный пароль группы. (Поскольку пароль для доступа к группам не применяется, обычно здесь нет никакой записи.)
* groupid - уникальный идентификационный номер группы.
* userlist - список пользователей группы, перечисленных через запятую.

Моя строка выглядела так - video:x:44:user1
где user1 - имя учетной записи с администраторскими привелегиями

Добавляем через запятую имя своей учетной записи, в результате получаем

video:x:44:user1,user

где user это имя моей учетной записи.
Сохраняем файл.

Далее я на всякий пожарный перезагрузил систему и сделал проверку:

cat /etc/group | grep video
video:x:44:user1,user

где user это моя учетная запись, теперь все впорядке, осталось только проверить работает ли камера.

Проверку провел в программах Skype, Ekiga и Kopete, во всех программах камера заработала, единственное, что в программе Ekiga пришлось немного подправить настройки - номер канала и выбрать само устройство (это делается в настройках Ekiga). В заключении немного двигаем движками настройки яркости и цветности, так же в настройках одной из этих программ, после чего камера работает одинаково хорошо во всех этих программах и даже автоматически регулирует свою чувствительность к освещенности.

Но вот в программах Camorama и Gimp еще предстоит выполнить определенные настройки, пока не знаю какие. В этих камерах картинку я пока не получил (сообщение "Could not connect to device (dev/video0) Please check connection"). С параметром -d /dev/video1 Camorama запустилась, но без изображения.
Права на файл video0 такие:

ls -ld /dev/video0
crw-rw---- 1 root video 81, 0 2008-08-22 16:39 /dev/video0

Если у кого есть совет по делу, пожалуйста пишите, я с удовольствием опробую это на примере. Хочется осуществить запуск web-камеры что называется "до конца".
Вместо "каморамы" можно использовать стандартную программу под Gnome с наименованием cheese (фотовидеобудка), программа делает фото и видео с установленной web-камеры.


Инвестируйте в энергетические предприятия. Для россиян акции газпром наиболее интересные ценные бумаги, так как компания надежна за счет своего монопольного положения.

Но если вы не совсем доверяете трезвому расчету, то почитайте Сонник Миллера, и прислушайтесь к себе.

Комментариев нет: