logo.png

VI

EMACS

CVS

GIT

LATEX

ICALENDAR

ROBOTS

CORBA

QEMU

MAKEFILE

AUTOTOOLS

GNUPLOT

SCREEN

GRUB

MAO

VHS

ISO

Home Up


Contents



1 Intro

Mes notes sur la numérisation des VHS


2 Audio


2.1 Branchements

  • Il faut utiliser un mini-jack pour faire un pont depuis la sortie de la carte sond vers l'entré sond de la carte télé.
  • Pour entendre le son à la lecture on peut faire :
    $ envy24control
    - Monitor Inputs: Line In L+R
    - Patchbay/Router: HW Out 3+4 = Line In L+R
    - Hardware Settings: Line In selector = Front Input
    - Analog Volume: ADC 2+3 : Line In L+R
    

  • Pour activer la capture via le driver ci-dessous :
    $ amixer -c 1 info
    $ amixer -c 1 controls
    $ amixer -c 1 contents
    $ amixer -c 1 sset 'Mic/Line' cap
    
    // (équivaux à)
    $ alsamixer
    F6: booktree bt878
    F5 (all)
    Mic/Line: (espace pour selectionner)
    


2.2 Driver Audio

snd-bt87x remplace btaudio. Ce drivers permet d'accéder à la sortie audio de la carte télé via le périférique /dev/adsp1.

$ lspci -k
02:01.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11)
	Kernel driver in use: bttv
02:01.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 11)
	Kernel driver in use: Bt87x

If you want to record audio from TV cards based on
Brooktree Bt878/Bt879 chips, say Y here and read
<file:Documentation/sound/alsa/Bt87x.txt>.                                          
To compile this driver as a module, choose M here: the module
will be called snd-bt87x.


3 Xawtv

Malheureusement on n'a que l'image avec xawtv et que le son avec streamer... va comprendre.

$ xawtv
- Video source: composite1
- TV norm: PAL ou SECAM-G
- Capture: grabdisplay

$ streamer -i Composite1 -n PAL -t 0:10 -f mjpeg -c /dev/video0 -F stereo -C /dev/adsp1 -o movie.avi


4 MPlayer

2 stratégies testées :

  • Enregistrement DVD mencoder tv://,
  • montage dvbcut puis compression MP4 mencoder
  • Enregistrement MP4 mencoder tv:// puis montage avidemux puis compression MP4 mencoder
Résultats de mauvaises qualités.


4.1 Lecture

$ mplayer tv:// -ao oss -vo xv \
  -tv driver=v4l2:input=1:immediatemode=0:norm=SECAM-G:adevice=/dev/adsp1 \
  -identify

ID_VIDEO_FORMAT=YV12
ID_VIDEO_WIDTH=640
ID_VIDEO_HEIGHT=480
ID_VIDEO_FPS=25.000
ID_AUDIO_BITRATE=705600
ID_AUDIO_RATE=44100

$ mplayer tv:// -ao oss -vo xv \
  -tv driver=v4l2:input=1:immediatemode=0:norm=SECAM-G:adevice=/dev/adsp1 \
  -vf cropdetect=x:y

$ mplayer tv:// -ao oss -vo xv \
 -tv driver=v4l2:input=1:immediatemode=0:norm=SECAM-G:adevice=/dev/adsp1:mjpeg:decimation=1 \
 -vf pp=lb,harddup

// tv options 
width=720
height=576
freq=559.25
fps=29.97
brightness=13 : luminosité
contrast=24   : contraste
hue=10        : tonalité
saturation=11 : saturation
outfmt=help   : Spécifie le format de sortie du tuner avec une valeur pré-selectionnée Géré par le pilote v4l 
audiorate=44100
buffersize=512
forceaudio
mjpeg         : Utilise  la  compression mjpeg matérielle (si la carte le gère). 
decimation=1  : 1=pleine résolution
quality=60    : Choisit  la  qualité  de la compression jpeg

