Faire un VCD avec un divx (part 1)

Introduction

Premier boulot avant d’attaquer le design du blog: se faire un petit VCD pour mater ce soir vu qu’il n’y a rien à la télé…

Je sais que pleins de platines DVD lisent le divx en natif. Pas la mienne ! Et il est hors de question que j’en rachète une pour le moment vu le nombre de fois où elle sert. On va donc exploiter ses fonctions de lectures de base: le Vidéo-CD (VCD) et également le SVCD. Si on essaie de progresser par ordre, il faut que je trouve un CD-RW (pas fou non plus !), que je l’efface et que je grave le VCD…

Mettre un CD-RW à blanc

Première mission: se choper un CD-RW (c’est juste pour visualiser le film ou la vidéo une fois, le reste, on s’en fout) et le mettre à blanc avant de commencer l’encodage. Cela paraît assez anodain mais mon noyau (2.6.12) n’a pas été lancé pour les options ide-scsi au boot. Il faut que je passe par l’interface ATAPI pour commander le graveur. Avec des versions ultérieurs (2.4 par exemple), c’était pas vraiment stable. Le noyau Linux 2.6 gère mieux cette interface. Pour faire simple, on va utiliser cdrecord.

Primo: savoir où est le graveur: cdrecord -scanbus dev=ATAPI Chez moi, ça donne ça:

scsibus0:
0,0,0 0) 'JLMS ' 'XJ-HD165H ' 'CH11' Removable CD-ROM
0,1,0 1) 'MITSUMI ' 'CR-48X5TE ' '1.8A' Removable CD-ROM

Je sais donc que mon graveur est référencé par ATAPI:0,1,0 ! Allons-y gaiement pour un blank rapide: cdrecord -blank=fast dev=ATAPI:0,1,0 A noter que cette commande ne fonctionne qu’en étant root malgré le fait que je sois dans le groupe cdrom ! Va comprendre Sarge…

Faire un VCD: le principe

Faire un VCD, c’est faire une image de CD qui contient un film MPEG1 ayant une résolution définie (pour du PAL:352×288; pour du NTSC:352×240) ainsi qu’une piste son à fréquence et bitrate définie (44100 Hz et 224 kbps). On a donc plusieurs étapes: - encoder le film et le son au bon format - utiliser un multiplexeur pour mixer les deux sources - utiliser vcdimager pour créer une image de cd à graver - graver le CD

Etape 1: Encoder le film et le son au bon format

Pour ma part, je vais utiliser mencoder (mplayer/mencoder) qui, s’il n’est pas officiellement dans la Debian Sarge est dispo facilement (même sur les autres distribs qui puent). J’ai essayé d’utiliser avidemux et son interface graphique mais le résultat est un VCD inregardable: la compression est vraiment merdique.

Tout se passe en une seule ligne: mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf scale=352:288,harddup -srate 44100 -af lavcresample=44100 -lavcopts vcodec=mpeg1video:keyint=15:vrc_buf_size=327:vrc_minrate=1152:vbitrate=1152:acodec=mp2:abitrate=224 -ofps 25 -o fichier_de_sortie.mpg fichier_d_entrée

A noter que contrairement à la doc de référence de mencoder, j’ai volontairement omis d’ajouter l’option vrc_maxrate=1152. Explication simple: avec ce paramètre, le VCD est complètement inregardable: toutes les secondes, une image de trop mauvaise qualité est générée et la lecture a l’air saccadée.

Etape 2: le multiplexage

Mencoder a déjà tout fait, on passe…

Etape 3: Créer l’image VCD

On va utiliser vcdimager:vcdimager -t vcd2 vcdimager créé une image .bin et un fichier .cue (par défaut videocd.cue et videocd.bin).

Etape 4: Graver la vidéo

On va utiliser non pas cdrecord (qui est bien pour les isos) mais cdrdao qui s’accomode très bien des images binaires générées par vcdimager. cdrdao write --device ATA:1,1,0 ./videocd.cue

Conclusion

Je ne sais pas vous, mais le VCD produit avec cette technique est regardable… de très loin: en effet, si on s’approche un peu (genre, distance normale pour regarder le petit écran), on se rend compte qu’il y a un léger problème: toutes les secondes, j’ai une sorte de saccade due à une image de très mauvaise qualité. Il va falloir une part 2 à ce petit article…

Références

October 1st, 2005 at 19:41