# [NUMÉRISATION VHS] MENCODER, BTTV BT87x : GEL PC (Résolu)

## pti-rem

Bonjour à la communauté,

Je suis en demande d'aide pour arriver à numériser une VHS avec mencoder sans que mon vieux ? PC basé sur une Asus A7N8X-E ne se fige et demande un reset pour redémarrer. 

Je n'ai pas ENCORE réussi à dépasser 10 minutes de numérisation.

Je suis un débutant sous Gentoo ... Après des années sous windows, puis Mandrake, Ubuntu et Debian.

```

jardin rem # uname -a

Linux jardin 2.6.39-gentoo-r3 #13 SMP Wed Oct 12 23:25:50 CEST 2011 i686 AMD Athlon(tm) XP 3200+ AuthenticAMD GNU/Linux
```

Le n° de carte de mon périphérique de capture bttv m'est plutôt inconnu (étiquette ou sérigraphie  ATI), mais voici le lspci

```

# lspci -vnn

        01:08.0 Multimedia video controller [0400]: Brooktree Corporation Bt878 Video Capture [109e:036e] (rev 02)

   Subsystem: ATI Technologies Inc Device [1002:0001]

   Flags: bus master, medium devsel, latency 32, IRQ 18

   Memory at d8000000 (32-bit, prefetchable) [size=4K]

   Kernel driver in use: bttv

   Kernel modules: bttv

01:08.1 Multimedia controller [0480]: Brooktree Corporation Bt878 Audio Capture [109e:0878] (rev 02)

   Subsystem: ATI Technologies Inc TV-Wonder [1002:0001]

   Flags: bus master, medium devsel, latency 32, IRQ 11

   Memory at d8001000 (32-bit, prefetchable) [size=4K]

```

La mémoire vive (2,5 Go DDR) est testée sans erreur avec plusieurs passes de memtest86.

Je vous cite ensuite le passage du noyau relatif au module bttv, tel qu'il est donné après le démarrage par dmesg :

```

bttv: driver version 0.9.18 loaded

bttv: using 8 buffers with 2080k (520 pages) each for capture

bttv: Bt8xx card found (0).

bttv0: Bt878 (rev 2) at 0000:01:08.0, irq: 18, latency: 32, mmio: 0xd8000000

bttv0: detected: ATI TV Wonder [card=63], PCI subsystem ID is 1002:0001

bttv0: using: ATI TV-Wonder [card=63,autodetected]

bttv0: gpio: en=00000000, out=00000000 in=00ffffff [init]

bttv0: tuner type=19

bttv0: audio absent, no audio device found!

i2c-core: driver [tuner] using legacy suspend method

i2c-core: driver [tuner] using legacy resume method

All bytes are equal. It is not a TEA5767

tuner 0-0060: Tuner -1 found with type(s) Radio TV.

tuner-simple 0-0060: creating new instance

tuner-simple 0-0060: type set to 19 (Temic PAL* auto (4006 FN5))

bttv0: registered device video0

bttv0: registered device vbi0

bttv0: PLL: 28636363 => 35468950 .

bttv0: PLL: 28636363 => 35468950 .

bttv0: PLL: 28636363 => 35468950 . ok
```

Je capture le son de l'entrée d'une carte auxilliaire :

```
01:07.0 Multimedia audio controller [0401]: Ensoniq ES1371 [AudioPCI-97] [1274:1371] (rev 09)

   Subsystem: Ensoniq Creative Sound Blaster AudioPCI64V, AudioPCI128 [1274:1371]

   Flags: bus master, slow devsel, latency 32, IRQ 19

   I/O ports at 9800 [size=64]

   Capabilities: [dc] Power Management version 2

   Kernel driver in use: ENS1371

```

Après moulte butinages dans les docs, plantages répétés et réessayage, j'utilise la commande mencoder suivante :

```
mencoder -tv norm=SECAM:driver=v4l2:width=720:height=576:input=1:fps=25:alsa:amode=1:adevice=hw.0,0 tv:// -endpos 00:10:00 -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd -vf pp=lb/ha/va/dr,hqdn3d,scale=720:576,harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:acodec=ac3:abitrate=192:aspect=4/3 -ofps 25 -o film.mpg
```

Cette commande sature à 75 % mon CPU ; Et cela plante dramatiquement le PC de quelques secondes à quelques minutes après son lancement.

