Repository 32bit  Forum
Repository 64bit  Wiki

Linux Webcam Monitoring BTTV & Philips Webcam: differenze tra le versioni

Da Slacky.eu.
(Installazione e utilizzo di Xawtv)
(Note finali)
 
(3 revisioni intermedie di un utente non mostrate)
Riga 241: Riga 241:
= Installazione e utilizzo di Motion =
= Installazione e utilizzo di Motion =
  +
Come ampiamente spiegato nell'articolo precedente con Motion possiamo effettuare
  +
l'acquisizione di immagini che impegnano il campo visivo della nostra webcam.
  +
Installazione di Motion
  +
wget http://cesnet.dl.sourceforge.net/sourceforge/motion/motion-3.1.12.tar.gz
  +
sh ./configure --with-libavcodec=/usr/src/ffmpeg-0.4.8/libavcodec --without-pgsql
  +
make && make install
  +
La configurazione è semplice i parametri più importanti impostati sono questi:
  +
#motion.conf
  +
videodevice /dev/video0
  +
framerate 100
  +
width 640
  +
height 480
  +
threshold 1500
  +
noise_level 32
  +
night_compensate on
  +
snapshots 1800
  +
output_normal yes
  +
target_dir /htdir/htdocs/webcam
  +
quality 100
  +
ffmpeg_cap_new yes
  +
ffmpeg_timelaps on
  +
video_pipe /dev/video4
  +
motion_video_pipe /dev/video6
  +
webcam_port 8000
  +
webcam_quality 90
  +
webcam_motion no
  +
webcam_maxrate 100
  +
  +
Per poter utilizzare le video pipes occorre utilizzare il vloopback
  +
tar vloopback-0.91.tar.gz
  +
cd vloopback-0.91
  +
make
  +
insmod vloopback.o dev_offset=2 pipes=7
  +
# cat /proc/video/vloopback/vloopbacks
  +
vloopback version 0.91
  +
Loop Input Status Output Status
  +
0 video2 - video3 -
  +
1 video4 W video5 R
  +
2 video6 W video7 -
  +
3 video8 - video9 -
  +
4 video10 - video11 -
  +
5 video12 - video13 -
  +
6 video14 - video15 -
  +
Esecuzione di Motion
  +
Per poter lavorare con motion ed essere sicuro che acquisisse usando il segnale (NTSC) ho
  +
dovuto passarglielo da riga di comando:
  +
motion -n ntsc
  +
Debug
  +
thread0 device: /dev/video0 input: 1
  +
thread pid: 1264
  +
waiting for threads to finish, pid: 1262
  +
Opening video loopback device for normal pictures
  +
Failed to open video loopback
  +
root@openmosix1:/usr/local/etc# motion -n ntsc
  +
thread0 device: /dev/video0 input: 1
  +
thread pid: 1267
  +
waiting for threads to finish, pid: 1265
  +
Opening video loopback device for normal pictures
  +
Opening video loopback device for motion pictures
  +
Webcam server listning on port: 8000
  +
Motion detected
  +
File of type video/mpeg saved to: /htdir/htdocs/webcam/2004/04/15//122246.mpg
  +
File of type image/jpg saved to: /htdir/htdocs/webcam/2004/04/15/12/22/46-00.jpg
  +
Motion detected
  +
File of type image/jpg saved to: /htdir/htdocs/webcam/2004/04/15/12/22/46-01.jpg
  +
Motion detected
  +
File of type image/jpg saved to: /htdir/htdocs/webcam/2004/04/15/12/22/46-02.jpg
  +
= Risorse =
= Risorse =
  +
Video For Linux
  +
http://online.infomedia.it/riviste/dev/68/articolo24/articolo.htm
  +
  +
Linux.bytesex.org
  +
http://linux.bytesex.org/
  +
  +
BTTV Mini-HOWTO
  +
http://it.tldp.org/HOWTO/BTTV.html#toc3
  +
  +
Dott. Paolo PAVAN [Netlink Sas]­
  +
[mailto:pavan@netlink.it pavan@netlink.it]
  +
  +
Data: Febbraio - Marzo 2004
  +
= Note finali =
= Note finali =
  +
* Il presente documento è a semplice scopo divulgativo
  +
* L'autore non si assume la responsabilità di eventuali danni diretti o indiretti derivanti dall'uso dei programmi, o
  +
dall'applicazione delle configurazioni menzionate nel seguente articolo
  +
* I marchi citati sono di proprietà dei rispettivi proprietari e sono stati utilizzati solo a scopo didattico o divulgativo.
  +
