Acer Crystal Eye |
Jootetöö tehtud, pistsin kaamera prooviks lauaarvuti külge. Vaadates dmesg logisid, tunti kaamera kiirelt ära ja proovides Cheese-i, ta töötab ka kenasti. Aeg kaamera Pi külge ühendada.
Nii ladusalt see Rasperry-ga ei läinud. Kaamerad tunti küll ära aga drivereid neile ei leitud. Väljavõte dmesg-ist:
[ 3.779541] usb 1-1.3: new high-speed USB device number 5 using dwc_otgÜritasin nii kuis üritasin, alati lõpetasin tupikteel. Lõpuks sattusin ühele Raspberry Pi foorumi USB veebikaamerate teemale, kus mainiti, et USB veebikaamerate tugi on GitHubi järgi Raspberry Pi kernelisse lisatud. Samas oli ka viide oma ChromeOS ja nüüd ka Raspberry Pi häkkide poolest tuntuks saanud Hexxeh-i kodulehele. Ta on hakkama saanud ühe toreda utiliidiga, millega kernelit imelihtne uuendada on. Juhised selle paigaldamiseks ja kasutamiseks on rpi-update-i GitHubi lehel olemas. Järgisin juhiseid, uuendasin kerneli ja tegin peale seda restardi.
[ 4.188997] usb 1-1.3: New USB device found, idVendor=5986, idProduct=0102
[ 4.203743] usb 1-1.3: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[ 4.218632] usb 1-1.3: Product: Acer Crystal Eye webcam
Peale taaskäivitust vaatasin kohe lsmod väljundit ja sinna oligi tekkinud uvcvideo moodul. Ka dmesg näitas midagi uut. Veebikaamera oli omale seadmenime saanud.
Raspberry Pi koos Acer Crystal Eye kaameraga |
Alustuseks installime mõned vajalikud pakid:
pi@raspberrypi:~$ sudo apt-get install subversion libv4l-dev libjpeg8-dev imagemagick fswebcam
Sõltuvusi on neil päris palju, võib rahulikult viieteistkümneks minutiks eemale minna. Kui see tehtud, siis järgmisena kontrollime, kas veebikaamera toetab MJPEG striimi:
pi@raspberrypi:~$ sudo fswebcam --verbose
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
src_v4l2_get_capability,86: /dev/video0 information:
src_v4l2_get_capability,87: cap.driver: "uvcvideo"
src_v4l2_get_capability,88: cap.card: "Acer Crystal Eye webcam "
src_v4l2_get_capability,89: cap.bus_info: "usb-bcm2708_usb-1.3"
src_v4l2_get_capability,90: cap.capabilities=0x04000001
src_v4l2_get_capability,91: - VIDEO_CAPTURE
src_v4l2_get_capability,102: - STREAMING
No input was specified, using the first.
src_v4l2_set_input,180: /dev/video0: Input 0 information:
src_v4l2_set_input,181: name = "Camera 1"
src_v4l2_set_input,182: type = 00000002
src_v4l2_set_input,184: - CAMERA
src_v4l2_set_input,185: audioset = 00000000
src_v4l2_set_input,186: tuner = 00000000
src_v4l2_set_input,187: status = 00000000
src_v4l2_set_pix_format,540: Device offers the following V4L2 pixel formats:
src_v4l2_set_pix_format,553: 0: [0x47504A4D] 'MJPG' (MJPEG)
src_v4l2_set_pix_format,553: 1: [0x56595559] 'YUYV' (YUV 4:2:2 (YUYV))
Using palette MJPEG
Adjusting resolution from 384x288 to 352x288.
src_v4l2_set_mmap,692: mmap information:
src_v4l2_set_mmap,693: frames=4
src_v4l2_set_mmap,740: 0 length=2621440
src_v4l2_set_mmap,740: 1 length=2621440
src_v4l2_set_mmap,740: 2 length=2621440
src_v4l2_set_mmap,740: 3 length=2621440
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
There are unsaved changes to the image.
Tundub, et on. Vastasel juhul tuleks siinkohal veel pisut jändamist, et striim ümber konverditud saaks. Antud juhul teeb seda veebikaamera ise ja Raspberry ise selleks vaeva nägema ei pea.
Järgmiseks installime mjpg_streamer-i. Selleks tõmbame lähtekoodi SVN-ist:
svn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer
Liigume kataloogisügavustesse sisse:
cd mjpg-streamer/mjpg-streamer
Valmistame failid ette:
make USE_LIBV4L2=true clean all
Installime:
sudo make DESTDIR=/usr install
Liigume välja ja kustutame lähtefailid:
cd ../.. ; rm -rf mjpg-streamer
Testime:
mjpg_streamer -i "/usr/lib/input_uvc.so -d /dev/video0" -o "/usr/lib/output_http.so -p 80 -w /usr/www -n"
Liikudes nüüd brauseriga Raspberry Pi IP-aadressile, avaneb tutvustav leht, mis esitleb tarkvara erinevaid võimalusi:
MJPG-Streameri avaleht |
Järgnevalt teeme viisi striimimise mugavamaks käivitamiseks.
Kõigepealt loome faili:
sudo touch /etc/init.d/mjpg_streamer.sh
sudo chmod +x /etc/init.d/mjpg_streamer.shAvame faili:
sudo nano /etc/init.d/mjpg_streamer.shKäivitsuskript on algselt pärit phillips321 blogist väikese parandusega minu poolt:
#!/bin/shTeeme ka nii, et skript bootimisel käivituks:
# /etc/init.d/mjpg_streamer.sh
# v0.2 phillips321.co.uk updated by raidok.blogspot.com
### BEGIN INIT INFO
# Provides: mjpg_streamer.sh
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: mjpg_streamer for webcam
# Description: Streams /dev/video0 to http://IP/?action=stream
### END INIT INFO
f_message(){
echo "[+] $1"
}
# Carry out specific functions when asked to by the system
case "$1" in
start)
f_message "Starting mjpg_streamer"
mjpg_streamer -b -i "/usr/lib/input_uvc.so -d /dev/video0" -o "/usr/lib/output_http.so -p 80 -w /usr/www -n"
sleep 2
f_message "mjpg_streamer started"
;;
stop)
f_message "Stopping mjpg_streamer…"
killall mjpg_streamer
f_message "mjpg_streamer stopped"
;;
restart)
f_message "Restarting daemon: mjpg_streamer"
killall mjpg_streamer
mjpg_streamer -b -i "/usr/lib/input_uvc.so -d /dev/video0" -o "/usr/lib/output_http.so -p 80 -w /usr/www -n"
sleep 2
f_message "Restarted daemon: mjpg_streamer"
;;
status)
pid=`ps -A | grep mjpg_streamer | grep -v "grep" | grep -v mjpg_streamer. | awk '{print $1}' | head -n 1`
if [ -n "$pid" ];
then
f_message "mjpg_streamer is running with pid ${pid}"
f_message "mjpg_streamer was started with the following command line"
cat /proc/${pid}/cmdline ; echo ""
else
f_message "Could not find mjpg_streamer running"
fi
;;
*)
f_message "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
exit 0
sudo update-rc.d /etc/init.d/mjpg_streamer.sh defaultsNüüd võib proovida ka restarti teha, peaks automaatselt käivituma.
Kommentaare ei ole:
Postita kommentaar