web-dev-qa-db-fra.com

Comment puis-je extraire une image d'une heure particulière d'une vidéo dans Xubuntu 16.04?

Je cherche une option en ligne de commande.

Par exemple, si j'ai la vidéo sample-video.mp4 et que je souhaite générer un fichier image sample-image.jpg à partir de la vidéo à l'heure 00:00:26, quelle commande dois-je donner?

En outre, il serait très utile que vous puissiez expliquer en détail la fonction de chaque argument de la commande.

8
Sonevol

Vous pouvez utiliser mplayer (du paquetage mplayer, non installé par défaut):

mplayer -vo jpeg -ss 00:00:26 -frames 1 sample-video.mp4

Cela créera le fichier 00000001.jpg et vous devrez donc le renommer. Autant que je sache, il n'y a aucun moyen de spécifier un nom de fichier.

-vo jpeg signifie que vous voulez une sortie JPEG, -ss 00:00:26 cherche à la position donnée, -frames 1 signifie traiter une image puis quitter.

8
Florian Diesch

Vous pouvez utiliser ffmpeg

ffmpeg -loglevel quiet -ss 26 -i sample-video.mp4  -t 1 -f image2 anyfilename.jpeg
  • - loglevel définit le logoutput sur quiet car ffmpeg est très bavard
  • - ss est une recherche (en secondes, c'est-à-dire l'endroit où vous souhaitez prendre l'instantané)
  • - i fichier vidéo d'entrée
  • - t durée de l'instantané (en secondes)
  • - f type de fichier

Vous pouvez également jouer avec les options, telles que la qualité de contrôle de la sortie jpeg -q:v <linear integer 1-10> ou la résolution -s 480x300.

Quelques idées supplémentaires ici


Méthode VLC

cvlc sample-video.mp4 --start-time=26 --run-time=1 --rate=1 --video-filter=scene --vout=dummy --aout=dummy  --scene-ratio=24 --scene-prefix=sample-image --scene-replace vlc://quit
  • cvlc - parce que sa ligne de commande et nous ne voulons aucune fenêtre s'ouvrant. cela signifie aussi que nous pouvons le faire sans X11.

  • - heure de début = 26 - correspond à la position exacte de l'instantané en secondes

  • - durée d'exécution = 1 - durée de la lecture de la vidéo en secondes. On y joue une seconde pour faire une capture d'écran de cette seconde
  • - rate = 1 quand effectuer la capture d'écran. Cela signifie essentiellement "toutes les secondes" et est utile, si vous avez des fichiers plus longs, de prendre une capture d'écran toutes les 60 secondes ou toutes les 5 minutes.
  • - video-filter = scene indique à VLC que nous voulons prendre des captures d'écran.
  • - vout = dummy pas de sortie pour la vidéo sur X11, nous n'en avons pas besoin
  • - aout = dummy pas de sortie audio, nous n'en avons pas besoin
  • - ratio-scène = 24 nous disons à VLC qu'il y a environ 24 images par seconde
  • - scene-prefix = sample-image le nom de fichier de votre capture d'écran
  • - scene-replace remplace tous les fichiers appelés comme votre capture d'écran sample-image.png par votre capture d'écran actuelle. Si vous omettez cela, VLC commencera à numéroter les captures d'écran.
  • vlc: // quit quit vlc une fois que nous avons terminé

Documentation complète ici

12
Robert Riedl