|

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

  • Blog mis à jour : VPS plus puissant en service !

    Vous avez du remarquer quelques plantages du blog depuis hier, liés à une base MySQL qui saturait très rapidement… Rapide analyse des données : les 512 Mo du serveur ne suffisaient pas pour assumer la montée en puissance liée à l’ouverture publique de Blogwifi.fr. La gourmandise de MySQL n’a elle non plus pas aidé à stabiliser tout ce petit monde : il a fallu réduire les prétentions du service en mettant à jour sa configuration. Résultat des courses, une évolution…

  • ESP8266 : quelle platine ?

    Je joue depuis plusieurs jours avec des platines ESP8266 et j’en découvre toujours plus chaque jour. Le soucis maintenant est de choisir LA platine parfaitement adaptée à mon application : fonctionner comme détecteur d’ouverture, reliée au réseau WiFi d’une box, et transmettant des trames UPD pour signaler les évènements. Je vais donc revenir sur plusieurs modèles qui me semblent intéressants : ESP-01 : La plus accessible des platines avec son gros connecteur et son antenne WiFi intégrée. Elle dispose de…

  • Mise à jour & stats

    Le blog vient de passer sous WordPress 3.3 ce matin, sans soucis particuliers, du moins à priori. Si vous constatez des bizarreries, n’hésitez pas à déposer un commentaire, nous regarderons cela de plus près. L’occasion de vous présenter en quelques lignes les statistiques mensuelles, avec 16 230 visiteurs depuis le mois écoulé, soit un peu plus de 540 visites journalières. C’est faible comparé à de gros blogs déjà bien implantés, mais bien au delà de nos prévisions pour un blog qui…

  • |

    Bouton Amazon Dash : premiers essais

    Comme sans doute nombre de membres d’Amazon, j’ai reçu hier deux boutons Amazon Dash, ces boutons qui permettent de commander un produit spécifique d’un simple appui. Je passe sur la procédure d’installation, les différentes marques, tout a déjà été dit et re-dit dans de nombreux blogs ici et là sur la toile mondiale. Non, ce qui m’intéresse plus, et en même temps m’effraie, c’est l’habilité avec laquelle Amazon entend nous fidéliser, nous consommateurs : des produits toujours identiques, un réflexe…

  • Wilov, sa balise BLE

    Jeune acteur dans le domaine des assurances voitures, Wilov fait appel à une application et à une petite balise à placer dans votre véhicule. A la fin d’un contrat, la tentation était trop forte pour aller voir ce qu’il se cache dans la p’tite boite : Vous l’aurez compris, c’est une modèle IBKS105 d’Accent Systems, une balise Bluetooth Low Energy (BLE) qui détecte votre présence à proximité. Chouette se dit le geek, on va pouvoir la recycler et la ré-utiliser……

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. Découvrez comment les données de vos commentaires sont traitées.