Sisällysluettelo

  1. Logitech QuickCam Pro 9000
    1. GUVCViewer
    2. Moduli on valmiina Ubuntu 7.10:ssä
    3. Ohjelmia uvcvideo-modulin käyttämiseksi
      1. uvcview-20071108
      2. luvcview-20070512
      3. Uvc-streamer
      4. Mjpg-streamer
      5. Mjpg-streamer ja Cambozola-java-applet
      6. MPlayer
      7. Ffmpeg-kaappaus
    4. Usb-mikrofoni
      1. Alsa - Arecord

Logitech QuickCam Pro 9000

Logitech Quickcam Pro 9000 on hyvällä optiikalla sekä mikrofonilla varustettu web-kamera.

Pro 9000 web-kamera käyttää modulia, jonka nimi on "uvcvideo". Modulin kotisivu:

http://linux-uvc.berlios.de/

GUVCViewer

GUVCViewer on erinomainen ohjelma, jolla voi tallentaa webkameran kuvaa ja ääntä.

http://forum.ubuntu-fi.org/index.php?topic=16998.msg125757

Moduli on valmiina Ubuntu 7.10:ssä

asmok@ubuntu:~$ locate uvcvideo 
/lib/modules/2.6.22-14-generic/ubuntu/media/usbvideo/uvcvideo.ko
/lib/modules/2.6.22-14-rt/ubuntu/media/usbvideo/uvcvideo.ko
asmok@ubuntu:~$

Modulin voi myös rakentaa itse viimeisimmästä lähdekoodista. Lähdekoodi haetaan svn-ohjelmalla. Modulin rakentamiseen tarvitaan kunkin Linux-ytimen header-tiedostot sekä joukko ohjelmoimiseen tarvittavia ohjelmia. Itse Linux-ydintä ei tarvitse kuitenkaan rakentaa kokonaan uusiksi, vain moduli - jos siihen on tarvetta - se on valmiina Ubuntu 7.10:ssä.

svn checkout svn://svn.berlios.de/linux-uvc/linux-uvc/trunk 

Ubuntu 7.10 tunnistaa kameran automaattisesti ja lataa modulin valmiiksi.

asmok@ubuntu:~$ lsusb | grep Logitech 
Bus 003 Device 004: ID 046d:0990 Logitech, Inc. 
asmok@ubuntu:~$
asmok@ubuntu:~$ lsmod | grep video 
video                  18060  0 
uvcvideo               53636  0 
video_buf              26244  1 saa7146_vv
compat_ioctl32          2304  1 uvcvideo
videodev               29568  2 uvcvideo,saa7146_vv
v4l1_compat            15364  3 uvcvideo,saa7146_vv,videodev
v4l2_common            18560  3 uvcvideo,saa7146_vv,videodev
usbcore               139912  9 snd_usb_audio,snd_usb_lib,uvcvideo,xpad,hci_usb,usbhid,ehci_hcd,uhci_hcd
asmok@ubuntu:~$

Ohjelmia uvcvideo-modulin käyttämiseksi

Uvcvideo-modulin avuksi on ohjelmoitu pieni joukko tehokkaita ohjelmia.

uvcview-20071108

Uvcview on Gnome-ohjelma, sen kotisivu on täällä:

http://www.nurs.or.jp/~ogochan/hack/uvcview.html

luvcview-20070512

Toinen samantapainen ohjelma on luvcview. Tällä ohjelmalla on mahdollista tallentaa videota avi-muodossa.

Ohjelman linkki, uusin versio:

http://mxhaard.free.fr/spca50x/Investigation/uvc/luvcview-20070512.tar.gz

Uvc-streamer

Kolmas on komentoriviltä toimiva striimausohjelma, lähetettävää videota voi seurata samassa lähiverkossa VLC-ohjelmalla.

Ohjelman kotisivu:

http://naaa.de/uvc_streamer.htm

Ohjelman käynnistys.

asmok@ubuntu:~/bin/mjpg-streamer/uvc-streamer$ ./uvc_stream 
Using V4L2 device.....: /dev/video0
Resolution............: 640 x 480
frames per second.....: 5
TCP port..............: 8080
motor control TCP port: 8081

Striimatun videon katselu vlc-ohjelmalla.

asmok@ubuntu:~/bin/mjpg-streamer/uvc-streamer$ vlc http://localhost:8080/ 
VLC media player 0.8.6c Janus

Mjpg-streamer

Kun uvc-streamer lähettää kuvavirran sellaisenaan lähiverkkoon, niin mjpg-streamer-ohjelmalla kuvavirran saa upotettua www-sivulle. Ohjelmaan sisältyy pieni http-palvelin tai palvelu (output_http.so), joten kokonaisen LAMP-palvelimen asennus on turhaa, kun haluaa lähettää kuvavirtaa omalta työasemalta lähiverkkoon.

Ohjelman kotisivu:

http://naaa.de/uvc_streamer.htm

asmok@ubuntu:~/bin/mjpg-streamer/mjpg-streamer$ ./mjpg_streamer -o "output_http.so -w ./www" 
MJPG Streamer Version.: 2.0
 i: Using V4L2 device.: /dev/video0
 i: Desired Resolution: 640 x 480
 i: Frames Per Second.: 5
 i: Format............: MJPEG
 o: www-folder-path...: ./www/
 o: HTTP TCP port.....: 8080
 o: username:password.: disabled

Mjpg-streamer ja Cambozola-java-applet

