2 votes

Extraire une image spécifique à l'heure actuelle en utilisant VLC

J'essaie de créer une sorte de commande en Python ou Shell pour tirer une image spécifique d'une vidéo qui est lue ou diffusée sur vlc.

Imaginez un scénario dans lequel j'ai un fichier vidéo, je l'ouvre dans VLC et je clique sur "play". Je tire la première image que je rencontre dans Python ou à l'aide d'une commande Shell, je fais un traitement, et lorsque le traitement est terminé, je capture une autre image au moment exact où la vidéo a atteint.

Honnêtement, si je parviens à faire en sorte que VLC me fournisse le "temps" actuel d'une vidéo en cours de lecture (combien d'heures, de minutes, de secondes ou autre ont été passées dans le film), cela suffira et je pourrai utiliser ffmpeg.

J'utilise linux 14.04.

2voto

Kamil Maciorowski Points 57004

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 :

config1

y

config2

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.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X