{"id":21947,"date":"2024-10-01T02:23:00","date_gmt":"2024-10-01T00:23:00","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=21947"},"modified":"2024-10-04T09:30:33","modified_gmt":"2024-10-04T07:30:33","slug":"alle-mp4s-in-einem-verzeichnis-nach-gifs-umwandeln","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=21947","title":{"rendered":"Alle mp4&#8217;s in einem Verzeichnis nach gif&#8217;s umwandeln"},"content":{"rendered":"<p>Manchmal will man alle mp4 Videos nach gif auf dem Raspberry Pi (oder Linux) umwandeln. Das hatte ich f\u00fcr <a href=\"http:\/\/blog.wenzlaff.de\/?p=20649\" rel=\"noopener\" target=\"_blank\">eine Datei<\/a> schon mal im letzten Jahr gemacht. Das Script habe ich erweitert, um alle Dateien umzuwandlen f\u00fcr die es noch keine gif Datei gibt. <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/09\/mp4-to-gif.gif\" alt=\"\" width=\"512\" height=\"288\" class=\"aligncenter size-full wp-image-21950\" \/><\/p>\n<p><!--more--><\/p>\n<p>Die erzeugte Palette l\u00f6sche ich dann auch gleich wieder und f\u00fcge auch ein paar Metainfos ein.<\/p>\n<p>Das <strong>mp4togifs.sh<\/strong> Programm kann dann so aufgerufen werden um alle mp4 Dateien im aktuellen Verzeichnis nach gif umzuwandeln:<\/p>\n<p><strong>.\/mp4togifs.sh .<\/strong><\/p>\n<pre class=\"theme:dark-terminal font:monospace lang:sh decode:true \" >\r\n\r\n#!\/bin\/bash\r\n\r\n# Script zum Umwandeln von allen *.mp4 Dateien aus einem Verzeichnis nach *.gif.\r\n# Wenn es schon eine *.gif mit dem Namen der *.mp4 gibt wird die Datei nicht nochmal erzeugt.\r\n# Kann f\u00fcr transformation von erzeugten Blender mp4 nach gif verwendet werden.\r\n# \r\n# Aufruf: .\/mp4togifs.sh VERZEICHNIS \r\n# z.B. um alle im lokalen Verzeichnis umzuwandeln:  .\/mp4togifs.sh .\r\n#\r\n# Thomas Wenzlaff (c) 2024\r\n\r\n#!\/bin\/bash\r\n\r\n# \u00dcberpr\u00fcfen, ob ffmpeg installiert ist\r\nif ! command -v ffmpeg &amp;&gt; \/dev\/null; then\r\n    echo \"ffmpeg ist nicht installiert. Bitte installiere ffmpeg, um das Skript auszuf\u00fchren.\"\r\n    exit 1\r\nfi\r\n\r\n# \u00dcberpr\u00fcfen, ob ein Verzeichnis als Argument \u00fcbergeben wurde\r\nif [ -z \"$1\" ]; then\r\n    echo \"Bitte ein Verzeichnis angeben.\"\r\n    exit 1\r\nfi\r\n\r\n# Verzeichnis setzen\r\ndirectory=\"$1\"\r\n\r\n# Name der Pallete f\u00fcr jede Datei\r\npalette=\"$directory\/palette.png\"\r\n\r\n# \u00dcberpr\u00fcfen, ob das angegebene Argument ein Verzeichnis ist\r\nif [ ! -d \"$directory\" ]; then\r\n    echo \"Das angegebene Argument ist kein Verzeichnis.\"\r\n    exit 1\r\nfi\r\n\r\n# Alle mp4 Dateien im Verzeichnis durchsuchen\r\nfind \"$directory\" -type f -name \"*.mp4\" | while read -r mp4_file; do\r\n    \r\n    # Entferne die .mp4 Erweiterung\r\n    base_name=\"${mp4_file%.mp4}\"\r\n    \r\n    # Pr\u00fcfen ob es eine entsprechende .gif Datei gibt\r\n    if [ ! -f \"${base_name}.gif\" ]; then\r\n        echo \"OK: Keine .gif Datei f\u00fcr: ${mp4_file} vorhanden, erzeuge nun die $base_name.gif ...\"\r\n        \r\n        # erzeugen einer Palette\r\n        ffmpeg -nostdin -i \"$mp4_file\" -vf fps=30,scale=512:-1:flags=lanczos,palettegen \"$palette\"\r\n\r\n        # umwandlung mit der pallete\r\n        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\"\r\n        \r\n        echo \"OK: Umwandlung von ${mp4_file} nach $base_name.gif erfolgreich\"\r\n\r\n        if [ -f \"$palette\" ]; then\r\n           rm -f \"$palette\"\r\n        fi\r\n    fi\r\ndone\r\n<\/pre>\n<p>Oder auch Download <a href=\"https:\/\/github.com\/IT-Berater\/tw-scripte\/blob\/master\/mp4togifs.sh\" rel=\"noopener\" target=\"_blank\">hier<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Manchmal will man alle mp4 Videos nach gif auf dem Raspberry Pi (oder Linux) umwandeln. Das hatte ich f\u00fcr eine Datei schon mal im letzten Jahr gemacht. Das Script habe ich erweitert, um alle Dateien umzuwandlen f\u00fcr die es noch keine gif Datei gibt.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,229,808,79,1023,3388],"tags":[315,6019,6018,550,5717,5718,1397,1396,1633,322],"class_list":["post-21947","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-imac-2","category-linux-2","category-programmierung","category-raspberry-pi","category-script","tag-bash","tag-dir","tag-ffmeg","tag-gif","tag-mp4","tag-mp4togif","tag-script","tag-sh","tag-umwandeln","tag-verzeichnis"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/21947","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=21947"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/21947\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=21947"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21947"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21947"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}