J'ai pensé à une façon d'obtenir un script Android pour accomplir ceci :
(1) créer un répertoire vide "work" ;
(2) copier le fichier VideoToPlay.mp4 dans ce répertoire work ;
(3) copier le fichier *.ssa dans le même répertoire sous le nom "VideoToPlay.ssa" ;
(4) exécuter la commande "am start" que j'ai postée ci-dessus, en pointant vers VideoToPlay.mp4
Cela fonctionne parce que tant qu'il y a un fichier .ssa dans le même répertoire que la vidéo et avec le même nom de base que la vidéo, VLC appliquera les sous-titres de ce fichier .ssa à la vidéo spécifiée.
Voici mon script pour accomplir ceci :
#!/system/bin/sh
workdir=/sdcard/vidwork
amstart=( /system/bin/am start -n org.videolan.vlc/org.videolan.vlc.gui.video.VideoPlayerActivity -a android.intent.action.VIEW -d )
amstop=( /system/bin/am force-stop org.videolan.vlc )
# Si VLC est en cours d'exécution, le tuer.
"${amstop[@]}" 1>/dev/null 2>&1
[[ $# -lt 1 ]] && {
echo "
usage: ${0##*/} video-to-play [ subtitle-file ]
"
exit 1
}
videopath="${1}"
shift
[[ -r "${videopath}" ]] || {
echo "
La vidéo n'existe pas : ${videopath}
"
exit 1
}
videoname="${videopath##*/}"
case "${videoname}" in
*.mp4|*.mkv)
;;
*)
echo "
La vidéo doit être en format mp4 ou mkv
"
exit 1
;;
esac
videobasename="$( echo "${videoname}" | /system/bin/sed -e 's/\.mp4$//i' -e 's/\.mkv$//i' )"
/system/bin/rm -rf "${workdir}" 1>/dev/null 2>&1
/system/bin/mkdir -p "${workdir}" 1>/dev/null 2>&1
[[ $# -gt 0 ]] && {
subpath="${1}"
shift
[[ -r ${subpath} ]] || {
echo "
Le fichier de sous-titres n'existe pas : ${subpath}
"
exit 1
}
/bin/cp "${subpath}" "${workdir}/${videobasename}.ssa"
}
/bin/cp "${videopath}" "${workdir}"
cmd=( "${amstart[@]}" "file:///${workdir}/${videoname}" )
{
"${cmd[@]}"
} 1>/dev/null 2>&1
exit 0
PS : Ce script doit être exécuté en tant que root pour que la commande /system/bin/am force-stop ...
fonctionne correctement.
Par conséquent, en supposant que ce script est stocké sous /sdcard/runvid.sh
, il doit être exécuté sur un appareil rooté de la manière suivante ...
/system/bin/su -c /sdcard/runvid.sh chemin-vers-fichier-vidéo [ chemin-vers-fichier-sous-titres ]