// bof
-mc 0 
outfmt=yv12: Spécifie le format de sortie du tuner avec une valeur pré-selectionnée Géré par le pilote v4l 

// filtres
-vf pp=lb/ha/va/dr,hqdn3d,harddup : optimisation
-vf crop=640:340:0:70 : découpage des bandes noires

// filtres
lb: Filtre de désentrelacement (effet peigne)

// applied to blocks in decoded video to improve visual quality and prediction performance by 
// smoothing the sharp edges which can form between macroblocks when block coding techniques are used.
ha: filtre précis de déblocage horizontal 
va: filtre précis de déblocage vertical

// Le filtre de "deringing" est utilisé pour éliminer le bruit à proximité des contours nets causé 
// par le processus de quantisation (également appelé effet de Gibbs).
// Dans certains cas ce filtre peut induire un flou excessif de l'image.
dr: filtre de "deringing"

// Ce filtre est destiné à réduire le bruit de l'image pour que les plans fixes soient vraiment fixes 
// (cela devrait améliorer la compressibilité.).
hqdn3d: Version haute précision:qualité du  filtre denoise3d.

// Les trames duppliquées seront aussi présentes en sortie.
// Cela nécessite un peu plus de place, mais est indispensable pour les fichiers de sortie MPEG
harddup:

pullup:
softskip:


4.2 Capture

Jouer avec les paramètres :

$ mkfifo fifo
$ cat fifo | mplayer -
$ mencoder -o fifo tv:// -ovc copy -oac copy \
 -tv driver=v4l2:input=1:immediatemode=0:norm=SECAM-G:adevice=/dev/adsp1

// ou détecter une séquence pourrie à l'encodage :
$ mencoder -o fifo tv:// -ovc lavc -oac mp3lame -ffourcc XVID \
 -tv driver=v4l2:input=1:immediatemode=0:norm=SECAM-G:adevice=/dev/adsp1 \
 -lavcopts vcodec=mpeg4

// l'enregistrer en RAW et tester divers encodages sur cette même séquence :
$ mencoder -o raw.avi tv:// -ovc copy -oac copy \
 -tv driver=v4l2:input=1:immediatemode=0:norm=SECAM-G:adevice=/dev/adsp1

$ mencoder raw.avi -o fifo -ovc lavc -oac mp3lame -ffourcc XVID -lavcopts vcodec=mpeg4
$ mencoder raw.avi -o fifo -ovc lavc -oac mp3lame -x264encopts vcodec=libx264
$ cat fifo | mplayer -

Encodage XVID de 2 minutes brutes (le bit-rate est le principal paramètre) :

bit-rate taille qualité durée sur 700 Mo
92813 1,4 G RAW (bon) 1 minute
9800 143 M DVD (bon) 10 minutes
2600 40 M SVCD (bon) 35 minutes
1856 29 M DVD mpeg1 (passable) 48 minutes  
1152 19 M VCD (mauvais) 73 minutes
800 14 M default (mauvais) 100 minutes

2 passes sur les 2 minutes brutes (pas convaincant) :

$ mencoder raw.avi -o 1856-p1.avi -ovc lavc -oac mp3lame -ffourcc XVID \
 -lavcopts vcodec=mpeg4:vbitrate=1856:vpass=1:turbo -vf pp=lb

$ mencoder raw.avi -o 1856-p2.avi -ovc lavc -oac mp3lame -ffourcc XVID \
 -lavcopts vcodec=mpeg4:vbitrate=1856:vpass=2 -vf pp=lb

3 passes (ou plus) sur les 2 minutes brutes (pas convaincant) :

$ mencoder raw.avi -o 1152-p1.avi -ovc lavc -oac mp3lame -ffourcc XVID \
 -lavcopts vcodec=mpeg4:vbitrate=1152:vpass=1:turbo -vf pp=lb