Je sais que j'ai un matériel un peu ancien mais j'aimerai le garder encore et numériser quelques VHS avec, alors voila mes questions ...

- Pourquoi j'obtiens une meilleure image en composite qu'en s-vidéo alors qu'il est indiqué le contraire ? (couleurs bavantes avec câble s-vidéo)

- Les options "no_overlay=1" "gbuffers=32" et "vsfx=1" du module bttv peuvent-elle m'être utiles pour la stabilité ? 

- Comment connaitre mon vrai n° de carte pour bttv ? ; L'autodétection est-elle opérationelle ?

- À quoi peu bien me servir l'option "buffersize=64" de mencoder ?

- Quelle sont les raisons qui peuvent amener mencoder à figer l'ordinateur comme une brique ?

Je vous remercie pour ce que vous voudrez bien dire à ce sujet : Merci pour votre apport à mon problème.

Je posterai tout ce que vous pourriez me demander de produire pour m'aider dans sa résolution.

RémiLast edited by pti-rem on Sat Oct 15, 2011 12:23 pm; edited 3 times in total

----------

## netfab

 *Quote:*   

> La mémoire vive (2,5 Go DDR) est testée sans erreur avec plusieurs passes de memtest86.

 

 *Quote:*   

> À quoi peu bien me servir l'option "buffersize=64" de mencoder ?

 

À mon (humble) avis c'est la quantité de RAM maximum utilisée pour la capture, une fois cette quantité remplie, mencoder se sent obligé d'inscrire les données sur le disque.

En ce moment je fais de la capture vidéo à partir d'un camésccope analogique et d'une carte d'acquisition lambda. Si je ne fixe pas cette variable à une valeur raisonnable, au bout de quelques secondes de capture, plein de frames sont dropped (dans mes souvenirs la charge CPU montait aussi), et la vidéo finale ne ressemble à rien, malgré le fait que la page de manuel indique que le buffersize est ajusté de façon dynamique par défaut.

Je ne suis pas du tout expert en la matière, si tu veux je peux te montrer la commande que j'utilise, la tienne est déjà compliquée par rapport à la mienne et je ne suis pas sûr que çà t'apportera quelque chose, mais en gros j'ai fait comme toi : j'ai construit la commande à partir de quasi-rien, au prix de multiples essais, recherches et RTFM, tout en essayant de garder la commande aussi simple que possible, et en sachant que de toute façon, vu la qualité originale de la vidéo et le matériel utilisé, je ne risquais pas d'obtenir une vidéo finale au format HD  :Mr. Green: .

----------

## pti-rem

 *Quote:*   

> 
> 
> Citation: À quoi peu bien me servir l'option "buffersize=64" de mencoder ?
> 
> À mon (humble) avis c'est la quantité de RAM maximum utilisée pour la capture, une fois cette quantité remplie, mencoder se sent obligé d'inscrire les données sur le disque. 

 

Oui, je comprends.

Pour celui qui sait : quelles peuvent être les relations à comprendre avec le paramètre gbuffers du module bttv ?

 *Quote:*   

> plein de frames sont dropped

 

J'ai constaté cela aussi sans les mises en réserve de mémoire.

 *Quote:*   

> si tu veux je peux te montrer la commande que j'utilise

 

Je suis preneur bien sûr !

 *Quote:*   

> garder la commande aussi simple que possible, et en sachant que de toute façon, vu la qualité originale de la vidéo et le matériel utilisé, je ne risquais pas d'obtenir une vidéo finale au format HD

 

Je suis d'accord évidemment ; mon but étant de faire une numérisation complète de VHS que je puisse ensuite passer sur un lecteur de DVD de salon classique en ayant la meilleure qualité possible par rapport à celle de la bande ainsi que la synchronisation du son.

Merci à toi.

Rémi

----------

## fb99

là: http://lxr.linux.no/#linux+v3.0.4/Documentation/video4linux/bttv/Insmod-options, tu as toute les options détaillé:

Pour ce qui t'intéresse:

 *Quote:*   

>  gbuffers=2-32   number of capture buffers for mmap'ed capture.
> 
>   38                                default is 4.
> 
>   39                gbufsize=       size of capture buffers. default and
> ...

 

