Ci-dessous, les différences entre deux révisions de la page.
mencoder [2012/11/20 11:16] mart |
mencoder [2019/04/02 11:14] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== 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. | ||
- | |||
- | <code>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</code> | ||
- | |||
- | Oui je sais c'est con, on sait pas faire 180° d'un coup. | ||
- | |||
- | <code>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</code> | ||
- | |||
- | 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. | ||
- | |||
- | <code>dvdxchap -t 4 /dev/hda > chapters.txt | ||
- | mplayer -dvd-device /dev/hda dvd://1 | ||
- | mplayer -dvd-device /dev/hda dvd://2 | ||
- | ...</code> | ||
- | |||
- | ==== Récupérer le .vob ==== | ||
- | |||
- | Pour récupérer la première piste dans un fichier (attention assez volumineux). | ||
- | |||
- | <code>mplayer -dvd-device /dev/hda -dumpstream dvd://1 -dumpfile myfile1.vob</code> | ||
- | |||
- | 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. Le tout est ensuite mit dans un fichier .mkv. | ||
- | |||
- | <code>#!/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</code> | ||