// a répéter autant de fois que l'on veut
$ mencoder raw.avi -o 1152-p2.avi -ovc lavc -oac mp3lame -ffourcc XVID \
 -lavcopts vcodec=mpeg4:vbitrate=1152:vpass=3 -vf pp=lb


4.3 Capture brute

11M.s-1 :

$ mencoder -o test.avi tv:// -ovc copy -oac copy -endpos 00:00:10 \
 -tv driver=v4l2:input=1:immediatemode=0:norm=SECAM-G:adevice=/dev/adsp1

// ou 
$ mencoder -o input.avi tv:// -ovc raw -vf format=yv12 -oac pcm -endpos 00:00:10 \
 -tv driver=v4l2:input=1:immediatemode=0:norm=SECAM-G:adevice=/dev/adsp1


4.4 Capture XVID

$ mencoder -o test-divx.avi tv:// -ovc xvid -oac mp3lame \
 -tv driver=v4l2:input=1:immediatemode=0:norm=SECAM-G:adevice=/dev/adsp1 \
 -xvidencopts fixed_quant=4 \
 -endpos 00:00:10  

$ ffprobe test-divx.avi
  Duration: 00:00:10.04, start: 0.000000, bitrate: 4225 kb/s
    Stream #0.0: Video: mpeg4, yuv420p, 640x480 [PAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
    Stream #0.1: Audio: mp3, 44100 Hz, mono, s16, 136 kb/s

$ ls -lh test-divx.avi
5,1M


4.5 Capture MPEG4

$ mencoder -o test-mpeg4.avi tv:// -ovc lavc -oac mp3lame \
 -tv driver=v4l2:input=1:immediatemode=0:norm=SECAM-G:adevice=/dev/adsp1 \
 -lavcopts vcodec=mpeg4 \
 -endpos 00:00:10  

$ ffprobe test-mpeg4 .avi
  Duration: 00:00:10.04, start: 0.000000, bitrate: 1118 kb/s
    Stream #0.0: Video: mpeg4, yuv420p, 640x480 [PAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
    Stream #0.1: Audio: mp3, 44100 Hz, mono, s16, 136 kb/s

$ ls -lh test-mpeg4.avi
1,4M

// -lavcopts options:
vbitrate= : taux de compression
gmc       :  Active la compensation de mouvement globale (Global Motion Compensation).
nr=1000   :  bruit
...
vbirtate=1500
dia=-3
mbd=2:v4mv:
aic:
ilme:
ildc:


4.6 Capture MPEG2

$ mencoder -o test-mpeg2.avi tv:// -ovc lavc -oac mp3lame \
 -tv driver=v4l2:input=1:immediatemode=0:norm=SECAM-G:adevice=/dev/adsp1 \
 -lavcopts vcodec=mpeg2video \
 -endpos 00:00:10  

$ ffprobe test-mpeg2.avi
  Duration: 00:00:10.08, start: 0.000000, bitrate: 1138 kb/s
    Stream #0.0: Video: mpeg2video (Main), yuv420p, 640x480 [PAR 1:1 DAR 4:3], 104857 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
    Stream #0.1: Audio: mp3, 44100 Hz, mono, s16, 128 kb/s

$ ls -lh test-mpeg2.avi
1,4M


4.7 Capture vers conteneur MPG

On a besoin de ce format pour faire un minimum de montage via dvbcut.

$ mencoder -o test-mpeg2.mpg tv:// -ovc lavc -oac mp3lame -of mpeg 
 -tv driver=v4l2:input=1:immediatemode=0:norm=SECAM-G:adevice=/dev/adsp1 \
 -lavcopts vcodec=mpeg2video \
 -mpegopts format=dvd:tsaf
 -endpos 00:00:10  

$ rm *.idx
$ dvbcat test-mpeg2.mpg 

// -lavcopts options:
keyint=15 : nombre de frames indivisibles (découpage avec dvbcyt) default = 250 frames soit 10s