* L'uso o il riutilizzo del presente articolo è liberamente consentito per scopi didattici o informativi previa citazione della fonte
  +
* Sono possibili errori o imprecisioni, segnalatemele a [mailto:pavan@netlink.it pavan@netlink.it]
  +
* Chi volesse integrare il presente documento, può scrivere a [mailto:pavan@netlink.it pavan@netlink.it]

Versione attuale delle 21:24, 8 nov 2006


Indice

[modifica] Introduzione

Le webcam oggi presenti sul mercato, almeno quelle di livello home user sono tutte USB. Queste facilita l'utilizzo sotto diversi dispositivi ma spesso ne limita le potenzialità. Utilizzare una scheda di aquisizione PCI ed una videocamera collegata con segnale composito rappresenta sicuramente (almeno nel mio caso) una soluzione più affidabile e prestante.

La scheda utilizzata è una brooktree coorporation Bt848 Video Capture (Bt848KPF - CPH02-B) mentre la webcam in dotazione è una webcam philps, collegata con un cavo per il segnale video composito.

#lspci
00:10.0 Multimedia Video controller: Brooktree Coorporation Bt848 Video Capture (rev 12)

[modifica] BTTV con GNU/LINUX

Dal punto di vista del sistema sono necessari alcuni moduli per il coretto supporto della scheda e della webcam, sono:

#sotto character device
i2c.o
i2c-algo-bit
i2c-core
#sotto multimedia
videodev.o
bttv.o
tuner.o

[modifica] Configurazione dl kernel

#
#multimedia devices
#
CONFIG_VIDEO_DEV=m
#
#video for linux
#
CONFIG_VIDEO_BT848=m
#
i2C support
#
CONFIG_I2C=m
CONFIG_I2C_ALGOBIT=m
CONFIG_I2C_ALGOPCF=m
CONFIG_I2C_PROC=m

Aggiungere nel file rc.modules

#per webcam
modprobe i2c
modprobe i2c-algo-bit
modprobe i2c-core
modprobe tuner
modprobe bttv

una volta ricompilato il kernel e riavviato il sistema, dovremmo avere una situazione di questo tipo

#lsmod
Module		Size		Used by 	Not tainted
tuner		10272		0 (unused)
bttv		98720		1
i2c-algo-bit	6984		1 [bttv]
i2c-core	12900		0 [tuner bttv i2c-algobit]
soundcore	3332		0 [bttv]
videodev	6080		4 [usbvideo bttv]

In realtà il mio test si è svolto utilizzando una Slackware 9.1, che di default riconosce la scheda e non richiede ricompilazioni di alcun tipo. basta un dmesg per verificarlo:

bttv: driver version 0.7.107 loaded
bttv: using 4 buffers with 2080k (8320k total) for capture
bttv: Host bridge is Silicon Integrated Systems [SiS] 650 Host
bttv: Bt8xx card found (0)
PCI: Found IRQ 3 for device 00:10.0
bttv0: Bt848 (rev 18) at 00:10.0, irq 3, latency: 32, mmio: 0xef000000
bttv: using: BT848(*** UNKNOWN/GENERIC **) [card=0,autodetected]
i2c-core.0: adapter bt848 #0 registered as adapter 0
bttv0: registered device video0
bttv0: registered device vbi0

[modifica] Il comando dov4l

per poter affettuare un test (dump) più approfondito del nostro dispositivo si può utilizzare dov4l

./dov4l -h
 dov4l v0.5, (c) 2003 by folkert@vanheusden.com
 d device	device to use (default is /dev/video0)
 q		query capabilities
 i channel	set input-channel
 t tuner	set tuner (most of the time 0)
 m mode		mode (PAL/NTSC/SECAM/AUTO)
 f frequency	set frequency
 b brightness	set brightness
 u hue		set hue
 c color	set color
 n contrast	set contrast
 w whiteness	set whiteness
 s width,height set size 
	

Con questo utile programma possiamo anche agire sul setup del device cambiando alcuni parametri, come quelli mostrati dall'help del comando.

