Encoder ses vidéos avec mencoder

Publié le par wardiz

Mencoder est un logiciel d'encodage de vidéos faisant parti de la suite mplayer, l'un des meilleurs player de vidéos sous Linux.
Ici, je m'interesse plus particulièrement à l'encodage d'un DVD en mpeg4.Voulant encoder un DVD en divx, j'ai commencé à utiliser mencoder. La pratique la plus répandue semble être de procéder en 2 passes pour la partie vidéo. La première passe produit un fichier (extension .log) contenant des informations statistiques sur le film. Ce fichier est utilisé par la seconde passe pour produire une vidéo de trés bonne qualité en fonction des options que vous choisissez. Cet aspect est assez simple mais l'encodage de l'audio n'a pas été aussi simple.

Le probléme

La plupart des pistes audio d'un DVD sont au format AC3.1. Il est tout a fait possible de garder ce format pour la piste audio et d'encoder la vidéo en dvix. Cependant, si on veut encoder la piste audio en mp3, la plupart des tutoriaux qu'on peut trouver sur le net sont inexacts : de trés nombreux tutoriels préconisent d'effectuer l'encodage de la piste audio en premier et de cette manière :
mencoder -aid 131 dvd://1 -dvd-device "MonFilm" -oac mp3lame -lameopts mode=2:cbr:br=160:vol=0 -ovc frameno -o frameno.avi
Cette ligne procède uniquement à l'encodage de la piste audio, en mp3 avec un bitrate constant de 160kbit. Le résultat est placé dans le fichier de sortie frameno.avi.
L'option "-ovc frameno" indique de ne pas associer de vidéo dans le fichier de sortie.
La quasi totalité des tutoriaux vous indiquent alors qu'il faut procèder à l'encodage de la vidéo en 2 passes de cette manière :
mencoder -sid 5 -aid 131 dvd://1 -dvd-device "MonFilm"  -oac copy  -ovc lavc -lavcopts <options>:vpass=1 -vf scale=640:-2,crop=640:272:0:44 -o movie_tmp.avi
L'option qui nous interesse est "-oac copy" : cette option qui représente la piste audio indique que mencoder utilisera la piste audio du dernier encodage car cette option s'attend à trouver le fichier frameno.avi et l'utiliser comme piste audio : archi faux !
L'option "-oac copy" aura simplement pour effet de copier la piste audio de votre source dans votre fichier final, le fichier frameno.avi n'est jamais utilisé ! Ce qu'on traduit par : la piste audio de votre divx ne sera pas encodée en mp3 mais sera une copie de la piste audio de votre DVD. Alors certes vous bénéficierez d'une excellente qualité, mais pour gagner de la place c'est raté.

La solution

La solution est simple - quand on la connait : c'est d'effectuer l'encodage de la vidéo en premier (en 2 passes), avec l'option "-oac copy" pour l'audio (pas de transformation donc) et ensuite d'encoder l'audio.
Une fois le flux vidéo encodé, vous pouvez lancer une dernière fois mencoder pour cette fois encoder la piste audio en mp3.
On doit donc lancer mencoder 3 fois :
  1. première passe pour l'encodage de la vidéo et production d'un fichier de log
  2. deuxième passe pour l'encodage de la vidéo en utilisant le fichier de log
  3. encode de la piste audio
Pour l'encodage de la passe audio, c'est comme ceci :
mencoder movie_tmp.avi -oac mp3lame -lameopts mode=2:cbr:br=160:vol=1 -ovc copy  -o final_movie.avi
Vous pouvez supprimer le fichier movie_tmp.avi qui est votre film encodé en mpeg4 mais avec la piste audio de votre DVD.
Le fichier final_movie.avi est votre film encodé en mpeg4, avec la piste audio encodée en mp3.

Publié dans Linux

Commenter cet article