iCloud to Immich Hier beschreibe ich, wie man seine Videos, die man vielleicht aus Apples Fotos.app exportiert hat, sorgenfrei mit korrekten Metadaten wie GPS Position und HDR mit Hile von FFmpeg von .mov in .mp4 umwandeln kann. Das Umwandeln der Videos hat mich ein wenig Zeit gekostet. Erstens, weil ich erst etwas später erkannt habe, dass mein einfacher ffmpeg Befehl, nicht alle erforderlichen Exif- und Metadaten der .mov -Dateien mitkopiert hat. Exportieren aus Photos.app Das gewünschte Video oder das ganze Album auswählen und exportieren. Im Dialog die Haken bei Metadata und Ortsangaben (Location) setzen und einen Ort zum Speichern auswählen. Warten. Umwandeln der Videos von .mov zu .mp4 Mit ein wenig Hilfe der Dokumentation, fish und der KI habe ich es dann hinbekommen, dass alle Videos aus .mov zu .mp4 umgewandelt wurden, mit h.246 kodiert und die Exif- sowie Metadaten übertragen werden. Dazu wird zusätzlich zu ffmpeg noch das exiftool benötigt. Dieses hat nicht nur bei der Überprüfung sondern auch nach der Umwandlung geholfen, die korrekten Exifdaten einzutragen, bzw. zu übertragen. Das shell-Skript für macOS und Linux ( convert-videos.sh ) #!/bin/bash # 1. Backup-Ordner erstellen mkdir -p original_movs # 2. Schleife durch alle .mov Dateien (Groß-/Kleinschreibung beachten) for f in *.[mM][oO][vV]; do # Prüfen, ob Dateien existieren [ -e "$f" ] || continue filename="${f%.*}" echo -e "\n\033[0;36m>>> Verarbeite: $f\033[0m" # 3. FFmpeg Konvertierung # -map 0:v -map 0:a extrahiert nur Video und Audio (verhindert 'mebx' Fehler) # -map_metadata 0 übernimmt die globalen Tags (GPS, Modell) ffmpeg -i "$f" -map 0:v -map 0:a -map_metadata 0 -c:v libx264 -crf 23 -preset medium -c:a copy -movflags use_metadata_tags "${filename}.mp4" # 4. ExifTool Metadaten-Synchronisation # Schreibt das 2023er Datum in die MP4-Header echo -e "\033[0;33mSynchronisiere Datum für Immich...\033[0m" exiftool -overwrite_original -P "-CreateDate>> Verarbeite: $($datei.Name)" -ForegroundColor Cyan # 3. FFmpeg mit sicherem Mapping # -map 0:v (alle Videos), -map 0:a (alle Audios) # Wir lassen die inkompatiblen Datenströme (mebx) weg, nehmen aber die Tags mit ffmpeg -i $datei.Name -map 0:v -map 0:a -map_metadata 0 -c:v libx264 -crf 23 -preset medium -c:a copy -movflags use_metadata_tags $ausgabeDatei # 4. Metadaten-Korrektur (wie gehabt) Write-Host "Synchronisiere Datum..." -ForegroundColor Yellow exiftool -overwrite_original -P "-CreateDate Neu (oder Strg + N ). Kopiere das oben stehende PowerShell-Skript und füge es in das weiße Textfeld ein. Ordnerpfad festlegen : Stelle sicher, dass du das Skript im gleichen Ordner speicherst, in dem auch deine .mov Dateien liegen ( Datei > Speichern unter... ). Skript starten : Klicke in der Symbolleiste auf den grünen "Ausführen"-Pfeil (oder drücke F5 ). Hinweis: Falls eine Fehlermeldung bezüglich der „Ausführungsrichtlinie“ erscheint, gib einmalig folgenden Befehl in das blaue Fenster (die Konsole) unten ein: Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process Erklärungen der einzelnen Befehle 1. Der FFmpeg-Befehl ffmpeg -i input.mov -map 0 -map_metadata 0 -c:v libx264 -crf 23 -preset medium -c:a copy -movflags use_metadata_tags output.mp4 oder ffmpeg -i input.mov -map 0:v -map 0:a -map_metadata 0 -c:v libx264 -crf 23 -preset medium -c:a copy -movflags use_metadata_tags output.mp4 -map 0 : Weist FFmpeg an, alle Datenströme der Quelldatei (Video, Audio und vor allem die DJI-Metadaten-Streams) in die Zieldatei zu übernehmen. oder -map 0:v : Weist FFmpeg an, den Video Datenstrom der Quelldatei in die Zieldatei zu übernehmen. oder -map 0:a : weist FFmpeg an, den Audio Datenstrom der Quelldatei in die Zieldatei zu übernehmen. -map_metadata 0 : Stellt sicher, dass die globalen Metadaten (wie das Erstellungsdatum) eins zu eins kopiert werden. -c:v libx264 : Nutzt den H.264 CPU-Encoder. Dies ist effizienter als GPU-Encoding und spart ca. 50% Speicherplatz bei gleichbleibender Qualität. -crf 23 : "Constant Rate Factor". 23 ist der Standardwert für eine sehr gute Balance zwischen Dateigröße und Bildqualität. -c:a copy : Kopiert den Audiostream ohne Neukodierung, um Qualität zu erhalten und Zeit zu sparen. -movflags use_metadata_tags : Erlaubt es FFmpeg, zusätzliche Metadaten-Tags im MP4-Container zu schreiben, die normalerweise nur in MOV-Dateien vorkommen. 2. Der ExifTool-Befehl exiftool "-CreateDate