|

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

  • |

    F5DFN SK (màj)

    (màj 30 Oct 18h10) SK… en langage radioamateur, cela veut dire « Silent Key« , celui qui ne transmettra jamais plus. Georges Zanotto, F5DFN, nous a quitté ce WE 🙁 Durant de nombreuses années, il a été président de la Commission Nationale Relais et Balise (CNRB) du Ref Union , un responsable technique hors pair, et surtout l’un des gestionnaires de nombreux relais phonie de la région Rhône Alpes et bien au delà. Jeune radioamateur, j’avais pu voir le bonhomme en action,…

  • Statistiques du blog : les 20 000 atteints !

    Difficile d’y croire, et pourtant l’information est tombée ce matin : hier, vous avez été exactement 20 092 visiteurs mensuels à venir vous perdre ici bas !!! Nous avons franchi la barre des 20 000 visiteurs/mois donc, incroyable mais vrai, avec une progression de vos commentaires. Même notre page Facebook semble décoller, pas tant grace au nombre d’abonnés, mais grace au nombre de visites fournies par les statistiques Facebook, et le compte Twitter génère des réactions et des échanges réguliers….

  • Webcampak : une idée germe…

    Webcampak avance toujours, trop lentement pour certains d’entre vous qui auraient un besoin immédiat de ce type de produit, mais nous avons fait le choix de prendre le temps, le temps de développer, le temps de laisser pousser l’idée, de tester. Et en parlant de pousser, voici une vidéo HD sur une utilisation potentielle de Webcampak. Je vous conseille de la visualiser en HD si possible, et en plein écran, histoire de vous faire une idée précise de la résolution…

  • |

    KA-SAT : les contrats se signent, le débit arrive

    KA-SAT, nous en avions déjà parlé dans un précédent billet, un brin sceptique je dois bien l’avouer. Seulement voilà, les opérateurs sont en train de signer les contrats avec Eutelsat, l’opérateur de ce satellite qui devrait pouvoir délivrer jusqu’à 10 Mbps descendants, « jusqu’à », une limite haute donc, attendons de voir si elle sera atteignable en journée, vu le nombre d’utilisateurs potentiellement accessibles avec ce satellite… Les offres commerciales n’ont pas tardé à fleurir, avec par exemple des offres ILLIMITEES :…

  • | |

    Un routeur 4G extérieur étanche, illimité

    Revenons un peu sur les essais d’un routeur 4G modifié pour être installé dans un boîtier étanche, et relié à des antennes à gain. Profitons du ciel bleu breton et installons notre matériel en extérieur, au bout de 6 m de mât TV emboitable : Nous avons un peu amélioré les fixations, de façon à relier nos antennes côte à côte et à rigidifier l’ensemble. Les sorties coaxiales sont protégées par un ruban auto-vulcanisant, adapté pour résister aux conditions météo…

  • Avant internet, le packet-radio

    Bien avant le très haut débit, bien avant cette 3G qui nous est devenue totalement indispensable, était le packet-radio, un mode de transmission dérivé du X25, baptisé alors AX25 (A comme Amateur). Plusieurs systèmes reliaient alors les différentes régions entre elles, permettant l’acheminement de messages sur des serveurs spécialisés (BBS, Bulletin Board System), acheminant des informations DX (« F6NUL est sur l’ile tataouine sur 14.137 MHz ») et permettant aux radioamateurs connectés de discuter en temps pratiquement réel. C’était à une époque…

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.