per effettuare una query sul device:

 ./dov4l -q -d /dev/video0
 Canonical name for this interface: BT848A( *** UNKNOWN/GENERIC **) 
 Type of interface: 
 Can capture to memory 
 Has a tuner of some form 
 Can overlay its image onto the frame buffer 
 Overlay clipping is supported 
 Overlay overwrites frame buffer memory 
 The hardware supports image scaling 
 Number of radio/tv channels if appropriate: 4 
 Number of audio devices if appropriate: 1 
 Maximum capture width in pixels: 768 
 Maximum capture height in pixels: 480 
 Minimum capture width in pixels: 48 
 Minimum capture height in pixels: 32 
 Image size (x,y): 640, 480 
 The channel number: 0 
 The input name: Television 
 Number of tuners for this input: 1 
 Channel has tuners 
 Channel has audios 
 The input is a TV input 
 The norm for this channel: 1 
 Number of the tuner: 0 
 Canonical name for this tuner: Television 
 Lowest tunable frequency: 0 
 Highest tunable frequency: -1 
 Current frequency: 4095MHz 
 Flags describing the tuner: 
 PAL tuning is supported 
 NTSC tuning is supported 
 SECAM tuning is supported 
 Frequency is in a higher range (tuning frequencies are in 1/16th MHz) 
 The video signal mode if relevant: 
 The tuner is in NTSC mode 
 The tuner auto switches, or mode does not apply 
 Signal strength if known: 65535 
 The channel number: 1 
 The input name: Composite1 
 Number of tuners for this input: 0 
 Channel has audios 
 The input is a camera 
 The norm for this channel: 1 
 The channel number: 2 
 The input name: S-Video 
 Number of tuners for this input: 0 
 Channel has audios 
 The input is a camera 
 The norm for this channel: 1 
 The channel number: 3 
 The input name: Composite3 
 Number of tuners for this input: 0 
 Channel has audios 
 The input is a camera 
 The norm for this channel: 1 
 Brightness: 36890 
 Hue: 28222 
 Colour: 32512 
 Contrast: 31019 
 Whiteness: 0 
 Depth: 16 
 Palette: RGB565 packed into 16 bit words. 

[modifica] Il comando setv4l

Un pò più semplice ma più intuitivo per il setup della videocamera setv4l

# ./setv4l /dev/video0 
device: /dev/video0 name: bttv video 
capabilities: CAPTURE TUNER OVERLAY CLIPPING FRAMERAM SCALES 
min-size: 48x32 max-size: 768x480 channels: 4 audios: 1 
brightness: 32768 hue: 32768 colour: 32512 contrast: 27648 
whiteness: 0 depth: 16 palette: 3 

A questo punto per poter utilizzare la webcam consiglio di puntare su due software che sono Xawtv (e gli altri programmi a corredo) per la visualizzazione delle immagini e Motion per effettuare una vera e propria videosorveglianza. Vediamo in modo sintetico come utilizzare questi software con la nostra webcam, per un approfondimento rimando alla consultazione dell'HOWTO già pubblicato:

http://www.sistemistiindipendenti.org/modules/news/article.php?storyid=100

[modifica] Installazione e utilizzo di Xawtv

Questo software ci consente di verificare le possibilità di acquisizione della nostra webcam tramite la scheda. Effettuiamo lo scan per verificar se il device è stato didentificato:

#xawtv -hwscan 
This is xawtv-3.91, running on Linux/i686 (2.4.22-openmosix-2) 
looking for available devices 
Xlib: extension "XVideo" missing on display ":3.0". 
/dev/video0: OK [ -device /dev/video0 ] 
type : v4l 
name : BT848A( *** UNKNOWN/GENERIC **) 
flags: overlay capture tuner 

Come si può notare il dispositivo viene visto tramite V4l come device /dev/video0. A questo punto posso eseguire:

#xawtv & 

Per il setup standard di xawtv non vedrò nulla ma dovrò impostare (almeno nel mio caso) i valori di acquisizione:

TV norm: NTSC 
Video Source: Composite1 
Frequency Table: Italy 
Capture: grabdisplay 

A questo punto apparirà l'immagine. Per poter andare alla risoluzione massimo aggiungerò a xawtv da riga di comando:

#xawtv ­c /dev/video0 ­geometry 640x480 

Alternativamente si possono specificare le opzioni in un file di configurazione dal nome .xawtv da salvare nella home dello user che esegue il programma. Un esempio di questo file può essere Configurazione ".xawtv "

[global] 
freqtab = italy 
pixsize = 640x480 
jpeg-quality = 100 
[defaults] 
norm = NTSC 
input = Composite1 
capture = grab 
color = 55% 
bright = 60% 
hue = 43% 
contrast = 35% 

