====== Fichiers MKV ======
===== Création =====
Copie integrale
ffmpeg -i Upside_Down.mp4 -vcodec copy -acodec copy -f matroska Upside_Down.mkv
On copie la video et on transcode le son
ffmpeg -i S1-02\ Les\ Dalton\ twistés.mkv -vcodec copy -acodec mp3 S1-02\ Les\ Dalton\ twistés\ -\ 2.mkv
for i in *.mkv; do ffmpeg -i "$i" -vcodec copy -acodec mp3 "transcode/$i"; done
ffmpeg -i Upside_Down.mp4 -vcodec copy -acodec mp3 -f matroska Upside_Down.mkv
Ajout de sous-titre
mkvmerge -o 7x23-24\ -\ The\ Magician\ s\ Code.final.mkv 7x23-24\ -\ The\ Magician\ s\ Code.mkv 7x23-24\ -\ The\ Magician\ s\ Code.srt
mkvmerge -o with-lang-codes.mkv --language 2:ger --language 3:dut --default-track 3 without-lang-codes.mkv --language 0:eng english.srt --default-track 0 --language 0:fre --sub-charset 0:ISO-8859-15 french.srt
On met la deuxieme piste audio d'un fichier en premier et par defat + ajout de sous-titres
mkvmerge -o refait/01-video.mkv -a 2 -S --default-track 2 01 - embouteillage.mkv -a 1 -D -S 01 - embouteillage.mkv --language 0:fre fre-srt/01 - Traffic Jam (2).PDTV.fr.srt --language 0:eng eng-srt/01 - Traffic Jam (2).en.srt
Decoupage de fichier
mkvextract tracks 01* 0:extr/01-video.avi 1:extr/01-fre.rm 2:extr/01-end.rm
Transformation d'un fichier avi en anglais vers un mkv avec ajout de sous-titre
mkvmerge -o "newFile.mkv" --title "${name}" --track-name 1:"Anglais" --language 1:eng "File.avi" --language 0:fre --sub-charset 0:ISO-8859-15 --track-name 0:"Francais" --default-track 0 "fre.srt" --language 0:eng --sub-charset 0:ISO-8859-15 --track-name 0:"Anglais" "eng.srt"
===== Modification des propriétés du fichier (titre, nom langues, ...) =====
le programme mkvpropedit permet de modifier à la volée les propriétés d'un fichier mkv. Voici un exemple où je ne modifie que le titre du film
mkvpropedit --edit info film.mkv -s title="Titre du film"
On modifie les nom des pistes audio/sous-titre : les pistes 2 et 3 (cf mkvinfo) en francais, les pistes 3 et 4 en anglais :
mkvpropedit film.mkv --edit track:3 --set name=Anglais --set language=eng -e track:2 -s name=Francais -s language=fre -e track:4 -s name=Anglais -s language=eng -e track:5 -s name=Francais -s language=fre
Enlever les chapitres, enlever le language d'un track, son nom
mkvpropedit film.mkv --chapters ''
mkvpropedit film.mkv -e track:1 -d name -d language
Mettre le language par defaut sur le track 2 et pas le 3
mkvpropedit film.mkv -e track:2 -s flag-default=1 --e track:3 -s flag-default=0
===== Réencodage =====
Avant de réencoder un fichier, il faut connaitre les flux disponibles :
avprobe fichier.mkv
Voici un exemple pour réencoder en h264 la video sans modifier les autres éléments (audio, sous-titre) ni changer l'ordre des flux (options map)
ffmpeg -i fichier.mkv -c:v libx264 -c:a copy -c:s copy -map 0:0 -map 0:1 -map 0:2 -map 0:3 -f matroska out.mkv
Voici une bonne [[https://wiki.debian.org/fr/ffmpeg|doc]] sur ffmpeg.
===== Création depuis un dvd =====
[[http://doc.ubuntu-fr.org/encodage_dvd_mkv|Source ubuntu]]
[[https://trac.ffmpeg.org/wiki/Encode/MPEG-4/|source ffmpeg.org]]
pkg debian :
transcode
dvdrip
i variable de titre de dvd
Extraction vob
mplayer -dvd-device MALCOLM_S3D1_Full_up.MetatroN.iso -dumpstream dvd://${i} -dumpfile Malcolm_S3D1/Video_${i}.vob
mplayer -dvd-device MALCOLM_S3D1_Full_up.MetatroN.iso -nocache -dumpstream dvdnav://${i} -dumpfile Malcolm_S3D1/Video_${i}-2.vob
A partir de la on est dans le repertoire Malcolm_S3D1
Encodage de l'audio en AAC MP3 et AC3(Recommandée)
ffmpeg -i Extr_${i}.vob -map 0:2 -vn -sn -acodec libfaac Audio_en_${i}.aac
ffmpeg -i Extr_${i}.vob -map 0:1 -vn -sn -acodec libfaac Audio_fr_${i}.aac
ffmpeg -i Extr_${i}.vob -map 0:2 -vn -sn -acodec libmp3lame Audio_fr_${i}.mp3
ffmpeg -i Extr_${i}.vob -map 0:3 -vn -sn -acodec libmp3lame Audio_en_${i}.mp3
ffmpeg -i Extr_${i}.vob -map 0:2 -vn -sn -acodec copy Audio_fr_${i}.ac3
ffmpeg -i Extr_${i}.vob -map 0:3 -vn -sn -acodec copy Audio_en_${i}.ac3
Compression video 2 passes
ffmpeg -i Video_${i}.vob -an -sn -pass 1 -vcodec libx264 -b 800k -threads 0 Video_${i}.pass1.avi
ffmpeg -i Video_${i}.vob -an -sn -pass 2 -vcodec libx264 -b 800k -threads 0 Video_${i}.avi
Extraction des sous-titres
2 etapes :
- .vob + .ifo (à copier depuis le dvd monté) -> .sub : utilisation de dvdrip
- .sub + .idx -> .srt : vobsub2srt soustitres (dans le répertoire contenant soustitres.sub et soustitres.idx)
Mise en forme MKV
mkvmerge -o Video_${i}.mkv --title "${name}" Video_${i}.avi --language 0:eng Audio_en_${i}.aac --language 0:fre Audio_fr_${i}.aac
L'extraction des sous-titres et des vob peut se faire avec dvdrip. Il faut également copier les fichier IFO (après montage du DVD) dans le répertoire tmp/ifo/ pour l'extraction des sous-titres.
C'est plus simple
Modification des information : Changement du titre
mkvpropedit -s title="Nouveau titre" Fichier.mkv
===== Edition de sous-titre =====
Logiciel [[http://home.gna.org/gaupol/|Gaupol]]
Récuperation simple des informations sur les pistes
mkvmerge -i nom_du_fichier.mkv
File 'nom_du_fichier.mkv': container: Matroska
Track ID 1: video (V_MS/VFW/FOURCC, DIV3)
Track ID 2: audio (A_MPEG/L3)
Track ID 3: audio (A_VORBIS)
Track ID 4: subtitles (S_TEXT/UTF8)
Extraire les pistes d'un mkv
mkvextract tracks nom_du_fichier.mkv 4:soustitres.srt
mkvextract tracks nom_du_fichier.mkv 3:audio.ogg