si j'arrive à faire en sorte que VLC me fournisse le "temps" actuel d'une vidéo que je suis en train de lire
Cela peut être fait. VLC fournit de nombreuses interfaces. Utilisons telnet.
Etape 1 : activer telnet dans VLC
Méthode ponctuelle à la demande :
vlc --extraintf telnet --telnet-port 4212 --telnet-password "foobar" video_file_to_play.avi
Ou une configuration permanente. Lancez VLC, Outils -> Préférences (ou Ctrl + P ), alors :
y
Note : cette méthode permanente nécessite de redémarrer VLC.
Étape 2 : les tests
Vous pouvez maintenant contrôler VLC avec telnet. Tapez le bon mot de passe lorsque vous y êtes invité. Exemple :
$ telnet localhost 4212
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
VLC media player 2.2.2 Weatherwax
Password:
Welcome, Master
> get_time
30
>
Comme vous pouvez le voir, la commande permettant de récupérer la durée de lecture actuelle est la suivante get_time
. Type help
pour apprendre d'autres commandes VLC, quit
de démissionner. Peut-être que vous trouverez snapshot
utile.
Étape 3 : utilisation dans un script
C'est un tuyau assez simple. Ici, j'utilise nc
au lieu de telnet
(et foobar
est mon mot de passe, utilisez le vôtre) :
printf '%s\n' "foobar" "get_time" | nc localhost 4212
Mon VLC revient :
VLC media player 2.2.2 Weatherwax
Password:
Welcome, Master
87
> Bye-bye!
donc j'utilise head
y tail
pour extraire uniquement la ligne concernée :
printf '%s\n' "foobar" "get_time" | nc localhost 4212 | head -n 4 | tail -n 1
Malheureusement, la résolution du temps est de 1 seconde. Je n'ai pas trouvé de commande pour récupérer le numéro de l'image en cours.