Mjpg-streamer sisältää Cambozola-java-appletin, jolla kameraa voi jonkin verran ohjata. Kamerassahan ei ole kääntyvää mekanismia, mutta suurennos ja pienennys onnistuu.

MPlayer

MPlayer toimii komentoriviltä käynnistettynä seuraavalla tavalla.

mplayer -tv driver=v4l2:width=640:height=480:device=/dev/video0:fps=30:outfmt=yuy2 tv://

asmok@ubuntu:~$ mplayer -tv driver=v4l2:width=640:height=480:device=/dev/video0:fps=30:outfmt=yuy2 tv:// 
MPlayer 1.0rc2-4.1.3 (C) 2000-2007 MPlayer Team
CPU: Intel(R) Core(TM)2 CPU          6400  @ 2.13GHz (Family: 6, Model: 15, Stepping: 2)
CPUflags:  MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled with runtime CPU detection.
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing tv://.
TV file format detected.
Selected driver: v4l2
 name: Video 4 Linux 2 input
 author: Martin Olschewski <olschewski@zpr.uni-koeln.de>
 comment: first try, more to come ;-)
v4l2: ioctl get standard failed: Invalid argument
Selected device: UVC Camera (046d:0990)
 Capabilites:  video capture  streaming
 supported norms:
 inputs: 0 = Camera 1;
 Current input: 0
 Current format: YUYV
tv.c: norm_from_string(pal): Bogus norm parameter, setting default.
v4l2: ioctl enum norm failed: Invalid argument
Error: Cannot set norm!
Selected input hasn't got a tuner!
v4l2: ioctl set mute failed: Invalid argument
v4l2: ioctl query control failed: Invalid argument
xscreensaver_disable: Could not find XScreenSaver window.
GNOME screensaver disabled
==========================================================================
Opening video decoder: [raw] RAW Uncompressed Video
VDec: vo config request - 640 x 480 (preferred colorspace: Packed YUY2)
VDec: using Packed YUY2 as output csp (no 0)
Movie-Aspect is undefined - no prescaling applied.
VO: [xv] 640x480 => 640x480 Packed YUY2 
Selected video codec: [rawyuy2] vfm: raw (RAW YUY2)
==========================================================================
Audio: no sound
Starting playback...

Ffmpeg-kaappaus

Ffmpeg osaa kaapata kuvavirtaa tällaisella komennolla.

ffmpeg -f video4linux2 -s 640x480 -r 15 -i /dev/video0 -f m4v out.m4v

asmok@ubuntu:~$ ffmpeg -f video4linux2 -s 640x480 -r 15 -i /dev/video0 -f m4v out.m4v 
FFmpeg version SVN-rUNKNOWN, Copyright (c) 2000-2007 Fabrice Bellard, et al.
  configuration: --enable-gpl --enable-pp --enable-swscaler --enable-pthreads --enable-libvorbis --enable-libtheora --enable-libogg --enable-libgsm --enable-dc1394 --disable-debug --enable-libmp3lame --enable-libfaadbin --enable-libfaad --enable-libfaac --enable-xvid --enable-x264 --enable-amr_nb --enable-amr_wb --enable-shared --prefix=/usr
  libavutil version: 1d.49.3.0
  libavcodec version: 1d.51.38.0
  libavformat version: 1d.51.10.0
  built on Nov 17 2007 21:23:57, gcc: 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
[video4linux2 @ 0xb7fa3610][3]Capabilities: 4000001
Input #0, video4linux2, from '/dev/video0':
  Duration: N/A, bitrate: 73728 kb/s
  Stream #0.0: Video: rawvideo, yuyv422, 640x480, 73728 kb/s, 15.00 fps(r)
Output #0, m4v, to 'out.m4v':
  Stream #0.0: Video: mpeg4, yuv420p, 640x480, q=2-31, 200 kb/s, 15.00 fps(c)
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop encoding
frame=   96 q=22.2 Lsize=     423kB time=6.4 bitrate= 541.6kbits/s    
video:31kB audio:0kB global headers:0kB muxing overhead 1246.043680%
asmok@ubuntu:~$

Kaapattu kuvavirta m4v-muodossa. Tiedoston katselu onnistuu parhaiten MPlayer-ohjelmalla.

asmok@ubuntu:~$ file out.m4v 
out.m4v: MPEG sequence, v4, video, simple @ L1
asmok@ubuntu:~$

Usb-mikrofoni

Web-kameran mikrofonia voi käyttää sellaisenaan yksinkertaisena äänittävän äänikorttina vaikkapa podcastien tekemiseen.

Ensin tarkistetaan äänikorttien osoitteet. Tässä koneessa on emolevyn oma äänipiiri kytketty pois käytöstä, siksi se ei ole käytössä. Sen korvaa SB Live! -äänikortti.

asmok@ubuntu:~$ cat /proc/asound/cards 
 0 [Live           ]: EMU10K1 - SBLive! Value [CT4832]
                      SBLive! Value [CT4832] (rev.6, serial:0x80271102) at 0x1000, irq 23
 1 [U0x46d0x990    ]: USB-Audio - USB Device 0x46d:0x990
                      USB Device 0x46d:0x990 at usb-0000:00:1a.7-3.2, high speed
asmok@ubuntu:~$

Alsa - Arecord

Äänitys tapahtuu komentoriviltä seuraavalla komennolla. Äänitys katkaistaan brutaalisti Ctrl+C -komennolla.

arecord -D plughw:1,0 -c 1 -f cd -v testi.wav