Outil rapide pour générer des galeries vidéo miniatures pour la ligne de commande


14

J'utilise gframecatcher pour générer des galeries vidéo miniatures, c'est-à-dire quelque chose comme ceci:

entrez la description de l'image ici

Cependant, il s'agit d'un outil GUI et je veux créer récursivement une galerie pour chaque vidéo dans une structure de répertoire, donc je recherche un outil de ligne de commande rapide pour ce faire.

Réponses:


28

Retirez les captures d'image (elles mesurent 100 pixels de haut et gardez le rapport hauteur / largeur), le taux ( -r) est par seconde (cela donne une image toutes les 5 minutes environ), cela ajoute également un horodatage à l'image de sortie.

ffmpeg  -i MOVIE.mp4 -r 0.0033 -vf scale=-1:120 -vcodec png capture-%002d.png

Ensuite, utilisez ImageMagickpour créer votre image de galerie:

montage -title "Movie Name\nSubtitle" -geometry +4+4 capture*.png output.png

7
Vous pouvez utiliser des fractions pour le taux ( -r). Cela rend plus facile et plus précis la spécification des heures. 5min = 300 secondes ffmpeg -i MOVIE.mp4 -r 1/300 -vf scale=-1:120 -vcodec png capture-%02d.png.
DutGRIFF

avconvfonctionne de la même manière, au cas où vous n'en auriez pas ffmpegdisponible (certaines versions d'Ubuntu).
Ken Sharp

2
Cela fonctionne, mais nécessite une plomberie dans tout le fichier vidéo. superuser.com/questions/538112/… fournit quelques exemples qui tentent de trouver des miniatures significatives, ainsi que d'éviter d'avoir à s'asseoir et à traiter la vidéo entière pour obtenir quelques images.
Skrylar

Cela n'ajoute pas l'horodatage à l'image.
felwithe

Comment feriez-vous cela en lot pour un tas de vidéos dans un répertoire?
Paul Jones

12

J'aime utiliser un script bash de ligne de commande unix facile à utiliser appelé VCS - Video Contact Sheet. Leur page officielle: http://p.outlyer.net/vcs/

Son beaucoup plus facile à utiliser encore plus facile qu'une interface graphique

'' Il s'agit d'un script bash destiné à créer des planches de contact vidéo (aperçus) alias des miniatures ou des aperçus de vidéos. Toute vidéo prise en charge par mplayer et ffmpeg peut être utilisée par ce script. '' Vous devrez avoir l'un ffmpegou l' autre mplayerinstallé sur votre système.

Usage:

vcs input-filename -U0 -i 1m -c 3 -H 200 -a 300/200 -o save-filename.jpg

Fonctionnement de la commande

