Une TV connectée permet de lire une vidéo présente sur n'importe quelle machine présente sur le réseau local ... sauf que les choses se compliquent avec les sous-titres. En effet, la norme DLNA ne permet que de streamer qu'un seul flux à la fois. Pour palier à cet inconvénient, les logiciels serveur proposent généralement de re-coder à la volée la vidéo en y incrustant les sous-titres ... solution qui consomme du CPU sur le dit serveur au point que certaines vidéos lourdes (full HD, 3D), ne passent plus.
Mon script addsrt converti une vidéo en matroska (qui devrait être compréhensible par la TV) tout en y incluant le dit sous-titre.
#!/bin/bash
# Remux a video to an MKV contener and add a (french) subtitle to it
#
# I'm using this scripts mainly to convert video + .srt to a single MKV that
# will be streamed to my TV using DNLA/uPNP.
#
# 14/09/2012 - 1.0 - First version
# 15/09/2012 - 1.1 - handle srt with unknown encoding.
function rm_ext(){
# Remove file extention
echo "$*" | sed 's/(.*)..*/1/'
}
case $# in
3) # Everything provided
vdo="$1"
srt="$2"
res="$3"
;;
2) # Target missing = video.mkv
vdo="$1"
srt=$( rm_ext $vdo ).srt
res="$2"
;;
1) # Only the video provided
vdo="$1"
b=$( rm_ext $vdo )
srt=$b.srt
res=$b.mkv
;;
*)
echo "Remux a video to an mkv and include subtitle"
echo "$0 video.ext video.srt result.mkv"
echo "$0 video.ext result.mkv => srt = video.srt"
echo "$0 video.ext => srt = video.srt, result=video.mkv"
echo "If result is a directory, file generated is result/video.mkv"
exit
;;
esac
if [ -d "$res" ]; then
res="$res/"$( rm_ext $( basename "$vdo" ) ).mkv
fi
enc=$( file -b --mime-encoding "$srt" )
if [ "$enc" = "unknown-8bit" ]; then
enc=iso-8859-1
fi
echo "Video : $vdo, Subtitle : $srt ($enc), Result : $res"
mkvmerge -o "$res" "$vdo" --language 0:fr --sub-charset 0:$enc "$srt"
addsrt s'attend à recevoir jusqu'à 3 arguments, et devinera ceux qui sont absents ... ce qui donne les 3 syntaxes suivantes :
addsrt video.ext video.srt result.mkv
Tous les fichiers sont spécifiés.
addsrt video.ext result.mkv
Les sous-titres sont omis, addsrt essaiera de trouver un fichier vidéo.srt (donc pour un fichier nommé toto.avi, il prendra les sous-titre dans toto.srt).
addsrt video.ext
Les sous-titres et le fichier de résultat sont omis :
Dans les cas #1 et #2, le résultat peut être un répertoire et le fichier généré sera répertoire/video.mkv.
En résumé
addsrt toto.avi pour_la_tv
Visitez : Nos sorties Ski et rando |
Copyright Laurent Faillie
2001-2024
N'oubliez pas d'entrer le mot de passe pour voir aussi les photos perso. |
Contactez moi si vous souhaitez réutiliser ces photos et pour les obtenir avec une plus grande résolution. |
Visites durant les 7 derniers jours au total. |
Vous pouvez
laissez un commentaire
sur cette page.