A questo punto abbiamo verificato che la nostra scheda di acquisizione e la nostra webcam funzionano perfettamente. Dal punto di vista della qualità dell'immagine, il risultato non è eccezionale, la webcam è piuttosto vecchia (credo del 1998), il sensore dimostra poca capacità di lavorare in condizioni di luminosità scarse. In compenso il sistema utilizza meno risorse di sistema e sembra essere più affidabile che nei test condotti con webcam USB. Oltre alla risoluzione massima che sono riuscito a raggiungere (768x480), il sistema lavora agevolmente a 30 fps (frames per secondo), risolvendo il problema di immagini mosse che avevo alla stessa risoluzione con webcam USB, con cui ero riuscito al massimo ad arrivare a 15 fps (pwcx).

[modifica] Installazione e utilizzo di Motion

Come ampiamente spiegato nell'articolo precedente con Motion possiamo effettuare l'acquisizione di immagini che impegnano il campo visivo della nostra webcam. Installazione di Motion

wget http://cesnet.dl.sourceforge.net/sourceforge/motion/motion-3.1.12.tar.gz 
sh ./configure --with-libavcodec=/usr/src/ffmpeg-0.4.8/libavcodec --without-pgsql 
make && make install 

La configurazione è semplice i parametri più importanti impostati sono questi:

#motion.conf 
videodevice /dev/video0 
framerate 100 
width 640 
height 480 
threshold 1500 
noise_level 32 
night_compensate on 
snapshots 1800 
output_normal yes 
target_dir /htdir/htdocs/webcam 
quality 100 
ffmpeg_cap_new yes 
ffmpeg_timelaps on 
video_pipe /dev/video4 
motion_video_pipe /dev/video6 
webcam_port 8000 
webcam_quality 90 
webcam_motion no 
webcam_maxrate 100 

Per poter utilizzare le video pipes occorre utilizzare il vloopback

tar vloopback-0.91.tar.gz 
cd vloopback-0.91 
make 
insmod vloopback.o dev_offset=2 pipes=7 
# cat /proc/video/vloopback/vloopbacks 
vloopback version 0.91 
Loop Input Status Output Status 
0 video2 - video3 - 
1 video4 W video5 R 
2 video6 W video7 - 
3 video8 - video9 - 
4 video10 - video11 - 
5 video12 - video13 - 
6 video14 - video15 - 

Esecuzione di Motion Per poter lavorare con motion ed essere sicuro che acquisisse usando il segnale (NTSC) ho dovuto passarglielo da riga di comando:

motion -n ntsc 
Debug 
thread0 device: /dev/video0 input: 1 
thread pid: 1264 
waiting for threads to finish, pid: 1262 
Opening video loopback device for normal pictures 
Failed to open video loopback 
root@openmosix1:/usr/local/etc# motion -n ntsc 
thread0 device: /dev/video0 input: 1 
thread pid: 1267 
waiting for threads to finish, pid: 1265 
Opening video loopback device for normal pictures 
Opening video loopback device for motion pictures 
Webcam server listning on port: 8000 
Motion detected 
File of type video/mpeg saved to: /htdir/htdocs/webcam/2004/04/15//122246.mpg 
File of type image/jpg saved to: /htdir/htdocs/webcam/2004/04/15/12/22/46-00.jpg 
Motion detected 
File of type image/jpg saved to: /htdir/htdocs/webcam/2004/04/15/12/22/46-01.jpg 
Motion detected 
File of type image/jpg saved to: /htdir/htdocs/webcam/2004/04/15/12/22/46-02.jpg

[modifica] Risorse

Video For Linux http://online.infomedia.it/riviste/dev/68/articolo24/articolo.htm

Linux.bytesex.org http://linux.bytesex.org/

BTTV Mini-HOWTO http://it.tldp.org/HOWTO/BTTV.html#toc3

Dott. Paolo PAVAN [Netlink Sas]­ pavan@netlink.it

Data: Febbraio - Marzo 2004

[modifica] Note finali

  • Il presente documento è a semplice scopo divulgativo
  • L'autore non si assume la responsabilità di eventuali danni diretti o indiretti derivanti dall'uso dei programmi, o

dall'applicazione delle configurazioni menzionate nel seguente articolo

  • I marchi citati sono di proprietà dei rispettivi proprietari e sono stati utilizzati solo a scopo didattico o divulgativo.
  • L'uso o il riutilizzo del presente articolo è liberamente consentito per scopi didattici o informativi previa citazione della fonte
  • Sono possibili errori o imprecisioni, segnalatemele a pavan@netlink.it
  • Chi volesse integrare il presente documento, può scrivere a pavan@netlink.it
Strumenti personali
Namespace

Varianti