// Préconisé (http://www.mplayerhq.hu/DOCS/HTML/en/menc-feat-vcd-dvd.html) 
// VCD (marche pas avec dvbcut)
-lavcopts vcodec=mpeg1video:vrc_buf_size=327:vrc_minrate=1152:vrc_maxrate=1152:vbitrate=1152:keyint=15:acodec=mp2
// SVCD => 260k.s-1
-lavcopts vcodec=mpeg2video:vrc_buf_size=917:vrc_maxrate=2500:vbitrate=1800:keyint=15:acodec=mp2
// DVD => 640k.s-1 
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:acodec=ac3
// Marche aussi
-lavcopts vcodec=mpeg2video:vrc_buf_size=900:vrc_maxrate=1500:vbitrate=1300:keyint=15:acodec=mp2:abitrate=192\


5 Démarche


5.1 Via dvbcut

// acquisition mpeg2
mencoder -o movie.mpg tv:// -oac lavc -ovc lavc -of mpeg \
 -tv driver=v4l2:input=1:immediatemode=0:norm=SECAM-G:adevice=/dev/adsp1 \
 -lavcopts vcodec=mpeg2video:keyint=15:vstrict=0:acodec=ac3\
:vrc_buf_size=900:vrc_maxrate=1500:vbitrate=1300 \
:mbd=2:dia=4:turbo:autoaspect\
 -mpegopts format=dvd \
 -vf crop=640:340:0:70,pp=lb/ha/va/dr,hqdn3d,harddup \
 -endpos 00:00:20

// Meilleures qualités non testées (VCD, SVCD et DVD)
:vrc_buf_size=900:vrc_maxrate=1500:vbitrate=1300 \
:vrc_buf_size=1500:vrc_maxrate=3000:vbitrate=2500 \
:vrc_buf_size=1500:vrc_maxrate=8000:vbitrate=7000 \

// montage
$ rm *.idx
$ dvbcut movie.mpg

// conversion mpeg4 (compression)
$ mencoder movie_1.mpg -o /dev/null -ovc lavc -oac mp3lame \
 -lavcopts vcodec=mpeg4:vpass=1:mbd=2:dia=4:turbo \
 -vf pp=lb/ha/va/dr,hqdn3d,harddup
$ mencoder movie_1.mpg -o movie.avi -ovc lavc -oac mp3lame \
 -lavcopts vcodec=mpeg4:vpass=2:mbd=2:dia=4 \
 -vf pp=lb/ha/va/dr,hqdn3d,harddup

Le résultat donne environ 100 minutes pour 700 Mo avec un petit voilage et des caractères peu lisibles.


5.2 Via avidemux

$ mencoder -o 2600.avi tv:// -ovc lavc -oac mp3lame -ffourcc XVID \
 -tv driver=v4l2:input=1:immediatemode=0:norm=SECAM-G:adevice=/dev/adsp1 \
 -lavcopts vcodec=mpeg4:vbitrate=2600 -vf pp=lb -endpos 04:00:05

$ avidemux

$ mencoder raw.avi -o /dev/null -ovc lavc -oac mp3lame -ffourcc XVID \
 -lavcopts vcodec=mpeg4:vpass=1:turbo

// a répéter autant de fois que l'on veut
$ mencoder raw.avi -o movie.avi -ovc lavc -oac mp3lame -ffourcc XVID \
 -lavcopts vcodec=mpeg4:vpass=3


5.3 A l'arrache

$ mencoder -o 2600.avi tv:// -ovc lavc -oac mp3lame -ffourcc XVID \
 -tv driver=v4l2:input=1:immediatemode=0:norm=SECAM-G:adevice=/dev/adsp1 \
 -lavcopts vcodec=mpeg4 -vf pp=lb -endpos 04:00:05

$ avidemux

Home Up

This document is also available in PDF and PostScript format.



2016-02-15