Manchmal will man alle mp4 Videos nach gif auf dem Raspberry Pi (oder Linux) umwandeln. Das hatte ich für eine Datei schon mal im letzten Jahr gemacht. Das Script habe ich erweitert, um alle Dateien umzuwandlen für die es noch keine gif Datei gibt.
Die erzeugte Palette lösche ich dann auch gleich wieder und füge auch ein paar Metainfos ein.
Das mp4togifs.sh Programm kann dann so aufgerufen werden um alle mp4 Dateien im aktuellen Verzeichnis nach gif umzuwandeln:
./mp4togifs.sh .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
#!/bin/bash # Script zum Umwandeln von allen *.mp4 Dateien aus einem Verzeichnis nach *.gif. # Wenn es schon eine *.gif mit dem Namen der *.mp4 gibt wird die Datei nicht nochmal erzeugt. # Kann für transformation von erzeugten Blender mp4 nach gif verwendet werden. # # Aufruf: ./mp4togifs.sh VERZEICHNIS # z.B. um alle im lokalen Verzeichnis umzuwandeln: ./mp4togifs.sh . # # Thomas Wenzlaff (c) 2024 #!/bin/bash # Überprüfen, ob ffmpeg installiert ist if ! command -v ffmpeg &> /dev/null; then echo "ffmpeg ist nicht installiert. Bitte installiere ffmpeg, um das Skript auszuführen." exit 1 fi # Überprüfen, ob ein Verzeichnis als Argument übergeben wurde if [ -z "$1" ]; then echo "Bitte ein Verzeichnis angeben." exit 1 fi # Verzeichnis setzen directory="$1" # Name der Pallete für jede Datei palette="$directory/palette.png" # Überprüfen, ob das angegebene Argument ein Verzeichnis ist if [ ! -d "$directory" ]; then echo "Das angegebene Argument ist kein Verzeichnis." exit 1 fi # Alle mp4 Dateien im Verzeichnis durchsuchen find "$directory" -type f -name "*.mp4" | while read -r mp4_file; do # Entferne die .mp4 Erweiterung base_name="${mp4_file%.mp4}" # Prüfen ob es eine entsprechende .gif Datei gibt if [ ! -f "${base_name}.gif" ]; then echo "OK: Keine .gif Datei für: ${mp4_file} vorhanden, erzeuge nun die $base_name.gif ..." # erzeugen einer Palette ffmpeg -nostdin -i "$mp4_file" -vf fps=30,scale=512:-1:flags=lanczos,palettegen "$palette" # umwandlung mit der pallete ffmpeg -nostdin -i "$mp4_file" -i "$palette" -filter_complex "fps=30,scale=512:-1:flags=lanczos[x];[x][1:v]paletteuse" -metadata artist="Thomas Wenzlaff" -metadata copyright="Copyright 2024 (c) by Thomas Wenzlaff wenzlaff.de" -metadata title="Art by Kleinhirn.eu" "$base_name.gif" echo "OK: Umwandlung von ${mp4_file} nach $base_name.gif erfolgreich" if [ -f "$palette" ]; then rm -f "$palette" fi fi done |
Oder auch Download hier.