Il existe de nombreux tutoriels et trucs montrant comment extraire plusieurs captures d'écran d'une vidéo en utilisant ffmpeg. Vous définissez -r et vous pouvez même commencer un certain montant dans.
Mais je veux juste une capture d’écran à, disons 01:23:45 en. Ou une capture d’écran à 86% en.
Tout cela est possible avec ffmpegthumbnailer mais c'est une autre dépendance sur laquelle je ne veux pas dépendre. Je veux pouvoir le faire avec ffmpeg.
Utilisez le -ss
option:
ffmpeg -ss 01:23:45 -i input -vframes 1 -q:v 2 output.jpg
Pour la sortie JPEG, utilisez -q:v
pour contrôler la qualité de la sortie. La plage complète est une échelle linéaire de 1 à 31 où une valeur inférieure donne une qualité supérieure. 2-5 est une bonne plage à essayer.
Le sélectionner le filtre fournit une méthode alternative pour des besoins plus complexes, tels que la sélection de certains types de trame uniquement, ou 1 pour 100, etc.
Placement -ss
avant que l'entrée soit plus rapide. Voir FFmpeg Wiki: Seeking et cet extrait de la documentation ffmpeg
cli :
-ss
position (entrée/sortie)Lorsqu'il est utilisé comme option de saisie (avant
-i
), cherche dans ce fichier d’entrée à se positionner. Notez que dans la plupart des formats, il n’est pas possible de chercher exactement, doncffmpeg
cherchera le point de recherche le plus proche avant la position. Lors du transcodage et-accurate_seek
est activé (par défaut), ce segment supplémentaire entre le point de recherche et la position sera décodé et ignoré. Lors de la copie en flux ou lorsque-noaccurate_seek
est utilisé, il sera conservé.Lorsqu'elle est utilisée comme option de sortie (avant un nom de fichier de sortie), décode mais ignore l'entrée jusqu'à ce que les horodatages atteignent la position.
la position peut être en secondes ou en
hh:mm:ss[.xxx]
forme.
FFMpeg peut le faire en recherchant l’horodatage donné et en extrayant exactement une image sous forme d’image, voir par exemple:
ffmpeg -i input_file.mp4 -ss 01:23:45 -vframes 1 output.jpg
Expliquons les options:
-i input file the path to the input file
-ss 01:23:45 seek the position to the specified timestamp
-vframes 1 only handle one video frame
output.jpg output filename, should have a well-known extension
Le paramètre -ss
Accepte une valeur sous la forme HH:MM:SS[.xxx]
Ou sous forme de nombre en secondes. Si vous avez besoin d'un pourcentage, vous devez au préalable calculer la durée de la vidéo.