Tag : Vidéos
Créer des miniatures de vidéos à la volée
Pour un projet qui devrait voir le jour dans les prochaines semaines / mois j'ai eu besoin de réaliser un script permettant de générer des vidéos à la volée.
J'ai donc travaillé sur un script qui est assez simple au final. Pour l'utiliser vous devez disposer de ffmpeg sur votre serveur.
Pour l'installer lancez simplement la commande suivante :
apt-get update apt-get install ffmpeg
Et voici le script, nommez la captures.sh par exemple :
#! /bin/bash #--- Paramètres videowaitdir=/home/www/videos/ capturedir=/home/www/videos/screens/ numberscreens=10 #--- Traitement des vidéos for video in `ls $videowaitdir`; do if [ -f $videowaitdir$video ]; then duration=`ffmpeg -i $videowaitdir$video 2>&1 | grep "Duration:" | awk '{print $2}' | tr -d , | cut -d . -f 1` if [ -z "$duration" ] || [ "$duration" = "00:00:00" ] then continue fi h=`echo $duration | cut -d : -f 1` m=`echo $duration | cut -d : -f 2` s=`echo $duration | cut -d : -f 3` totaltime=$(($h+$m+$s)) time=$(($totaltime/$numberscreens)) for((i=0;i<=$numberscreens;i++)) do t=$(($time*$i+$time)) ffmpeg -y -i $videowaitdir$video -f mjpeg -ss $t -vframes 1 -s 640x480 -an $capturedir$video.$i.jpg done fi done
Modifiez simplement les deux premières variables qui sont :
videowaitdir : répertoire des vidéos
capturedir : répertoire des miniatures
Vous avez aussi une variable numberscreens qui détermine le nombre de screens à faire de la vidéo.
N'oubliez pas de modifier les permissions pour exécuter le bash :
chmod +x captures.sh
Le script est assez simple à comprendre, on liste les vidéos du dossier, on utilise ffmpeg pour récupérer le temps de la vidéo et on détermine à quels moments on doit faire les screens.
N'hésitez pas si vous avez des suggestions.