1- Introduction

Le but de ce guide est d'aider a la conversion de divx vers du vcd ou du SVCD. Il vous donnera les bases necessaires mais est probablement incomplet.
Seuls des outils freeware ou opensource seront utilisés ici, si c'est possible.
Les outils indispensables:

  1. Avisynth
  2. Tsunami Mpeg Encoder
  3. Normalize
  4. Wavfs44
  5. WLA (Wave Length Adjuster)

Ces outils sont disponibles sur media video ou sur Doom9
Ajouts récents: Correction de quelques coquille, ajout d'un début de conversion FILM->PAL

1.1 Format d'entrée

L'AVI (audio video interleaving) etait le format promu par microsoft. Il est tres souple et permet de melanger a peu pres n'importe quel flux audio et video avec une bonne synchronisation entre les deux. Il n'y a pas de contrainte de framerate ou de resolution. Dans le cas qui nous interresse, en general la video est encodé en divx et l'audio en MP3. L'audio ne posera pas trop de probleme. C'est la video qui nous posera le plus de souci.
Il faut savoir que le divx se present sous deux formes : 2 DLL compatibe VFW pour l'encodage et le decodage et un filtre directshow. Les DLLs sont utilisees pour l'encodage et pour la lecture dans le cas d'une application ne supportant pas les filtres directshow (virtual dub par exemple). C'est le filtre directshow qui va effectuer le post processing.

Une des grosses differences entre le MPEG1,2 et le mpeg4 et le post processing. Lors du decodage, les endroits ou les macroblocs apparaitraient subissent un filtrage pour adoucir ces macroblocs et eviter l'effet de mosaique que l'on aurait en mpeg1 ou en mpeg2. c'est ce qui donne cet effet de flou tres perceptible a faible resolution/faible bitrate.

Un autre aspect a garder en memoire et que les resolutions/bitrates du VCD ou du SVCD sont fixés et n'ont pas la meme liberté qu'en AVI.
La troisieme partie etudiera les problemes de synchro audio et video.

1.2 Le format de sortie

Le VCD "vanilla" est tres stricte :
  1. Format NSTC : 352x240 , 29.976 fps ou 23.976 (film)
  2. Format PAL : 352x288, 25 fps

Le bitrate est constant , 1150 kbps .
Pour l'audio, 44.1 khz, stero, 224 kbps.

Je conseille fortement de s'autoriser des libertes si le lecteur le supporte en baissant le bitrate audio a 112 en joint stereo et en passant en VBR pour la video.
Ce ne sont plus des VCD mais des XVCDs. La compatibilte est moindre mais la qualite est bien meilleure. L'ennemi de la video VCD est le CBR (constant bitrate) que ce soit pour le VCD comme pour le divx normal. Dans le cas du VCD, si l'image est encode en peu de bits, des bits de bourrage seront ajoutes. Du gachis car il en aurait bien besoin plus tard pour les scenes d'action.

2 Conversion.

2.1 Recuperer les infos.

Nous allons commencer par ouvrir le fichier source pour recupere les informations. Ouvrons le avec virtual dub et File-:File information
Une image de ce type apparait :


La resolution est de type x*y. Une regle de trois nous donnera 352*w, w=y*352/x.
Par exemple, 512*254 nous donnera 352x174, qui n'est pas conforme a la resolution voulue.
Ensuite le bitrate:
  1. 25 : Pal 352*288
  2. 29.97 ou 23.976 : NSTC 352*240.


Sauvegardons le son dans un fichier a part pour plus tard. Toujours avec virtual dub, File-: save wav , par exemple vcd.wav.
si le fps est 24.98 ou 25.02, les ennuis commencent. Ca veut dire que le divx a ete mal encodé (probablement flask...) et que l'erreur a été rattrapér en altérant le bitrate.
Video->Framerate fait apparaitre l'écran suivant

Dans l'exemple ci dessus, le framerate est de 23.983 ce qui correspond à une vraie valeur de 23.976

2.2 Conversion de la video

Nous allons utiliser avisynth pour pouvoir utiliser le filtre directshow est avoir une video d'entree de qualité maximale.
Le script ressemblera a ceci :
FPSREEL correspondant au framerate reel. Par exemple si le framerate est 23.94 il faudra mettre 23.976.

t valant la difference entre la resolution et le w(celui que nous avions calcule plus tot). Par exemple si w vaut 150 et que c'est du pal ca donnera t=288-150/2=69

Une fois que c'est fait, ouvrons l'avs avec windows media player pour voir l'enentuel message d'insulte d'avisynth. Si la video se deroule sans probleme, verifiez avec virtual dub que la resolution est bonne et que le framerate est correcte.
Cela permet également de verifier si le rapport hauteur/largeur est bon.
Il ne reste plus qu'a fournir la video a Tsunami mpeg encodeur et a regler les parametres. Cela donne ceci :
A la fin vous obtenez vcd.m1v.

2.3 Resynchro

Il est important de faire la video avant le son pour pouvoir resynchroniser ce dernier.
Une fois votre fichier video obtenu, ouvrez le avec virtual dub.
Ouvrez en parrallele votre fichier vcd.wav.
Dans les deux cas resauvez votre wav sous le nom vcd2.wav
Si le decalage etait non constant, compressez ou exandez votre wav de la duree. Par exemple apres resynchronisation du debut, si a la fin il y a un decalage de 2 secondes, compressez ( ou expandez ) de 2 secondes.

Recommencer jusqu'a obtenir un bonne synchro.

2.4 Conversion de l'audio

La premiere etape (si ce n'est deja fait) est de convertir le son en 44.1 khz et de normaliser. Pour cela utiliser soundforge, WAVFS44 ou goldwave.
Ensuit NORMALISEZ le son avec normalize par exemple.
Le plus simple est d'utiliser toolame pour l'audio.
La syntax est toolame in.wav -m j -b 112 -e out.mp2
Quelques dizaines de minutes plus tard vous obtenez vcd.mp2.

2.5 Conversion PAL <->FILM


Hormis la différence de résolution, seul le framerate change entre le pal (25 fps) et le film (23.976).
Nous pouvons utiliser la meme methode que precedemment.
Grace a : DirectshowSource("monfilm.avi",fps=25).FlipVertical()
Une fois la video encodée, le son est facile a resynchroniser. Pour du Film-> PAL
WLA in.wav out.wav -r 25 23.976
Quelques minutes plus tatd (WLA est tres rapide) vous obtiendrez une piste audio en pal parfaitement synchrone
Soundforge est a eviter car trop imprécis.

3. Gravure

Il ne reste plus qu'a multiplexer avec tsunami ou bbmpeg et à graver. Le plus simple est d'utiliser vcdimagereasy qui contient le moteur de gravure de cdrdao
Nero peut faire l'affaire pour les VCDs mais est a eviter pour les SVCDs.