Modifiez le nom du fichier d'entrée au nom de votre fichier vidéo!

  • -U0(pas de nom dans le pied de page - sinon il affiche le nom d'hôte - notez qu'il s'agit de zéro et non de la lettre O)

  • -i 1m(définit l'intervalle de temps de capture en minutes - dans ce cas, c'est toutes les minutes - vous pouvez également utiliser à la -nplace ce qui définit le nombre de captures, par exemple -n 21, créera 21 images, mais n'utilisez pas les deux)

  • -c définit le nombre de colonnes (ici c'est 3 colonnes)

  • -H 200 -a 300/200 (définit la taille et l'aspect afin que le fichier ne soit pas trop gros - il semble que vous devez faire les deux)

  • -o filename.jpg(utilisez .jpgpar défaut car il .pngest trop grand - et changez le nom de fichier en celui de votre choix!)


7

Celui-ci semble correspondre à la facture , il est gratuit et open source et fonctionne même sur Windows :)

Il a même des choses avancées, comme au lieu de choisir aveuglément n'importe quelle image à un intervalle particulier, il peut choisir celles qui sont assez proches mais qui ne semblent pas trop floues, alors au lieu de faire ceci:

capture d'écran

Vous pouvez lui passer un paramètre ( -D6) pour qu'il fasse ceci:

meilleure capture d'écran

De plus, je n'aime vraiment pas les bordures, de sorte que les images peuvent être légèrement plus grandes.


7

Il existe une solution sur le forum ffmpeg.

Pour faire plusieurs captures d'écran et les placer dans un seul fichier image (création de tuiles), vous pouvez utiliser le filtre vidéo de tuiles de FFmpeg, comme ceci:

ffmpeg -ss 00:00:10 -i movie.avi -vf 'select=not(mod(n\,1000)),scale=320:240,tile=2x3' out.png

Cela cherchera 10 secondes dans le film, sélectionnera chaque 1000ème image, le mettra à l'échelle à 320x240 pixels et créera 2x3 tuiles dans l'image de sortie out.png.

Article d'origine ici - http://ffmpeg.gusari.org/viewtopic.php?f=25&t=597


De plus, ffmpeg semble prendre en charge "recadrer" avec la même syntaxe.
quelques idées

4

C'est ainsi que je traite une simple feuille de contact à l'aide d'AWS EC2, depuis mon Mac.

Étape # 1: créer une instance EC2 sur Amazon Web Services

J'ai utilisé:

Amazon Linux AMI 2015.03.1 (HVM), SSD Volume Type - ami-0d4cfd66
t2.medium

Étape # 2: configurer l'instance

Tout cela est exécuté à partir de mon Mac pour plus de commodité, mais vous pouvez également exécuter uniquement les commandes "sudu su ..." à partir de la ligne de commande EC2.

ssh -i "/local/path/to/key/your_ec2_key.pem" ec2-user@11.22.33.44 "sudo su root; curl -O http://ffmpeg.gusari.org/static/64bit/ffmpeg.static.64bit.latest.tar.gz"
ssh -i "/local/path/to/key/your_ec2_key.pem" ec2-user@11.22.33.44 "sudo su root; gunzip ffmpeg.static.64bit.latest.tar.gz"
ssh -i "/local/path/to/key/your_ec2_key.pem" ec2-user@11.22.33.44 "sudo su root; tar -xf ffmpeg.static.64bit.latest.tar"

Remplacer 11.22.33.44 par votre IP EC2.

Étape # 3: Traitez une vidéo

Envoyez la vidéo:

rsync -Pav -e 'ssh -i /local/path/to/key/your_ec2_key.pem pem' /Users/mdouma/Desktop/myVideo.mov ec2-user@11.22.33.44:/home/ec2-user/

Transformez-le en une planche contact:

ssh -i "/local/path/to/key/your_ec2_key.pem" ec2-user@11.22.33.44 "rm -f out.png ; ./ffmpeg -ss 00:00:00 -i myVideo.mov -vf 'select=not(mod(n\,1)),scale=113:111,crop=111:111,tile=18x36' out.png"

Remplacez / Users / mdouma par votre racine locale Modifiez le ", 1" en un autre nombre, par exemple ", 7", si vous ne voulez que toutes les 7 images. Changez 111 à la taille que vous voulez

Copiez-le sur mon mac:

rsync -Pav -e 'ssh -i /local/path/to/key/your_ec2_key.pem'  ec2-user@11.22.33.44:/home/ec2-user/out.png  /Users/mdouma/Desktop/out.png
open /Users/mdouma/Desktop/out.png

Ceci est un excellent conseil. Notez bien que sudo suc'est sans but.
Ken Sharp

2
Pourquoi envoyez-vous cela à ec2? Pourquoi ne pas simplement l'exécuter localement sur votre Mac? les fichiers vidéo peuvent être volumineux en GB ...
vérifié

4

Cet outil m'a aidé (2019-02) - et il est maintenu. Nombreuses options - grille, qualité, polices, couleurs, bordure, intervalle, ...

https://github.com/amietn/vcsi

Créez des fiches de contact vidéo. Une planche contact vidéo est une image composée de vignettes de capture vidéo disposées sur une grille.

Vous n'avez besoin que de ffmpeg et de python.


C'est très bien - merci!
Ash


1

Totem - le lecteur vidéo par défaut pour 14.04 et certaines versions antérieures d'Ubuntu - a une option de menu avec des options simples (sous le menu Edition, "Créer une galerie de captures d'écran ..."). Il y a aussi un équivalent en ligne de commande (ish) appelé "totem-video-thumbnailer" qui a une page de manuel qui vous indique comment l'utiliser; J'ai écrit un script bash simple qui utilise la sortie de la commande find (en prenant soin de ne pas séparer les fichiers avec des espaces dans les noms) pour générer automatiquement une galerie de vignettes de vignettes (ou planche-contact comme également mentionné ci-dessus) pour tous les fichiers au-dessus d'un certain taille dans un répertoire qui n'en avait pas déjà un.

Je pourrais le télécharger sur mon github sous ~ jgbreezer si quelqu'un voulait le chasser. Bien que les solutions utilisant ffmpeg et d'autres choses puissent être plus flexibles et fiables; Je semble obtenir des sorties d'erreur de la commande totem pour ne pas trouver certaines images, mais cela semble fonctionner de toute façon la plupart du temps.


0

Je voulais la même chose et googler a fini par utiliser ffmpeg et imagemagick. PAS IMHO "rapide". Puis trouvé un script bash nommé SlickSlice (dernière mise à jour 2008 mais fonctionnant parfaitement depuis hier). Je l'ai installé et personnalisé à mon goût à l'aide du fichier de configuration et du script lui-même. Le script utilise d'ailleurs ImageMagick et MPlayer.

J'ai fait un mode d'emploi détaillé et une personnalisation après l'avoir utilisé avec succès. Une fois installé avec succès, vous pouvez générer une miniature de chronologie vidéo avec une commande aussi simple que:
slickslice -x "InputFile.mp4"(par défaut 4 colonnes x 15 lignes) ou
slickslice -x "InputFile.mp4" -S 6x10(pour 6 colonnes x 10 lignes).

Il sort en tant que SLICKSLICED_InputFile.mp4.jpeget je l'ai personnalisé pour le produire InputFile.mp4-screen.jpegen modifiant le script bash lui-même.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.