Encoder avec mencoder
La page de manuel de mplayer et mencoder est très complète mais un peu dense. Du coup, pour me rappeler comment convertir une vidéo, un petit mémo :
1 La ligne à changer
mencoder fichierEnEntree.avi -oac copy -ovc copy -o fichierDeSortie.avi
Les options :
-oac
: choix du codec audio, codec copy = pas d’encodage, on recopie
-ovc
: choix du codec vidéo, codec copy = pas d’encodage, on recopie
Cette ligne de commande ne fait donc « rien » :þ mais en changeant les codecs audio ou vidéo…
2 Changer de format de sortie
2.1 Output Codec Audio -oac
Les codecs audio sont à choisir parmi :
pcm
(pour du non compressé)
mp3lame
lavc
help
pour la liste des codecs disponibles
Deux des codecs en « détails » : mp3lame
et lavc
2.1.1 mp3lame
Pour du mp3 qui passe partout. On peut alors ajouter des options avec -lameopts
:
lameopts
Là ça devient vite technique. Faites confiance aux sites que vous visitez (ou expérimentez pour trouver votre bonheur), ou utilisez les preset
.
Quelques exemples classiques:
-oac mp3lame -lameopts cbr:br=128
(bitrate constant (cbr) à 128kbps)
-oac mp3lame -lameopts preset=15:mode=3
(bitrate moyen de 15kbps, mode=3 pour du mono, 0 pour du stéréo)
Si comme moi, vous n’avez pas une oreille d’expert, fast:preset=standard devrait convenir (voire preset=medium), pour du 170-210kbps. Si vous êtes exigeants preset=insane
pour du 320kbps.
2.1.2 lavc
Pour ceux qui connaissent ce qu’ils veulent. Les options avec -lavcopts
:
lavcopts
Deux exemples :
acodec=vorbis
acodec=ac3:abitrate=192
2.1.3 le-truc-par-défaut-qui-devrait-marcher-tout-le-temps
-oac mp3lame
sans rien du tout pour du mp3
ou
-oac lavc
sans rien du tout pour du mp2
2.2 Output Codec Video -ovc
Les codecs pour la vidéo que je vais détailler :
raw
pour du non compressé
lavc
Sinon, help
pour la liste des codecs disponibles
2.2.1 raw
On précise les options avec -vf
: -ovc raw -vf format=rgb24
2.2.2 lavc
Les options sont encore avec lavcopts
:
lavcopts
vcodec=mpeg4:vbitrate=300
(mpeg4 (qui est la valeur par défaut si on ne mets pas de lavcopts) en 300kbps)
keyint=250
(une trame clé toutes les 250, plus c’est petit plus le fichier de sortie est gros, mais meilleur est le déplacement)
aspect=16/9
(« mieux que le redimensionnement, car la qualité n’en est pas diminuée » dixit man)
2.3 On peut également encoder en plusieurs passes :
2.3.1 En 2 passes
mencoder [les options] -ovc lavc -lavcopts foo=bar:vpass=1
(crée un fichier de statistiques)
puis
mencoder [les options] -ovc lavc -lavcopts foo=bar:vpass=2
(crée le fichier vidéo en se servant du fichier de statistiques)
On peut également ajouter « turbo » pour la première passe.
2.3.2 En X passes
mencoder [les options] -ovc lavc -lavcopts foo=bar:vpass=1
(pour créer le fichier de statistiques)
puis X-1 fois
mencoder [les options] -ovc lavc -lavcopts foo=bar:vpass=3
(qui crée le fichier vidéo et modifie celui de stats)
2.4 Les options de sous-titres
-sub fichier.sub
-sub-bg-alpha 100
(transparence du fond, de 1 à 255, 1 pas transparent, 255 très transparent, 0 totalementtransparent)
-subdelay 2
(retarde les sous-titres de 2 secondes)
-subfps 25
(rapport trame/sec des sous-titres, utile si les sous-titres se décalent au cours du temps)
2.5 Le divers
Si on veut augmenter le son : -af volume=30
Si on veut jouer avec luminosité/contraste : -vf eq=10/0
Si on veut ajouter des bandes noires : -vf expand=0:-50:0:0
(ajoute un bord de 50 pixels en bas de l’image)
3 Quelques exemples :
3.1 Conversion asf vers flv, l’asf étant tout pourri comme format, le flv pratique pour le web :
mencoder -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=400:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -of lavf -lavfopts format=flv -srate 22050 -ofps 24000/1001 -af volume=30 -vf eq=20:0 -o $sortie $1
Tiré d’un de mes scripts, d’où les $1 $2
Qui en décomposé donne :
mencoder -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=400:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 #diverses options pour «améliorer la qualité si possible» -of lavf -lavfopts format=flv -srate 22050 -ofps 24000/1001 -af volume=30 -vf eq=20:0 -o foo.flv bar.asf
3.2 Conversion d’un flv en xvid avec incrustation de sous-titres
mencoder -oac mp3lame -lameopts cbr:br=128 -ovc xvid -xvidencopts bitrate=900 -sub foo.srt -o foo.xvid foo.flv
Comme le bitrate est ptêtre un peu trop grand, on peut le récupérer au préalable avec :
mplayer -vo null -ao null -identify -frames 0 foo.flv 2>/dev/null | grep "VIDEO:" | awk '{print int($7)}'