Faire un VCD avec un divx (échoué) 🔗

Posted by Médéric Ribreux 🗓 In blog/Sysadmin/

#sysadmin

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 anodin 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érieures (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.

Étape 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 disponible 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

À 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.

Étape 2: le multiplexage

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

Étape 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).

Étape 4: Graver la vidéo

On va utiliser non pas cdrecord (qui est bien pour les isos) mais cdrdao qui s’accommode 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

Note de l'auteur du 13/04/2020: Un de mes premiers articles publiés (c'est pour ça que je le garde). C'était l'époque où je me permettais de mettre en ligne des trucs pas terminés, de raconter des échecs. Ça a bien changé. Évidemment, il n'y aura jamais de part 2 à cet article. En 2020, le VCD n'existe plus. Je n'ai d'ailleurs plus de machines capables de gérer ce format et je n'ai également plus le temps d'explorer des problèmes qui ont déjà été réglés par d'autres solutions, depuis plusieurs années.