Créer un fichier MKV contenant une vidéo et des sous-titres
dimanche 27 octobre 2013 à 18:39 Tiger-222, le 27/10/2013 à 16:40
Un ptit script fait maison pour les séries ou films à sous-titrer.
Il faut installer les paquets mkvmerge et recode (je ne sais plus si ça fait partie du système de base).
Dans un dossier, lancez mkv() (faites un alias, plus pratique), il créera des MKV s'il y a des AVI/MP4 avec des fichiers SRT.
(Permalink)
detout, le 27/10/2013 à 18:39
a check
#!/bin/sh
#
# Créer un fichier MKV contenant une vidéo et des sous-titres.
# S'il y a seulement un .srt, on le prend, sinon on prend en.srt, fr.srt., ...
# Tiger-222, le 29 janvier 2013 (MàJ : 23 août 2013).
#
# Réencodage des sous-titres si nécessaire
reencoder() {
[ "$(file "$1" | grep -o ISO-8859)-prout" = "ISO-8859-prout" ] && recode l1..u8 "$1"
[ "$(file "$1" | grep -o Non-ISO)-prout" = "Non-ISO-prout" ] && recode l1..u8 "$1"
[ "$(file "$1" | grep -o 'with BOM')-prout" = "with BOM-prout" ] && tail --bytes=+4 "$1" >"$1.ok" && rm "$1" && mv "$1.ok" "$1"
}
# Créer le fichier MKV
mkv() {
nom=$(echo "$1" | sed "s/.$2$//")
soustitres=""
if test -f "$nom.srt"; then
reencoder "$nom.srt"
soustitres="--language 0:fre -s 0 -D -A \"$nom.srt\""
else
if test -f "$nom.fr.srt"; then
reencoder "$nom.fr.srt"
soustitres="$soustitres --language 0:fre --default-track 0:yes -s 0 -D -A \"$nom.fr.srt\""
fi
if test -f "$nom.en.srt"; then
reencoder "$nom.en.srt"
soustitres="$soustitres --language 0:eng -s 0 -D -A \"$nom.en.srt\""
fi
if test -f "$nom.es.srt"; then
reencoder "$nom.es.srt"
soustitres="$soustitres --language 0:spa -s 0 -D -A \"$nom.es.srt\""
fi
fi
echo mkvmerge -q -o \"$nom.mkv\" \"$nom.$2\" $soustitres >>a-faire.sh
}
echo "#!/bin/sh" >a-faire.sh
for fichier in *.avi; do
[ -f "$fichier" ] && mkv "$fichier" avi
done
for fichier in *.mp4; do
[ -f "$fichier" ] && mkv "$fichier" mp4
done
sh a-faire.sh
rm a-faire.sh
exit 0
(Permalink)
Un ptit script fait maison pour les séries ou films à sous-titrer.
Il faut installer les paquets mkvmerge et recode (je ne sais plus si ça fait partie du système de base).
Dans un dossier, lancez mkv() (faites un alias, plus pratique), il créera des MKV s'il y a des AVI/MP4 avec des fichiers SRT.
(Permalink)
detout, le 27/10/2013 à 18:39
a check
#!/bin/sh
#
# Créer un fichier MKV contenant une vidéo et des sous-titres.
# S'il y a seulement un .srt, on le prend, sinon on prend en.srt, fr.srt., ...
# Tiger-222, le 29 janvier 2013 (MàJ : 23 août 2013).
#
# Réencodage des sous-titres si nécessaire
reencoder() {
[ "$(file "$1" | grep -o ISO-8859)-prout" = "ISO-8859-prout" ] && recode l1..u8 "$1"
[ "$(file "$1" | grep -o Non-ISO)-prout" = "Non-ISO-prout" ] && recode l1..u8 "$1"
[ "$(file "$1" | grep -o 'with BOM')-prout" = "with BOM-prout" ] && tail --bytes=+4 "$1" >"$1.ok" && rm "$1" && mv "$1.ok" "$1"
}
# Créer le fichier MKV
mkv() {
nom=$(echo "$1" | sed "s/.$2$//")
soustitres=""
if test -f "$nom.srt"; then
reencoder "$nom.srt"
soustitres="--language 0:fre -s 0 -D -A \"$nom.srt\""
else
if test -f "$nom.fr.srt"; then
reencoder "$nom.fr.srt"
soustitres="$soustitres --language 0:fre --default-track 0:yes -s 0 -D -A \"$nom.fr.srt\""
fi
if test -f "$nom.en.srt"; then
reencoder "$nom.en.srt"
soustitres="$soustitres --language 0:eng -s 0 -D -A \"$nom.en.srt\""
fi
if test -f "$nom.es.srt"; then
reencoder "$nom.es.srt"
soustitres="$soustitres --language 0:spa -s 0 -D -A \"$nom.es.srt\""
fi
fi
echo mkvmerge -q -o \"$nom.mkv\" \"$nom.$2\" $soustitres >>a-faire.sh
}
echo "#!/bin/sh" >a-faire.sh
for fichier in *.avi; do
[ -f "$fichier" ] && mkv "$fichier" avi
done
for fichier in *.mp4; do
[ -f "$fichier" ] && mkv "$fichier" mp4
done
sh a-faire.sh
rm a-faire.sh
exit 0
(Permalink)