webcamera linux
uvcvideo?
Была надежда, что qc-usb сможет. Но даже после моих попыток расставить различые костыли, ничего не вышло.
Проблема в том, что у меня довольно старая система и нет возможности сделать апгрейд.
тогда не судьба. усб вэб-камеры наконец-то стандартизовались и всё новое идёт уже с увк интерфейсом.
Однако, программы, которые, по идее, должны делать grab
изображения с устройства (я использую vgrabbj выдают
зеленое изображение.
Я заметил, что uvcvideo использует v4l1_compat, поэтому,
после непродолжительных гуглений выяснилось, что существует
предположительный workaround
LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so vgrabbj
Но проблема в том, что у меня Ubuntu 6.10, а как сказал
выше все веб-камеры стандартизировались и под них
стали писать библиотеки. В те времена, когда была ubuntu
6.10 этих библиотек еще не было (поэтому их нет в репозитории) => я
решил собрать из исходников
скачал libv4l-0.6.4.tar.gz (пробовал и libv4l-0.5.9.tar.gz)
http://ftp.pardus.org.tr/pub/source/2009/
При компиляции получаю:
In file included from libv4lconvert.c:27:
libv4lconvert-priv.h:104: error: array type has incomplete element type
libv4lconvert.c: In function ‘v4lconvert_get_framesizes’:
libv4lconvert.c:921: error: variable ‘frmsize’ has initializer but incomplete type
libv4lconvert.c:921: error: unknown field ‘pixel_format’ specified in initializer
libv4lconvert.c:921: warning: excess elements in struct initializer
libv4lconvert.c:921: warning: (near initialization for ‘frmsize’)
libv4lconvert.c:921: error: storage size of ‘frmsize’ isn’t known
libv4lconvert.c:925: error: ‘VIDIOC_ENUM_FRAMESIZES’ undeclared (first use in this function)
libv4lconvert.c:925: error: (Each undeclared identifier is reported only once
libv4lconvert.c:925: error: for each function it appears in.)
libv4lconvert.c:935: error: ‘V4L2_FRMSIZE_TYPE_DISCRETE’ undeclared (first use in this function)
libv4lconvert.c:940: error: ‘V4L2_FRMSIZE_TYPE_CONTINUOUS’ undeclared (first use in this function)
libv4lconvert.c:941: error: ‘V4L2_FRMSIZE_TYPE_STEPWISE’ undeclared (first use in this function)
кто-нибудь собирал это чудо?
А там версия ядра совместимая с этой библиотечкой? Надо в ее доках почитать, наверное, может скачать более старую версию.
может скачать более старую версию.
не, ну можно попытаться патчи провернуть вспять
А, ну хотя я затупил, мала вероятность, что можно найти просто версию, которая будет с сильно старым ядром работать.
кто-нибудь собирал это чудо?Поставь новые linux-headers через репу или руками, от ядра ему нужен либо совершенно
стандартный open/mmap интерфейс доступа к v4l девайсу, либо объявление типов фреймов.
Можешь попробовать взять libv4l от hardy из соответствующего ppa http://launchpad.net/~libv4l/+archive/ppa
upd
Ну и походу еще имена ioctl некоторых добавились
Я собрал все компоненты.
Итак, в конечном итоге имеем:
"Старая" Ubuntu:
# cat /etc/*release*
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=6.10
DISTRIB_CODENAME=edgy
DISTRIB_DESCRIPTION="Ubuntu 6.10"
Камера
# lsusb
Bus 001 Device 002: ID 046d:0824 Logitech, Inc.
Мне повезло, что когда-то я баловалася с одной
функциональностью в ядре, поэтому удалось из
остатков собрать себе ядро с uvcvideo (будет
загружаться, если понадобится вебкамера).
Я подпер драйвер uvcvideo, включив мою камеру в список
поддерживаемых девайсов. Уже после этого я посмотрел
внимательно и обнаружил, что, если устройства нет в
списке, то она пытается следовать generic way, так что
может быть, камера заработает и без хаков драйвера.
# uname -r
2.6.26.1
# lsmod | grep uvc
uvcvideo 54024 0
compat_ioctl32 2176 1 uvcvideo
videodev 31104 1 uvcvideo
v4l1_compat 15108 2 uvcvideo,videodev
usbcore 135664 6 uvcvideo,usbhid,snd_usb_audio,snd_usb_lib,ohci_hcd
Что касается библиотек, то там необходимо подменить
файл videodev2.h, так как при сборке идет include файла
videodev2.h из headers, а у меня-то хедера от ядра
2.6.17-10. К сожалению, videodev2.h от ядра 2.6.26.1
(самое свежее, которое мне доступно на данный момент)
тоже не подходит к любой версии библиотек, так что
libv4l-0.6.4.tar.gz и libv4l-0.5.9.tar.gz мне не подошли.
В итоге, пошло только libv4l-0.1.
http://people.atrpms.net/~hdegoede/
Собираем и получаем необходимые *.so
# ls /usr/src/libv4l-0.1/lib/
libv4l1.so libv4l2.so libv4lconvert.so removemenot v4l2convert.so
libv4l1.so.0 libv4l2.so.0 libv4lconvert.so.0 v4l1compat.so
Все, делаем прелоад:
# export LD_PRELOAD=/usr/src/libv4l-0.1/lib/v4l1compat.so
# export LD_LIBRARY_PATH=/usr/src/libv4l-0.1/lib:$LD_LIBRARY_PATH
Смотрим на параметры видео:
# vgrabbj -s /dev/video0
vgrabbj, Version 0.9.6
Videodevice name: /dev/video0 (UVC Camera (046d:0824
Capabilities
Type : 1 Values can be looked up at videodev.h
Channels : 1
Audio : 0
MaxWidth : 176
MaxHeight: 144
MinWidth : 48
MinHeigth: 32
Current Settings:
Brightness: 19018
Hue : 0
Color : 9766
Contrast : 8224
Whiteness : 0
Depth : 24
Palette : RGB24 (4)
Width : 176
Height : 144
Chromakey : 0
по значению width и height ставим imagesize of input device
(в нашем случае это qcif )
# vgrabbj -f test.jpg -d /dev/video0 -i qcif
Короче говоря, обладатели новых версий ubuntu должны получать работающую камеру из коробки.
а ведь у меня установлен именно он... (
Ubuntu 6.10
А некрофилия - это обязательное условие процесса?
А некрофилия - это обязательное условие процесса?Если кратко отвечать на твой вопрос, то - да, обязательный.
Вот более подробный ответ:
Моё использование данной системы довольно консервативно: музыка, фильмы, интернет, программирование.
При этом обычно я не выхожу за пределы "коробочных решений", большинство из которых имеются в репозитории.
Всего под систему отведено 8Gb, из которых постоянно свободных остается где-то 30-600 Mб. Тут можно было
вспомнить о том, что же все-таки первично, бытие или сознание, а потому не ясно, что первично, мое консервативное использование системы, или ограниченность самой системы. Как бы то ни было, "некоробочных
решений" можно пересчитать по пальцам обеих рук, и все они работают, тьфу-тьфу-тьфу. Таким образом, я имею
полностью рабочую станцию, которая отвечает всем моим требованиям. Зачем мне нужно обновляться?
На самом деле, очень интересно послушать и твою точку зрения.
Ну вот в частности ты столкнулся с проблемой, которая уже решена в более поздних версиях дистрибутива. Твоя версия дистрибутива уже не поддерживается, актуальной информации по ней в интернете практически нет. Уже достаточно давно вышел новый стабильный (LTS) релиз 10.04, который будет поддерживаться еще 3 года. Думаю, вполне можно потратить пару часов на переустановку системы и настройку привычного окружения, чтобы еще на 3 года забыть об обновлениях.
переустановкуУбунта без переустановки не обновляется?
Убунта без переустановки не обновляется?Прыжок на 4 года сразу не осилит. Особенно если свободного места - 30мб
Точнее, она попытается осилить, но почти наверняка на чем-нибудь запнется.
Можно обновлять до 8.04, потом до 10.04, но это какой-то геморрой.
Моё использование данной системы довольно консервативно: музыка, фильмы, интернет, программирование.принимал что-то, когда писал пост? =)
При этом обычно я не выхожу за пределы "коробочных решений", большинство из которых имеются в репозитории.
Всего под систему отведено 8Gb, из которых постоянно свободных остается где-то 30-600 Mб. Тут можно было
вспомнить о том, что же все-таки первично, бытие или сознание, а потому не ясно, что первично, мое консервативное
использование системы, или ограниченность самой системы. Как бы то ни было, "некоробочных
решений" можно пересчитать по пальцам обеих рук, и все они работают, тьфу-тьфу-тьфу. Таким образом, я имею
полностью рабочую станцию, которая отвечает всем моим требованиям. Зачем мне нужно обновляться?
На самом деле, очень интересно послушать и твою точку зрения.
нет, а что?
переход от коробочных решений к вопросам бытия показался подозрительно резким. =)
Оставить комментарий
kataich
Скажите, никто, случайно, не является обладателем webcamer'ыLogitech C160, работающей под Linux?
Какой драйвер её поддерживает?