Encodage
Faire de l'encodage vidéo sous GNU/Linux c'est simple !
Ré-encoder un trailer haute définition en le redimensionnant et en haute qualité (LAVC 2 pass, 1500kbps+Vorbis Q10)
$ mencoder LandOfTheDead.wmv -o Land1.avi -ovc lavc -oac pcm -lavcopts vpass=1:vbitrate=1500 -vf crop=1290:690:0:14,scale=640:345,harddup -sws 2 -ofps 25 $ mencoder LandOfTheDead.wmv -o Land1.avi -ovc lavc -oac pcm -lavcopts vpass=2:vbitrate=1500 -vf crop=1290:690:0:14,scale=640:345,harddup -sws 2 -ofps 25 $ ogmmerge -o Land1.ogm Land1.avi $ ogmdemux Land1.ogm $ oggenc -q 10 Land1.ogm-a1.wav $ ogmmerge -o Land-final.ogm -A Land1.avi Land1.ogm-a1.ogg $ rm -f Land1*
Important:
- les 2 passes de codage, donc deux commandes, une fois avec vpass=1 puis avec vpass=2le redimensionnement: on retaille déjà les bordures noires (crop=..., obtenu avec mplayer -vf cropdetect LandOfTheDead.wmv) puis on redimensionne (scale=...)
- le harddup est très important, il indique qu'il faut également encoder les "duplicate frames" et évite ainsi tout décalage a/v
- le -sws indique la méthode de redimensionnement
- ne pas oublier d'indiquer le fps de la vidéo originale, sinon encodage pourri.
Convertir 2 fichiers WMV en un OGM contenant un codec vidéo libre et audio libre (ici LAVC+Vorbis)
$ mencoder ivg_fev_05_part1.wmv -o 01.avi -ovc lavc -oac pcm -lavcopts vpass=1:vbitrate=200 -ofps 23.976 $ mencoder ivg_fev_05_part2.wmv -o 02.avi -ovc lavc -oac pcm -lavcopts vpass=1:vbitrate=200 -ofps 23.976 $ avimerge -o out.avi -i 01.avi 02.avi $ ogmmerge -o temp.ogm -D out.avi $ ogmdemux temp.ogm $ normalize temp.ogm-a1.wav $ oggenc -q 0 temp.ogm-a1.wav $ ogmmerge -o IVG_Fev_2005.ogm -A out.avi temp.ogm-a1.ogg
Explication:
- on encode les deux fichiers wmv respectivement en 01.avi et 02.avi, en utilisant le codec lavc avec un bitrate de 200kbps (c'est pour de la diffusion web et les vidéos à la base sont pas de qualité super) et en audio PCM, ce sont les deux premières commandes mencoder. On a rajouté l'option -ofps 23.976 car les vidéos n'étaient pas en 25fps comme mencoder le considère par défaut (et encoder une vidéo de 24fps en 25fps ça merde).
- Ensuite on met les deux fichiers AVI ensemble avec avimerge.
- Ensuite on récupère le flux audio en créant un fichier .ogm avec ogmmerge contenant uniquement le flux audio du AVI (option -D de ogmmerge = ne pas prendre la vidéo).
- On extrait le flux PCM du OGM (c'est un peu bidouille parce que y'a pas d'avidemux sous linux) avec ogmdemux qui crée donc un fichier temp.ogm-a1.wav.
- Ensuite on met le volume sonore du WAV au bon niveau avec normalize.
- Puis on encode le wav en Ogg Vorbis avec oggenc (ici qualité 0 sur une échelle de -1 à 9, correspond à une qualité de ~48-64kbps).
- Et enfin on compile la vidéo avec ogmmerge (mais pas la bande son, option -A de ogmmerge = ne pas prendre le flux audio) et l'audio dans un OGM final qui sera distribué.
Résultat: 11Mo au lieu de 15Mo et avec des codecs libres :)
Autres options utiles
-ss hh:mm:ss
Marque le moment ou débuter l'encodage
-endpos ss
Marque le temps après le début d'encodage ou arreter l'encodage (en secondes)
-aspect format
Force l'aspect d'une vidéo (souvent utile avec les AVI qui ne l'indiquent pas). Exemple: -aspect 4:3, -aspect 1.0...
Filtres utiles (-vf)
pp=lb
désentrelacement (si dans les mouvements de la vidéo des lignes apparaissent vous avez besoin de ça, voir aussi cette doc mplayer)
crop=largeur:hauteur[:xpos:ypos]
Croppe la vidéo (pour enlever les bordures noires)
scale=largeur:hauteur
Redimensionne la vidéo
hqdn3d
Enlève le bruit vidéo (un peu)
Encodage accessible de bonne qualité (lisible freebox etc.)
# Encodage de la vidéo, 1ère passe # On a un fichier PAL (aspect 1.07, en 720x576) # on le passe en 4/3 (crop) # On le désinterlace (pp=lb, ou pp=li) # On elève du bruit (hqdn3d, et pp=tn:10:20:30) $ mencoder episode.avi -o 01.avi -oac pcm -ovc xvid -xvidencopts bitrate=1200:pass=1:turbo -vf pp=lb,hqdn3d,pp=rn:10:20:30,crop=710:532:0:16,scale=640:480,pp -aspect 4/3 # Encodage 2ème passe, même ligne que précédemment mais pass=2 # Extraction du flux audio pour retouches $ mplayer -ao pcm:file=01-sound.wav -vo null 01.avi # Là on fait des trucs sur le fichier audio ailleurs # Après on normalise $ normalize-audio 01-final.wav # On encode en 160kbps $ lame --preset hifi 01-final.wav 01-final.mp3 # Extraction flux vidéo $ mencoder -ovc copy -nosound -o 01-video.avi 01.avi # Merge vidéo/audio: c'est finit :) $ avimerge -o 01-final.avi -i 01-video.avi -p 01-final.mp3