|

Générer une vidéo simple à partir d’images

Parfois il est utile de pouvoir regrouper des images sous forme d’une vidéo MP4 toute simple, juste pour faire un diaporama. Vous allez me dire, Google Photo le fait, oui MAIS ce truc a la mauvaise idée de recadrer, et donc de zapper la moitié de vos captures d’écran par exemple, pas génial donc.

Voici le script generevideo.sh qui va tout solutionner :

#!/bin/sh

# 1. Configuration du nom de sortie
printf "Nom de la vidéo (par défaut 'video.mp4') : "
read input_name
if [ -z "$input_name" ]; then
    OUTPUT="video.mp4"
else
    # On ajoute .mp4 si l'utilisateur l'a oublié
    case "$input_name" in
        *.mp4) OUTPUT="$input_name" ;;
        *)     OUTPUT="$input_name.mp4" ;;
    esac
fi

TEMP_LIST="list_clips.txt"
DUR=3
printf "" > "$TEMP_LIST"

# 2. Découverte et choix du fichier audio
echo "Recherche de fichiers audio..."
i=1
AUDIO_FILES=$(ls *.mp3 2>/dev/null)

if [ -z "$AUDIO_FILES" ]; then
    echo "Aucun fichier .mp3 trouvé dans le dossier."
    AUDIO_INPUT=""
else
    echo "Choisissez la musique (tapez le numéro ou Entrée pour aucune) :"
    for f in $AUDIO_FILES; do
        echo "$i) $f"
        i=$((i + 1))
    done

    printf "Votre choix : "
    read choix

    if [ -n "$choix" ]; then
        AUDIO_INPUT=$(echo "$AUDIO_FILES" | sed -n "${choix}p")
    fi
fi

if [ -n "$AUDIO_INPUT" ]; then
    echo "Musique sélectionnée : $AUDIO_INPUT"
else
    echo "Aucune musique sélectionnée."
fi

# 3. Création de clips individuels (respect total de la taille d'origine)
images=$(ls tmm* 2>/dev/null | sort -V)

for f in $images; do
    if ffmpeg -v error -i "$f" -f null - 2>/dev/null; then
        echo "Traitement de $f..."
        # On force l'arrondi à 2px (parité obligatoire) sans changer la taille réelle
        ffmpeg -y -loop 1 -i "$f" -t "$DUR" \
            -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2:(ow-iw)/2:(oh-ih)/2:black,format=yuv420p" \
            -c:v libx264 -pix_fmt yuv420p -r 25 "part_$f.ts"
        
        echo "file 'part_$f.ts'" >> "$TEMP_LIST"
    fi
done

# 4. Assemblage final
if [ -s "$TEMP_LIST" ]; then
    echo "Fusion finale vers $OUTPUT..."
    if [ -n "$AUDIO_INPUT" ] && [ -f "$AUDIO_INPUT" ]; then
        ffmpeg -y -f concat -safe 0 -i "$TEMP_LIST" -i "$AUDIO_INPUT" \
            -c copy -c:a aac -shortest "$OUTPUT"
    else
        ffmpeg -y -f concat -safe 0 -i "$TEMP_LIST" -c copy "$OUTPUT"
    fi
else
    echo "Erreur : Aucun fichier valide n'a été traité."
    exit 1
fi

# 5. Nettoyage et rapport
rm -f part_tmm* "$TEMP_LIST"
echo "------------------------------"
echo "Fichiers images utilisés :"
echo "$images"
echo "------------------------------"
if [ -n "$AUDIO_INPUT" ]; then
    echo "Audio utilisé : $AUDIO_INPUT"
fi
echo "Vidéo générée : $OUTPUT"
echo "vidéo terminée"

Chaque image s’affichera durant 3 secondes, mais tu peux sans soucis régler ce temps à volonté depuis le script. Tu peux même ajouter un fichier audio au format mp3, le script demandera quel fichier utiliser.
Place le script dans le répertoire de tes images, lance le script avec bash generevideo.sh . Il va demander le nom de la video (video.mp4) par défaut, et le fichier audio à choisir s’il existe.

Vous obtiendrez un list.txt qui listera les images détectées, pratique pour vérifier si besoin.
Ce script a été initialement généré par Gemini, puis modifié.

Publications similaires

  • Avant le WiFi : RMNC/FlexNet

    Continuons la plongée dans la préhistoire, bien avant le WiFi, à l’époque du packet-radio. En Allemagne et dans les régions techniquement évoluées de notre beau pays (je vais me faire des amis là…;-) ), le système RMNC/FlexNet était utilisé. Il se composait d’un fond de panier muni de plusieurs connecteurs : d’une carte de contrôle, chargée de la gestion du système :

  • Stick n Find : le radar Bluetooth 4.0

    Qui n’a pas un jour rêvé de pouvoir retrouver ses clés rapidement sans renverser toute la maison ? Qui n’a jamais eu envie de pouvoir garder un oeil discret sur son animal de compagnie, sur son enfant en train de jouer ? C’est désormais possible avec les étiquettes de Stick n Find ! L’application va par exemple vous permettre de créer une laisse virtuelle avec votre animal, générant une alarme s’il s’éloigne hors de portée : Le fonctionnement est simple…

  • |

    MacOS, mise à jour sans greenwashing

    Vous utilisez Apple et vous appréciez l’ergonomie de leurs produits ? Nous aussi ! Seulement voilà, les discours tenus par Tim Cook lors des Keynotes nous sortent désormais par tous les trous, et c’est peu dire : ras le bol des « amaaaaaazing » et autres « greaaaaaat » à longueur de présentation, ras le bol de leur greenwashing avec des produits qui ne dureront pas des années, juste pour que votre expérience utilisateur ne soit pas trop dégradée. Récemment, c’est sur un iMac…

  • |

    EdgePoint : le noeud pour vos backbones WiFi ?

    Ubiquiti continue d’innover, avec cette fois l’annonce de l’EdgePoint, un module sur lequel vous allez venir brancher votre arrivée fibre et alimenter jusqu’à 16 modules WiFi en POE 54 ou 24V, selon vos besoins ! Alors oui, plus besoin de faire descendre 4 câbles ethernet sur votre installation, à la place vous allez faire monter une fibre et un seul câble POE pour alimenter tout ce petit monde. Bonne idée ? Oui et non, mais avec une tendance au non…

  • Domoticz : relais KS0212

    La petite carte 4 relais dont nous avons parlé dans le précédent billet s’interface fort bien avec Domoticz. Il vous faudra par contre éditer /etc/init.d/domoticz.sh et ajouter : # Configuration GPIO/usr/bin/gpio export 4 out/usr/bin/gpio export 22 out/usr/bin/gpio export 6 out/usr/bin/gpio export 26 out/usr/bin gpio exports puis redémarrer le Raspberry Pi. Le premier relai sera sur le GPiO 4, le second 22, puis 6, et finalement 26. Dans Setup, Hardware, créez un GPIO comme suit : Vous allez alors pouvoir créer…

  • |

    Bouygues ne sera pas racheté

    Cela semble officiel désormais, Bouygues Telecom ne sera pas racheté, l’opération a capoté ce WE. Les détails ? Je vous laisserai aller consulter les différents médias bien informés, les publications ne vont pas manquer j’imagine. Juste quelques réflexions basiques ceci dit : je suis heureux, moi client Bouygues Telecom, de ne pas me faire migrer de force chez un « sévisse clients » tel celui de SFR, devenu en dessous de tout après le rachat par Drahi le Panaméen, je suis content…

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.