#1 Le 06/11/2015, à 02:09
- Kariboux
[Script] Génération de thumbs vidéos / crop /
Bonjour la communauté
Je cherche une personne maîtrisant l'automatisation sur ubuntu et qui pourrait me faire un script pour :
1) Générer X thumbs / vidéos (mp4/flv/etc) de chaque vidéos contenues dans un dossier spécifique et ses sous dossiers
Dossier source > Video :
- titre_video.mp4 (ou autre format)
- /dossier/titre_video.mp4 (ou autre format)
- /dossier/sous-dossier/titre_video.mp4 (ou autre format)
- etc
2) Que les images générées soient dans un format précis (ex:300/169) et les cropper sans les déformer si la taille diffère. Jouer sur la qualité, voir ajouter de la netteté.
3) Les enregistrer dans un dossier image :
Destination des images > Dossier au choix > Thumbs
- /nom_du_fichier_video_sans_extension/01.jpg
- /nom_du_fichier_video_sans_extension/02.jpg
- etc...
Petite rémunération pour celui qui pourra me gérer ça
PS: Je précise qu'il faudra me babysitter de A à Z etant novice sur linux
Merci d'éviter le sujet de rémunération, ça n'est pas dans l'esprit de la communauté.
Cordialement,
ljere
Dernière modification par ljere (Le 13/11/2015, à 13:44)
Hors ligne
#2 Le 06/11/2015, à 06:08
- Compte anonymisé
Re : [Script] Génération de thumbs vidéos / crop /
Bonjour,
je propose ce script :
#!/bin/bash
source="/dossier source"
destination="/dossier/Thumbs"
X=10
for a in $(find -type f $source)
do b=$(basename "$a")
file --mime-type "$a"|grep video&&mplayer -frames $X -vo jpeg:outdir="$destination" -vf dsize=300:-2,crop=300:169,unsharp=l:1.5 "$a" && rename 's:000000:'${b%.*}':' "$destination"/*
done
remarques :
pas de slash ou anti-slash dans les noms de fichier.
je savais pas si tu voulais les X premières images ou X images aléatoires, ce script fait les premières images.
Pour le babysiting :
1 Tu appuyes sur CTRL-ALT-T pour démarrer un terminal
2 tu écrit
gedit script.sh
3 tu colles le script
4 tu modifies les lignes source="/dossier source" et destination="/dossier/Thumbs" en mettant les dossiers correspondant, en gardant les guillemets mais sans le dernier slash
5 tu modifies le X=10 par le nombres d'images
6 tu enregistres et tu fermes gedit
7 tu rends executable en écrivant
chmod +x script.sh
8 tu t'assures que mplayer est installé avec
sudo apt-get install mplayer
9 tu lance script avec
./script.sh
10 tu croises les doigts
PS : pas de rénumération
Dernière modification par Compte anonymisé (Le 06/11/2015, à 06:13)
#3 Le 06/11/2015, à 09:34
- Postmortem
Re : [Script] Génération de thumbs vidéos / crop /
Salut,
pas de slash ou anti-slash dans les noms de fichier.
Pas d'espaces ou de retour à la ligne non plus avec ta méthode.
Pour boucler sur les fichiers trouvés par "find" de manière sûre :
while read -rd '' a
do
Ici on utilise "$a" entre guillemets
done < <(find repertoire -type f -print0)
Et il manque des guillemets autour de certaines variables.
Sinon, merci pour la commande mplayer !
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#4 Le 06/11/2015, à 11:04
- Kariboux
Re : [Script] Génération de thumbs vidéos / crop /
Re,
Merci pour l'aide, je viens de tester et voilà ce qui arrive :
Le script de la premiere reponse :
#!/bin/bash
source="/home/zbla/Téléchargements"
destination="/home/zbla/Images"
X=10
for a in $(find -type f $source)
do b=$(basename "$a")
file --mime-type "$a"|grep video&&mplayer -frames $X -vo jpeg:outdir="$destination" -vf dsize=300:-2,crop=300:169,unsharp=l:1.5 "$a" && rename 's:000000:'${b%.*}':' "$destination"/*
done
Je l’exécute : sh ~/Bureau/script.sh
find: les chemins doivent précéder l'expression : /home/zbla/Téléchargements
Utilisation : find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [chemin...] [expression]
remarques :
pas de slash ou anti-slash dans les noms de fichier.
je savais pas si tu voulais les X premières images ou X images aléatoires, ce script fait les premières images.
- Les noms des fichiers vidéos .mp4 & co peuvent avoir toutes sortes de caractères dedans (tous ceux autorisés dans un nom de fichier)
- J'aimerais X images qui couvrent l’intégralité de la video
Dernière modification par Kariboux (Le 06/11/2015, à 11:09)
Hors ligne
#5 Le 06/11/2015, à 11:28
- Compte anonymisé
Re : [Script] Génération de thumbs vidéos / crop /
#!/bin/bash
source="/home/zbla/Téléchargements"
destination="/home/zbla/Images"
for a in $(find "$source" -type f)
do
b=$(basename "$a")
file -b --mime-type "$a"|grep video&&mkdir "$destination/${b%.*}"&&mplayer -vo jpeg:outdir="$destination/${b%.*}" -vf dsize=300:-2,crop=300:169,unsharp=l:1.5 "$a"
done
au temps pour moi j'avais inversé les paramètres dans le find.
d'aileurs pour le répertoire de destination ça doit faire :
/home/zbla/Images/nomvidéo1/0001.jpg ?
du coup j'ai modifié car j'avais compris différemment
Merci Postmortem pour les corrections !
Dernière modification par Compte anonymisé (Le 06/11/2015, à 11:42)
#6 Le 06/11/2015, à 11:41
- Kariboux
Re : [Script] Génération de thumbs vidéos / crop /
Ouch ca marche mais j'ai des tonnes d'images... Comment on stop ? Mon VPS prend feu
Dernière modification par Kariboux (Le 06/11/2015, à 11:42)
Hors ligne
#7 Le 06/11/2015, à 11:42
- Compte anonymisé
Re : [Script] Génération de thumbs vidéos / crop /
ctrl C pour stopper
#8 Le 06/11/2015, à 11:47
- Compte anonymisé
Re : [Script] Génération de thumbs vidéos / crop /
si ta vidéo fait 25 images/secondes et qu'elle dure 1 heure ça te fera 90000 images
on peut sauter des images aussi si il faut avec l'option --sstep <sec>
pour une image toutes les secondes rajoute --sstep 1 juste après mplayer
#9 Le 06/11/2015, à 11:50
- Kariboux
Re : [Script] Génération de thumbs vidéos / crop /
Pas moyen de faire 30 images par vidéo dans tous les cas ?
Rien à voir avec ton script mais j'avais essayé ça qui ne marche pas pour des raisons obscures mais qui peut donner une piste pour le nombre d'images :
#! /bin/bash
#--- Paramètres
videowaitdir=/home/zbla/Téléchargements/
capturedir=/home/zbla/Images/
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
Ps: Ton crop actuel dégomme l'image
Dernière modification par Kariboux (Le 06/11/2015, à 12:09)
Hors ligne
#10 Le 06/11/2015, à 13:35
- Compte anonymisé
Re : [Script] Génération de thumbs vidéos / crop /
Pas moyen de faire 30 images par vidéo dans tous les cas ?
je vois pas de moyen simple de faire avec mplayer, 30 images/sec semble être assez standard. Tes vidéos font plus que ça ? Si elle font que 24 i/s ou 25 i/s, ça sert à rien.
après examen de ton script,
il est supposé faire 10 screens par vidéos à chaque 10ième du temps de la vidéos
ce qui correspond pas à ce que tu recherches ? pas plus de solution dans ton script (qui crop pas non plus d’ailleurs)
Ps: Ton crop actuel dégomme l'image
oui il coupe dans le vif.
-vf dsize=300:-2,crop=300:169
D'abord il redimensionne la longueur en 300 et en gardant les proportions pour la hauteur
et ensuite il coupe pour que ça corresponde au format souhaite soit 300x169.
chez moi ça avait l'air de marcher après il peut réagir différemment en fonction des résolutions d'origine.
#11 Le 06/11/2015, à 14:17
- Kariboux
Re : [Script] Génération de thumbs vidéos / crop /
Mes vidéos sont en 1920/1080 soit full HD et le temps va de 12 à 120 minutes
Hors ligne