Web-камеры в Linux
Оригинал: Webcams in Linux
Автор: Carla Schroder
Дата: 21 февраля 2008
Перевод: Андрей Синицын aka boombick
Дата перевода: 25 февраля 2009
При копировании материала обязательны указание автора, переводчика и ссылки на оригинал статьи и настоящую страницу как первоисточник перевода!
Linux и web-камеры
Сегодня web-камеры используются очень широко: большинство ноутбуков уже имеет встроенную web-камеру, многие LCD-мониторы оснащаются ими. Да и приобрести web-камеры, работающую через USB-интерфейс сегодня можно менее, чем 40$. В этой статье я расскажу вам, как настроить web-камеру для работы в linux и полноценно использовать все ее возможности
Вы не добьетесь высокого качества изображения от недорогих web-камер, в любом случае картинка будет не очень четкой и «прерывистой». Но это вполне приемлемая «прерывистость». Камеры low-end класса обычно поддерживают режим 15 кадров в секунду при разрешении 320×240 пикселей. Для сравнения, в фильмах обычно используются 24 кадра в секунду. В более дорогих моделях качество изображения лучше и битрейт повыше. Например, Logitech QuickCam Pro 9000. За цену около 100$ вы получаете встроенный микрофон, автофокус, довольно неплохую оптику и видео с разрещением до 960×720 пикселей
Так что для хорошего изображения на камере лучше не экономить. Также у вас должен быть относительно современный PC, оптимально двухядерный. Обработка видео — ресурсоемкая операция и требует «лошадиных сил». Стандартная минимальная ширина канала для передачи видео — 256 кбит/с в обе стороны
Поддержка web-камер в Linux довольно неплоха, за что стоит сказать спасибо разработчикам Linux. Обычно, производителей камер не очень заботят пользователи операционных систем, отличных от MS Windows. Michel Xhaard (Мишель Ксард) , например, с незначительной сторонней помощью разработал драйвер, который подходит более чем к 250 моделям web-камер. Этот базовый драйвер, GSPCA/SPCA5xx, входит в Debian и производные от него дистрибутивы. Также хорошие люди поддерживают проект драйвера и ПО Linux UVC , с помощью которого можно заставить заработать еще некоторые модели камер. Еще можно поблагодарить разработчиков проекта Драйвера для USB-камер Philips , хотя они по большей части поддерживают более старые модели
Плохой момент в словосочетании «неплохая поддержка» заключается в том, что в большинстве случаев драйвера придется компилировать и устанавливать руками. Добро пожаловать в старые добрые времена!
Заставляем камеру работать
Если вы еще не приобрели камеру, то сперва имеет смысл выяснить, какие модели наиболее хорошо поддерживаются в вашем дистрибутиве. Mandriva Linux наиболее «дружественна» к web-камерам. Камеры от Logitech — самые популярные, но не все модели имеют «нативные» драйвера для Linux
Если у вас уже есть web-камера, то можете уповать на везение — возможно камера заработает, как только вы подключите ее. Вот самый короткий и простой путь:
Если Camorama не работает, то можно попробовать использовать аккаунт Testbed в kopete. На рисунке изображен мой разговор с лучшим другом через kopete.
Также на скриншоте видна проблема с настройкой интегрированной камеры — вы должны поворачивать весь монитор для получения корректного изображения. К слову, я сидела довольно высоко 🙂
Camorama не поддерживает v4l2, а жаль — во второй версии сделано довольно много улучшений и исправлено много ошибок по сравнению с первой версией. На Ubuntuforums пользователи часто спрашивают, почему у них появляется ошибка «could not connect to video device (dev/video0)» при использовании Camorama. Это означает, что используется драйвер, которому нужен v4l2, или v4l вообще не установлен.
В современных Linux-дистрибутивах udev и HAL должны самостоятельно определить камеру, создать устройство /dev/video0, владельцем которого является root и принадлежащее группе video, и загрузить нужный модуль ядра. Если вы не входите в группу video, то добавьте себя туда и перелогиньтесь. Для проверки членства в группе запустите команду id без параметров. Чтобы проверить, загрузился ли нужный модуль, запустите lsmod
Узнаем «секретное имя» web-камеры
Моя камера встроена в LCD-монитор Viewsonic VX2255. Также у этого монитора есть встроенный микрофон. Камера подключается при помощи отдельного USB-кабеля. Я подключила ее и запустила следующие команды, чтобы проверить, «схватила» ли ее моя Ubuntu Gutsy
Это говорит о том, что камера поддерживается модулем ucvvideo и я могу воспользовать web-поиском для получения более подробной информации, потому что я знаю Супер Секретное Имя Web-Камеры. Помните, что вывод dmesg обновляется при подключении и отключении устройств, так что не лишним будет запомнить последние строки. Если же в выводе dmesg нет камеры, значит ядро не видит устройство и вам не повезло
Полезные ресурсы
- Один человек написал драйвера для 235 USB Web-камер
- Linux UVS драйвера и ПО
- Установка web-камеры. HOWTO. Это руководство написано для Gentoo, но подойдет для всех дистрибутивов
- Web-камеры в Ubuntu
- Настройка камеры в Debian Etch
- Linux и Logitech QuickCam Pro 9000
Другие статьи на тему вебкамер на нашем сайте:
- Jun Auza, перевод: Н.Ромоданов, «Превращаем обычную веб-камеру в камеру слежения, работающую в Ubuntu Linux» Если вы хотите превратить обычную веб-камеру в камеру слежения, чтобы знать, кто крадет ваших кур, то вам следует прочитать данную статью.
Источник
Устанавливаем веб-камеру в Linux
Оригинал: Configuring your webcam to work under Linux
Автор: Bruce Byfield
Дата: 6 сентября 2007
Перевод: Александр Тарасов aka oioki
Дата перевода: 11 сентября 2007
Если вы хотите испытать ощущения пользователя ранних версий GNU/Linux, попробуйте настроить веб-камеру на своей системе. В отличие от большинства устройств, веб-камеры зачастую не устанавливаются автоматически. Более того, если вы устанавливаете принтер, то вы знаете, что искать решение нужно в пакете Common Unix Printing System ( CUPS ) и его интерфейсах. С веб-камерами дело иначе — успех вашей затеи зависит лишь от того, что вы найдете в интернете, и от ваших знаний модулей ядра и драйверов. Эти обстоятельства приводят к тому, что настройка веб-камеры звучит как вызов — однако если отнестись к делу с пониманием того, что вы делаете, достаточной степенью осторожности и, может быть, долей удачи, возможно установить веб-камеру менее чем за вечер.
Если ваша веб-камера внешняя, это будет наилучшей предпосылкой для ее успешной настройки. Существует множество сайтов для различных производителей и моделей, поиск вам в помощь. В большинстве случаев вы не найдете исчерпывающую информацию на сайте производителя. Вместо этого лучше идите на неофициальные сайты — они заполняются самими пользователями, поэтому содержат наиболее достоверные сведения и комментарии. Webcam HOWTO , составленный Говардом Шейном (Howard Shane), хотя и устарел на пару лет, но содержит несколько полезных ссылок. Если камера подключается по FireWire, попробуйте список цифровых камер IEEE1394 , поддерживаемый Дэмьеном Душампсом (Damien Douxchamps).
Особенно полезен сайт A Free World Мишеля Ксаарда (Michel Xhaard), чьи драйвера Spca5xx уже нашли путь к репозиториям основных дистрибутивов, включая Debian. Если ваша веб-камера есть в списке, а пакет драйверов в репозитории вашего дистрибутива, тогда ваши шансы велики, и камера может быть определена автоматически при установке пакета.
Но иногда придется повозиться, например, если у вас встроенная веб-камера (такое часто встречается у ноутбуков) и это не волновало вас на момент покупки компьютера, либо ваш дистрибутив не содержит пакетов с драйверами. В этих случаях настроить веб-камеру может помочь поиск в интернете конкретно по вашей модели компьютера.
Много информации о камере можно почерпнуть прямо с компьютера. Для этого есть несколько способов:
- Протестируйте камеру с помощью подходящей программы (см. ниже). Если заработает, тогда ваша камера напрямую поддерживается ядром. Этот случай редок на сегодняшний день.
- Используйте команду dmesg | more , чтобы узнать определена ли веб-камера при загрузке системы. Найдя упоминание о ней, попробуйте найти созвучный модуль ядра (опять же, можно попробовать угадать) в каталоге /lib/modules/ , конкретно в подкаталоге /usb , который зарыт в глубине файловой системы. Точное расположение подкаталога /usb зависит от дистрибутива. В Debian полный путь /lib/modules/kernel/build/drivers/usb , а в Fedora 7 — /lib/modules/kernel/kernel/drivers/usb .
- На сегодняшний день наиболее распространены USB-камеры. Для просмотра подключенных USB-устройств используйте консольную программу lsusb , либо графическую v4l2-tool (поищите ее в своем репозитории). Найдите камеру по ее имени (или попробуйте найти ее методом исключения, или вообще угадать) и запишите ей соответствующий 8-значный код (с двоеточием посередине) в последней колонке списка. Этот код определяет производителя и идентификатор продукта, который можно использовать при поиске драйвера в интернете. В программе v4l2-tool ввод этого идентификатора во вкладке Suggest Driver даже может дать вам название нужного драйвера. Вооружившись этой информацией, отправляйтесь в интернет за драйвером. Если найдете, загружайте и компилируйте его. В некоторых случаях вам придется сперва загрузить кое-какие зависимости. К примеру, драйвер для камеры Ricoh R5U870 требует наличия пакета поддержки динамических модулей ядра (Dynamic Kernel Module Support, DKMS).
В случае упомянутой Ricoh R5U870 включение DKMS означает, что драйвер может быть автоматически установлен, как только будет скомпилирован. Возможно, потребуется устанавливать драйвер как заплатку (patch) к ядру, хотя это больше относится к старым камерам. В большинстве случаев, если у вас получится скомпилировать драйвер, установить его (загрузить модуль ядра) можно будет командой modprobe имя_драйвера . Если вы найдете удачную конфигурацию и будете удовлетворены работой камеры, закрепите свой выбор добавлением имени драйвера в скрипт /etc/modules или строки modprobe имя_драйвера в /etc/rc.d/rc.local . Тогда ваш драйвер будет загружаться при запуске системы.
Тестирование
Если вы дошли досюда, значит, все самое сложное позади, но вас еще могут подстерегать некоторые трудности. В зависимости от дистрибутива, вам может потребоваться создать с помощью команды addgroup новую группу пользователей video и поместить свои учетные записи в нее, чтобы все пользователи смогли пользоваться веб-камерой. Вдобавок нужно проверить работу камеры с помощью нескольких программ, таких как CamStream , Ekiga и Kopete — некоторые могут не работать с вашей камерой. Попробуйте обновить эти программы, иногда это может решить проблему.
Если для установки драйвера веб-камеры вы использовали DKSM, то после установки проверьте, что все остальное у вас работает (к примеру, у меня перестала работать беспроводная сетевая карта, включенная с помощью Ndiswrapper ). Эта проблема может остаться «висеть» даже при перезагрузке, однако при выключении компьютера и повторном включении проблема исчезает. Если же и это не помогло, попробуйте удалить остановившееся устройство и установить его заново.
Заключение
Бесспорно, эта статья лишь отправная точка. В завершение хочу отметить, что многие камеры из вышеупомянутого списка являются результатом ребрендинга других камер, или наоборот, их выпускают под новыми названиями. Вполне возможны случаи, когда устройства, которые называются и выглядят одинаково, но совершенно различаются внутренне.
Производители веб-камер, как и производители других устройств, совершенно не заинтересованы в выпуске драйверов для GNU/Linux. Таким образом, подавляющее большинство драйверов веб-камер для GNU/Linux — результат обратной разработки драйверов разработчиками-энтузиастами, многие из которых никогда не задумывались о стандартизации результатов своей работы.
По этим причинам, я старался избегать конкретики. Проблема не в том, что настройка веб-камера сложна (вовсе нет), проблема в том, что информацию приходится собирать по крупицам. Надеюсь, эта статья поможет вам в этом нелегком деле.
Источник
Работа с usb видеокамерой в Linux. Часть 1
По популярности видеокамера, сегодня, стоит в одном ряду с микрофоном и наушниками. Она используется в различных направлениях, таких как распознавание объектов, дополненная реальность, видеоконференции и множество других. Но что же скрыто под капотом этих сложнейших программ? Как мы получаем картинку с видеокамеры? Этот цикл статей позволит взглянуть на простоту работы с видеокамерой на низком уровне, обработку полученного изображения.
Для начала, немного информации о работе с устройствами в системе Linux. Устройства в nix системах представляют собой файл. С некоторыми файлами-устройств мы можем работать как с обычными файлами. Например:
эта команда выведет на экран весь диск sda.
Есть устройства с которыми нельзя работать напрямую, к ним относится видеокамера.При попытке это сделать мы получим такую реакцию системы:
*Где /dev/video0 это файл-устройство найшей видеокамеры.
Для работы с ней нам понадобится системная функция ioctl детальнее о ней можно ознакомится [1]. Попробуем это применить. Вот код позволяющий считать информации с устройства (альтернатива команде cat для видеоустройств):
В первых строках кода считываются параметры с которой запущено приложение. Если параметров нету то device_name принимает стандартоне значение «/dev/video0».
В блоке «Open Device» происходит открытие устройства системной функцией open (нужно подключить header fcntl.h). Обязательный параметр O_RDWR отвечает за открытие устройства считывания/записи. Если при подключении возникла ошибка, то функция open вернет -1.
Блок «Read Params From Device» — это сердце нашей маленькой программы. Для его использования надо подключить билиотеку возможно прийдется её установить, у каждого дистрибутива свой пакет под эту библиотеку
Системная функция ioctl имеет три параметра:
file_device — дескриптор нашего устройства
VIDIOC_QUERYCAP — функция ядра, которую применяем для нашего устройства.
device_params — область памяти куда будет сброшен результат функции «VIDIOC_QUERYCAP».
device_params это структура состоящая из таких полей:
если возникла ошибка ioctl вернет -1
Блок «Close Device» закрывает дескриптор устройства.
Посмотрим программу в действии.
устройство не определилось ядром либо не подключено уборщица опять ненужные провода дергала.
Подключаем и заново запуск. Получаем такую информацию:
поле capabilities и device capabilities можно расшифровать благодаря константам из файла videodev2.h:
На этом вводная статья заканчивается. В следующих обзорах будут затронуты, такие темы как memory-mapping, виодеформаты изображения, настройка камеры, вывод изображения в текстуру, работа с несколькими камерами.
Источник