12 votes

Créer une miniature à partir d'une vidéo

Comment puis-je faire une simple capture à partir d'une vidéo. De préférence à partir de la ligne de commande ?

Idée : prendre 9 instantanés pour 9 moments placés de manière égale (sur la ligne de temps), et les sauvegarder en tant que JPG.

Exemple :

Movie length = 10 min
T1= snapshot of 1 min
T2= snapshot of 2 min
......
T9= snapshot of 9 min
   |   |
 T1| T2| T3
---+---+---
 T4| T5| T6
---+---+---
 T7| T8| T9
   |   |

Quel est le meilleur programme pour faire cela ? Existe-t-il des logiciels libres ?

5voto

Cristian Sitov Points 71

ffmpeg est un excellent outil open source pour la manipulation de vidéos, y compris l'extraction d'images.

Pour extraire une seule image à partir d'un horodatage spécifique, vous pouvez utiliser la commande suivante

ffmpeg -i video.avi -r 1  -t 00:01:00 -f image2 image%05d.png

-r est le taux de rafraîchissement. Vous pouvez également utiliser une commande comme

ffmpeg -i video.avi -r 1/1440 -f image2 image%05d.png

pour obtenir une image toutes les minutes (en supposant une vidéo à 24FPS). Le %05d signifie que le numéro ordinal de chaque vignette doit être formaté en utilisant 5 chiffres.

Si vous voulez combiner des images sous forme de montage (votre grille), vous pouvez utiliser imagemagick après avoir extrait les images à l'aide de ffmpeg.

2voto

Yogesh Dhamija Points 53

Ce n'est pas un programme en ligne de commande, mais vous pouvez aussi utiliser qframecatcher .

Pour ubuntu/debian, les exigences sont les suivantes : sudo apt-get install libqt4-dev libxine-dev build-essential

wget http://download.berlios.de/qframecatcher/qframecatcher-0.4.1.tar.gz
tar xzf qframecatcher-0.4.1.tar.gz
cd qframecatcher/src
qmake
make
./qframecatcher

Source : http://blog.radevic.com/2008/06/how-to-create-movie-or-video-frame.html

1voto

zx228 Points 11

vcsi est un outil de ligne de commande écrit en Python qui peut être utilisé pour créer une grille 3 par 3 d'instantanés avec la commande suivante :

vcsi -g 3x3 video.mkv -o output.jpg

0voto

Camilo Martin Points 2476

Mon cas d'utilisation est juste une vignette d'une vidéo, juste un seul fichier à utiliser comme un fichier de référence. <video> tag poster. Alors, quel serait le moyen le plus rapide de le faire ?

Avec ffmpeg vous pouvez le faire :

ffmpeg -ss 123 -y -i video.mp4 -r 1 -updatefirst 1 -frames 1 poster.jpg

Cela vous donnera le cadre près de la seconde 123 de la video.mp4 enregistré comme poster.jpg .

Le problème, comme vous pouvez le voir, est que nous devons savoir quelle seconde est la bonne.

Afin de garder nos dépendances basses, nous utiliserons ffmpeg lui-même pour cela :

# Get the time as h:m:s (non-padded)
l=$(ffmpeg -i video.mp4 2>&1 | grep Duration: | sed -r 's/\..*//;s/.*: //;s/0([0-9])/\1/g')
# Convert that into seconds
s=$((($(cut -f1 -d: <<< $l) * 60 + $(cut -f2 -d: <<< $l)) * 60 + $(cut -f3 -d: <<< $l)))
# Get frame at 25% as the thumbnail
ffmpeg -ss $((s / 4)) -y -i video.mp4 -r 1 -updatefirst 1 -frames 1 poster.jpg

25% de la vidéo semble être un choix courant, mais vous pouvez également opter pour 33% ou 50%.

Voici un script qui fait cela .

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