====== MEncoder ====== Quelques lignes de commande pour faire du traitement video avec [[http://www.mplayerhq.hu/DOCS/HTML/en/encoding-guide.html|MEncoder]], encodeur très puissant de MPlayer. ===== Rotation ===== Quand un **** fait un film en tenant son iPad à l'envers, on se retrouve avec un fichier .mov et un torticolis. mencoder -ovc lavc -vf rotate=1 -oac pcm movie.mov -o movie-90.mov mencoder -ovc lavc -vf rotate=1 -oac pcm movie-90.mov -o movie-180.mov Oui je sais c'est con, on sait pas faire 180° d'un coup. 0 Rotate by 90 degrees clockwise and flip (default). 1 Rotate by 90 degrees clockwise. 2 Rotate by 90 degrees counterclockwise. 3 Rotate by 90 degrees counterclockwise and flip Le problème est que l'on obtient des pertes de qualité sur le fichier non négligeable. L'option ''-ovc copy'' (copie du flux vidéo sans décompresser) ne fonctionne pas avec des filtres. ===== Ripp DVD ===== Un vieux script utilisé pour récupérer toutes les épisodes d'un DVD d'une série, les récupérer en .vob (sans perte) et puis les convertir en .mkv avec les pistes de sous-titre. Une petite copie privée en soit. ==== Récupérer les pistes ==== On détecte toutes les pistes présentes sur le DVD. On peut les jouer pour être sûr de récupérer la bonne. dvdxchap -t 4 /dev/hda > chapters.txt mplayer -dvd-device /dev/hda dvd://1 mplayer -dvd-device /dev/hda dvd://2 ... ==== Récupérer le .vob ==== Pour récupérer la première piste dans un fichier (attention assez volumineux). mplayer -dvd-device /dev/hda -dumpstream dvd://1 -dumpfile myfile1.vob A répéter pour chaque piste voulue (sans doute moyen d'automatiser ça). ==== Conversion ==== Le script ci dessous est à lancer dans le dossier contenant tous les fichiers .vob. Pour chaque fichier, on récupère la piste audio fr et en qui sera encodée en vorbis, les sous-titres, la piste vidéo qui sera encodée en deux passes en x264 (je sais, j'aurais du utiliser Theora ou VP8). Le tout est ensuite mit dans un fichier .mkv. #!/bin/bash #script pour convertir tout les fichiers vob en mkv #apres avoir extrait les 2 bandes son et sous-titre for NAME in *.vob; do # vob -> en.wav -> en.ogg if [ -e ${NAME%.vob}en.wav ] then if [ -e ${NAME%.vob}en.ogg ] then echo "----${NAME%.vob}en wav and ogg already present" else echo "----${NAME%.vob}en wav only already present" oggenc -q 8 ${NAME%.vob}en.wav echo "-----file ${NAME%.vob}en.ogg created" notify-send "file ${NAME%.vob}en.ogg created" fi else mplayer $NAME -aid 129 -ao pcm:file=${NAME%.vob}en.wav -vc null -vo null echo "-----fichier ${NAME%.vob}en.wav créé" oggenc -q 8 ${NAME%.vob}en.wav echo "-----fichier ${NAME%.vob}en.ogg créé" notify-send "fichier ${NAME%.vob}en.ogg créé" fi # vob -> fr.wav -> fr.ogg if [ -e ${NAME%.vob}fr.wav ] then if [ -e ${NAME%.vob}fr.ogg ] then echo "----${NAME%.vob}fr wav and ogg already present" else echo "----${NAME%.vob}fr wav only already present" oggenc -q 8 ${NAME%.vob}fr.wav echo "-----file ${NAME%.vob}fr.ogg created" notify-send "file ${NAME%.vob}fr.ogg created" fi else mplayer $NAME -aid 128 -ao pcm:file=${NAME%.vob}fr.wav -vc null -vo null echo "-----fichier ${NAME%.vob}fr.wav créé" notify-send "fichier ${NAME%.vob}fr.wav créé" oggenc -q 8 ${NAME%.vob}fr.wav echo "-----fichier ${NAME%.vob}fr.ogg créé" notify-send "fichier ${NAME%.vob}fr.ogg créé" fi # vob -> sub if [ -e ${NAME%.vob}.sub ] then echo "----fichier ${NAME%.vob}.sub existe deja" else mencoder $NAME -vobsubout ${NAME%.vob} -vobsuboutindex 0 -sid 1 -o /dev/null -nosound -ovc frameno echo "-----fichier ${NAME%.vob}.sub créé" notify-send "fichier ${NAME%.vob}.sub créé" fi # vob -> avi if [ -e ${NAME%.vob}.avi ] then echo "----fichier ${NAME%.vob}.avi existe deja" else if [ -e divx2pass.log ] then echo "----pass 1 de ${NAME%.vob}.avi deja realisee" else echo "----début pass 1 de ${NAME%.vob}.avi" mencoder $NAME -o /dev/null -ovc x264 -x264encopts subq=1:frameref=1:pass=1:threads=auto -nosound -vf crop=720:576:0:0 echo "------pass 1 de ${NAME%.vob}.avi réalisée" notify-send "pass 1 de ${NAME%.vob}.avi réalisée" fi echo "----début pass 2 de ${NAME%.vob}.avi" mencoder $NAME -o ${NAME%.vob}.avi -ovc x264 -x264encopts subq=6:frameref=5:pass=2:threads=auto:bitrate=1000 -nosound -vf crop=720:576:0:0 echo "------pass 2 de ${NAME%.vob}.avi réalisée" notify-send "pass 2 de ${NAME%.vob}.avi réalisée" fi # all -> mkv if [ -e ${NAME%.vob}final.mkv ] then echo "----fichier ${NAME%.vob}.mkv existe deja" else echo "----début encodage ${NAME%.vob}.mkv" mkvmerge -o "${NAME%.vob}final.mkv" "${NAME%.vob}.avi" --language 0:eng "${NAME%.vob}en.ogg" --language 0:fre "${NAME%.vob}fr.ogg" --language 0:fre "${NAME%.vob}.idx" --title "${NAME%.vob}" fi echo "--------${NAME%.vob} fini !!!!" notify-send "${NAME%.vob} fini !!!!" done ===== Liens ===== * http://www.mplayerhq.hu/DOCS/HTML-single/en/MPlayer.html#mencoder * http://www.mplayerhq.hu/DOCS/HTML/en/menc-feat-x264.html * http://doc.ubuntu-fr.org/encodage_dvd_mkv * http://doc.ubuntu-fr.org/mencoder * http://forum.hardware.fr/hfr/VideoSon/Traitement-Video/topic-unique-mencoder-sujet_87558_1.htm * http://forum.ripp-it.com/index.php?showtopic=17950&pid=263481&st=0&#entry263481 * http://www.brad-x.com/2007/05/19/yet-another-linuxnix-video-h264-howto