"Заводим" Web-камеры в ядре linux 2.6.27 openSUSE 11.1
Раздел : Система. Администрирование
Опубликовано SwitNJ [12/12/2008]
Статья подготовлена для тех у кого в openSUSE 11.1 НЕ РАБОТАЮТ ДРАЙВЕРА ДЛЯ КАМЕР! Подробности и предистория на форуме(ссылка приведена внизу статьи)

В домашней папке пользователя есть 2 файлика (не знаю какой из них повлиял, но тем не менее все заработало.. JMF не успел проверить еще) - .bashrc и .profile
в конец обоих файлов нужно приписать
export LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so
и перелогиниться.

тогда все вышеперечисленные программы из списка работающих с бибилиотекой libv4l будут работать без дополнительного шаманства в виде правки запускных файлов этих программ.

Тестирование на Java Media Framework 2.1.1e прошло успешно! камера увиделась и дает делать снимки!

вот как надо настривать:

0) проделать описанное выше.
1) скачать из сети RPM пакет "jmf-2_1_1e-linux-i586.bin" (ставим руками или из менеджера пакетов) или же самоустанавливающийся бинарник jdk-1_5_0_10-linux-i586-rpm.bin (в этом случае установка из скрипта)
2) подключить репозитарий NON-OSS или другой с последней Java от SUN (пока у меня 1.6update10), можно также найти в update-репозитарии.
3) запустить скрипт new_set_vebkam_suse.sh:

#!/bin/bash

#Установка драйвера камеры -- в СУСЕ не делаем, дрова камеры есть в репозитариях!
#Для версии ядра 2.6.27 все уже есть в самом ядре
if [ $WHO != "root" ]; then
echo -e '\E[31;44m'
echo -e '\E[1m FATAL !! you must be root to run this script\E[0m'
exit 1
fi
echo -e '\E[1;33;44m'

echo -n "Connect web-camera to PC"
read asd

#ставим gqcam + xawtv с зависимостями
zypper install gqcam
zypper install xawtv

#определяем где камера
xawtv -hwscan

echo -n "See web-camera and port to PC"
read asd

#Установка java, jmf и плагина для браузера
#драйвера камеры должны быть уже установлены

#Запускать под rootом
#в каталоге должны лежать
#jmf-2_1_1e-linux-i586.bin
#testvcam.jar

#удаляем неправильную яву
zypper remove java-1_6_0-openjdk*
zypper remove java-1_5_0-sun*

#Ставим другую :) -- не ставим -
#в сусе апдейтах или в NON-OSS идет хорошая ява - заранее подключите репозитарий!
zypper install java-1_6_0-sun +java-1_6_0-sun-alsa +java-1_6_0-sun-plugin
#версия явы - ради интереса есть ли она вообще. должна быть не ниже 1.6.0_10
java -version

#для java-приложений русские буквы
echo > /usr/share/X11/locale/microsoft-cp1251/Compose

#плагин - исправлено на универсальные пути (FIREFOX 3)
ln -s /usr/lib/jvm/jre/plugin/i386/ns7/libjavaplugin_oji.so /usr/lib/firefox/components/libjavaplugin_oji.so

#разрешаем запуск
chmod +x jmf-2_1_1e-linux-i586.bin

#ставим jmf - листаем пробелом, на все вопросы отвечаем yes
./jmf-2_1_1e-linux-i586.bin
#копируем медиа фремверк в папку с текущей явой. после переустановки явы повторить!
cp -R ./JMF-2.1.1e /usr/lib/jvm/jre

#прописываем пути, потом надо эти 4 строки
#добавить в ~/.bashrc ~/.profile !!! для каждого пользователя индивидуально !
export JDKHOME=/usr/lib/jvm/jre
export JMFHOME=$JDKHOME/JMF-2.1.1e
export LD_LIBRARY_PATH=$JMFHOME/lib:$LD_LIBRARY_PATH
export CLASSPATH=$JMFHOME/lib:$JMFHOME/lib/jmf.jar:$CLASSPATH

echo 'export JDKHOME=/usr/lib/jvm/jre' | tee -a /home/user/.profile
echo 'export JMFHOME=$JDKHOME/JMF-2.1.1e' | tee -a /home/user/.profile
echo 'export LD_LIBRARY_PATH=$JMFHOME/lib:$LD_LIBRARY_PATH' | tee -a /home/user/.profile
echo 'export CLASSPATH=$JMFHOME/lib:$JMFHOME/lib/jmf.jar:$CLASSPATH' | tee -a /home/user/.profile

echo 'export JDKHOME=/usr/lib/jvm/jre' | tee -a /home/user/.bashrc
echo 'export JMFHOME=$JDKHOME/JMF-2.1.1e' | tee -a /home/user/.bashrc
echo 'export LD_LIBRARY_PATH=$JMFHOME/lib:$LD_LIBRARY_PATH' | tee -a /home/user/.bashrc
echo 'export CLASSPATH=$JMFHOME/lib:$JMFHOME/lib/jmf.jar:$CLASSPATH' | tee -a /home/user/.bashrc

echo '/usr/lib/jvm/jre/JMF-2.1.1e/lib' > /home/user/.jmfdir
#тут присваиваем владельцем файла пользователя и его группу - поправить под себя!
chown user:users /home/user/.jmfdir

#чистим все
rm -Rf ./JMF-2.1.1e

#дополнительно
cd /etc/ld.so.conf.d
touch jmf.conf
echo '/usr/lib/jvm/jre/JMF-2.1.1e/lib' > /etc/ld.so.conf.d/jmf.conf

#регистрируем камеру - везде отвечаем yes где спросит (если спросит)!!!
$JMFHOME/bin/jmfregistry

#камера в аплетах в браузере
cp $JMFHOME/lib/jmf.jar $JDKHOME/lib/ext/
ln -s $JMFHOME/lib/*.so $JDKHOME/lib/i386/

#тестим - не всегде срабатывает прямо из скрипта так как путь поменятлся :(
#ставим прямой путь к аппелту testvcam.jar заместо /home/user/
#если не помоголо - попробуйте потестировать камеру после того как перелогинитесь
java -cp $JMFHOME/lib/jmf.jar:/home/user/testvcam.jar App

4) перелогиниться и проверить работу камеры в java


Обсуждение на форуме ЗДЕСЬ