Perso, j'y connais rien mais comme le dit netfab, j'irais à taton en essayant de baisser ses valeurs, parce que je pense également que c'est parce qu'il n'a plus de place en ram, qu'il se fige. Essaye peut-être d'augmenter ton swap et regarder à quelle vitesse il se remplit. Mais je mettrais d'abords ses valeurs au minimum pour voir si sa tourne pour soit trouver soit éliminer cette causes à ton problème.

idem pour mendocer: $man mencoder

--> par exemple (sur ton système ou sur un moteur de recherche)

http://linux.die.net/man/1/mencoder

 *Quote:*   

> buffersize=<value> 
> 
> maximum size of the capture buffer in megabytes (default: dynamical)

 

Je pense que tu trouveras ton bonheur pour les spécification de carte avec les commandes indiqué ici :http://www.commentcamarche.net/faq/8386-kit-de-survie-linux#connaitre-son-materiel

[EDIT] ajout complément man mencoder.

[EDIT 2] ajout pour connaitre son matériel.

----------

## guilc

Quand ton système plante tu as bien des logs du noyau dans le syslog ? du genre un OOM killer qui passe pas ? un kernel panic ? un kernel oops ?

Ca permettrait d'être sûr de la cause du plantage...

Sinon, si c'est uniquement un problème de ratio buffer/CPU lors de l'acquisition, il faut arrêter d'encoder à la volée : tu acquiert le flux en RAW sur le disque, puis tu encodes dans un second temps à partir du flux RAW enregistré sur le disque, comme ça, tu te libères du débit imposé par l'acquisition sur la carte, mencoder peut travailler à son rythme tranquillement. Le seul souci est d'avoir suffisamment de disque pour capturer l'intégralité du flux non-compressé sur le disque !

PS: peux-tu mettre ton titre du topic en conformité avec les conventions de notre forum s'il te plait ? Merci  :Smile: 

----------

## pti-rem

 *Quote:*   

> Quand ton système plante tu as bien des logs du noyau dans le syslog ? du genre un OOM killer qui passe pas ? un kernel panic ? un kernel oops ? 

 

Je vais regarder de près mon syslog.

 *Quote:*   

> il faut arrêter d'encoder à la volée : tu acquiert le flux en RAW sur le disque, puis tu encodes dans un second temps 

 

Après coup, je comprends ton conseil qui est tout à fait justifié ; merci.

Je pense avoir mis mon sujet en conformité ; de rien, c'est normal.

Mon problème de crash du PC semble être résolu.

J'ai fait des recherches avec "bttv crash" comme argument et je suis tombé sur une foule de messages assez anciens qui relatent un problème similaire.

Un auteur indiquait avoir solutionné son problème en changeant de bus pci la carte d'acquisition. J'avais du mal à croire dans une solution aussi simple mais j'ai personnellement essayé cette idée et j'en ai profité pour retirer une PCI LSI LOGIC SYMBIOS SYM 21002 (double SCSI 53C896) qui ne me sert plus.

Et j'ai réussi à numériser la VHS "Mon nom est ' personne ' " en entier sans un seul crash.

 *Quote:*   

> Sinon, si c'est uniquement un problème de ratio buffer/CPU lors de l'acquisition

 

J'ai utilisé les commandes suivantes :

```
jardin rem # rmmod bttv tuner ; modprobe bttv card=63 pll=1  tuner=24 radio=0 vsfx=1 bttv_verbose=2 bttv_debug=1 gbuffers=32
```

et

```

jardin rem # cat ./vhs-officiel.sh 

mencoder -tv norm=SECAM:driver=v4l2:width=720:height=576:input=1:fps=25:alsa:amode=1:adevice=hw.0,0:buffersize=32 tv:// -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd -vf pp=lb/ha/va/dr,hqdn3d,scale=720:576,harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:acodec=ac3:abitrate=192:aspect=4/3 -ofps 25 -o film.mpg
```

À noter quand même une vingtaine d'erreurs <7> VIDIOC_DQBUFPos lors de la numérisation de ce film ; Mais cela est hors sujet : je vais donc rechercher la signification de ce message.

Pour conclure, je dirais vieille machine et trop de cartes d'extension. Même si ma mobo dispose de 5 connecteurs PCI, rien ne m'oblige à les remplir sans véritable raison. Je ne saurai dire quel est l'aspect logiciel du module bttv qui aurai pu solutionner mon problème.

Merci à vous, encore.

Rémi

----------

## guilc

Cool, content que ça marche maintenant  :Smile: 

----------

