> > > Ecrire à l'auteur < < <          

Mplayer / Mencoder : encodage de vidéo

J’utilise régulièrement le couple mplayer / mencoder pour lire et encoder des vidéos. Mplayer permet la lecture d’à peu près tout les formats, même ceux corrompus. Mencoder permet de convertir toutes les vidéos que peut lire Mplayer dans des formats plus ou moins standard (en gros : MPEG2 et MPEG4).

Ces deux logiciels hyper performants sont “geek friendly”, c’est à dire qu’il faut utiliser la ligne de commande et y passer pleins de paramètres pour utiliser a fond toutes les options de ces logiciels.

Dans cet article, j’indiquerais une sélection de commande permettant de convertir les vidéos (donc en utilisant Mencoder).

Formats d’encodage

Pour obtenir les différents codecs vidéo disponibles pour la conversion, utilisez la commande mencoder -ovc help :

Available codecs:
copy - frame copy, without re-encoding. Doesn't work with filters.
frameno - special audio-only file for 3-pass encoding, see DOCS.
raw - uncompressed video. Use fourcc option to set format explicitly.
nuv - nuppel video
lavc - libavcodec codecs - best quality!
vfw - VfW DLLs, read DOCS/HTML/en/encoding-guide.html.
qtvideo - QuickTime DLLs, currently only SVQ1/3 are supported.
xvid - XviD encoding
x264 - H.264 encoding

Pour les formats d’encodage audio, c’est la commande mencoder -oac help qu’il faut utiliser :

Available codecs:
copy - frame copy, without re-encoding (useful for AC3)
pcm - uncompressed PCM audio
mp3lame - cbr/abr/vbr MP3 using libmp3lame
lavc - FFmpeg audio encoder (MP2, AC3, ...)
faac - FAAC AAC audio encoder

Les différents conteneurs vidéo (c’est à dire, le format de fichier qui englobe l’audio, la vidéo, les sous-titres ect) sont listables avec la commande mencoder -of help :

Available output formats:
avi - Microsoft Audio/Video Interleaved
mpeg - MPEG-1/2 system stream format
lavf - FFmpeg libavformat muxers
rawvideo - (video only, one stream only) raw stream, no muxing
rawaudio - (audio only, one stream only) raw stream, no muxing

Dans les exemples suivants, le nom video_in.ext fait référence au fichier d’origine à convertir, tandis que le nom video_out.ext fait référence au ficher résultant de la convesrsion.

Opérations génériques

Redimensionner la vidéo

Ajouter -vf scale=320:240 en paramètre.

Extraire une image

Cette commande extrait les 10 images 12,3 secondes après le début de la vidéo :
mplayer -vo jpeg -ss 12.3 -frames 10 video_in.ext

Conversion i-pod

AVI TO IPOD
ffmpeg -i video_in.exe -vcodec mpeg4 -s 160×120 video_out.mp4

Conversion AVI MPEG4

AVI TO MP4

Le commande suivante transforme un fichier vidéo en MPEG4 (bitrate 256), avec du son en MP3 (bitrate 96)

mencoder -oac lavc -ovc lavc -lavcopts vcodec=mpeg4:acodec=mp3:vbitrate=256:abitrate=96 video_in.ext -o video_out.avi

Conversion Flash FLV

AVI TO FLV, AVI TO FLASH

Directement extrait de la documentation de Mencoder :

mencoder video_in.ext -o video_out.flv -forceidx -of lavf -oac mp3lame -lameopts abr:br=56 -srate 22050 -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -vf harddup -mc 0

Explication :

  • Garder la synchro audio/vidéo : -forceidx -vf harddup -mc 0
  • Encoder en “FLV” : -ovc lavc -lavcopts vcode=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3

Si des bandes noires apparaissent en haut et en bas de l’image, même en plein écran, il faut “croper” la vidéo. Tout d’abord, il faut détecter la position des bandes noires :

mplayer -vf cropdetect video_in.ext

Ceci va faire défiler des lignes de textes de la forme

[CROP] Crop area: X: 0..671 Y: 0..287 (-vf crop=672:288:0:0).

Attendez quelques secondes que la vidéo soit lancée, et notez les valeurs “crop=”.

Ensuite, relancez la vidéo avec le filtre “crop” et les valeurs indiquées :

mplayer -vf crop=672:288:0:0 video_in.ext

Plus lent mais de meilleure qualité : vcodec=flv:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:qns=2

Conversion d’un flux DVB-T en XVid

Pour transformer les enregistrements effectuées avec un décodeur TNT (format MPEG “TS”) en DivX/XVid. Les opérations a effectuer sont :

  • Obtenir les valeurs de recadarage avec mplayer -vf cropdetect video_in.ext
  • Appliquer le filtre de recadrage (-vf crop=xxx:xxx:xxx:xxx)
  • Appliquer un filtre de dé-entrelacement ( -vf pp=lb ou bien -vf yadif=1:1)
  • Appliquer quelque filtres spécifique au type de programme a transcoder :
    • Si c’est un dessin animé : -xvidencopts cartoon=1
  • Transformer la vidéo en XVid (-ovc xvid -xvidencopts bitrate=1000:trellis:me_quality=6:vhq=4 où 1000 est le bitrate de la vidéo (typiquement, entre 900 et 1300 )
  • Transformer le son en MP3 stéréo (-oac mp3lame -lameopts aq=0:cbr=128 ou parfois cbr:br=128:aq=0) ou bien, si le son est déja en MP3, il n’y a pas besoin de le transformer (-oac copy)

Exemple (apres avoir fait le “cropdetect”):

mencoder -vf screenshot,crop=688:544:16:16,pp=lb -ovc xvid -xvidencopts bitrate=1500 -idx -oac copy video_in.ext -o video_out.ext

FFMPEG

Convertir une vidéo en WEBM, sans le son :
ffmpeg -i "___INPUT.EXT" -codec:v libvpx -quality good -cpu-used 0 -b:v 300k -maxrate 350k -bufsize 1000k -qmin 10 -qmax 42 -vf scale=-1:360 -threads 4 -an -strict -2 "_____OUTPUT.webm"
Pour avoir le son, remplacer -an par -codec:a vorbis -b:a 128k

Convertir une vidéo en WEBM (compatible HTML5), avec le son :
ffmpeg -i INPUT.AVI -vcodec libvpx -acodec libvorbis -aq 5 -ac 2 -qmax 25 -b:v 614400 -s 720x576 OUT.WEBM

Convertir une vidéo en MP4 (compatible HTML5) :

ffmpeg -i INPUT.AVI -acodec libfaac -ab 96k -vcodec libx264 -vpre slower -vpre main -level 21 -refs 2 -b 345k -bt 345k -threads 0 -s 720x576 OUT.mp4

Autres ressources :

Encodage avec la famille de codec libavcodec (doc officielle en francais de MEncoder)

Ripping DVDs to Divx with mencoder (mplayer)

Laisser un commentaire

CAPTCHA

Hey you spammer : each comments are manually validated. I do not need viagra or rolex.