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.

étudiant
la source

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
utopiabound
la source
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!)

Code Falasi
la source
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.

Camilo Martin
la source
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

Maxim Kruglov
la source
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" [email protected] "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" [email protected] "sudo su root; gunzip ffmpeg.static.64bit.latest.tar.gz"
ssh -i "/local/path/to/key/your_ec2_key.pem" [email protected] "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 [email protected]:/home/ec2-user/

Transformez-le en une planche contact:

ssh -i "/local/path/to/key/your_ec2_key.pem" [email protected] "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'  [email protected]:/home/ec2-user/out.png  /Users/mdouma/Desktop/out.png
open /Users/mdouma/Desktop/out.png
Quelques idées
la source
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.

hrvoj3e
la source
C'est très bien - merci!
Ash
1

Le paquet 'imagemagick' a des utilitaires pour des trucs comme ça.

http://www.imagemagick.org/Usage/thumbnails/

Il existe également des bibliothèques d'API utilisant imagemajick pour un tas de langues .

boucle d'or
la source
Quelle serait la commande correspondante?
étudiant
convertest probablement le plus général. Regardez la section intitulée Création générale de vignettes sur la première page à laquelle j'ai lié.
goldilocks
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.

Breezer
la source
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.

Saidul Hassan
la source