Skip to main content

iCloud to Immich

Meine Schritte die ich getan habe, um meine Alben, Fotos und Videos aus der iCloud zu Immich zu bringen.

Exportieren aus Photos.app

Umwandeln der Videos von .mov zu .mp4

Das umwandeln der Videos hat mich ein wenig Zeit gekostet. Erstens weil ich erst etwas spaeter erkannte habe, dass mein einfacher ffmpeg Befehl, nicht alle erforderlichen Exif- und Metadaten der .mov-Dateien mitkopiert hat.

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 Exit- sowie Metadaten übertragen werden. Dazu wird zusätzlich zu ffmpeg noch das exiftool benoetigt. Dieses hat nicht nur bei der Überprüfung sonder auch nach der Umwandlung geholfen, die korrekten Exifdaten einzutragen, bzw. zu übertragen.

Das PowerShell-Skript (konvertiere-videos.ps1)

# 1. Backup-Ordner erstellen, falls er noch nicht existiert
if (!(Test-Path "original_movs")) { New-Item -ItemType Directory -Name "original_movs" }

# 2. Alle .mov Dateien im aktuellen Verzeichnis suchen
$dateien = Get-ChildItem -Filter *.mov

Write-Host "Gefunden: $($dateien.Count) Dateien zum Verarbeiten." -ForegroundColor White

foreach ($datei in $dateien) {
    $ausgabeDatei = $datei.BaseName + ".mp4"
    Write-Host "`n>>> Verarbeite: $($datei.Name)" -ForegroundColor Cyan

    # 3. CPU-Konvertierung (Hohe Effizienz & HDR Erhalt)
    # -map 0 kopiert alle Datenströme (inkl. GPS-Telemetrie von DJI)
    ffmpeg -i $datei.Name -map 0 -map_metadata 0 -c:v libx264 -crf 23 -preset medium -c:a copy -movflags use_metadata_tags $ausgabeDatei

    # 4. Metadaten-Korrektur mit ExifTool
    # Korrigiert die Container-Zeitstempel auf das echte Aufnahmedatum von 2023
    Write-Host "Synchronisiere Datum für Immich..." -ForegroundColor Yellow
    exiftool -overwrite_original -P "-CreateDate<CreationDate" "-ModifyDate<CreationDate" "-Track*Date<CreationDate" "-Media*Date<CreationDate" $ausgabeDatei

    # 5. Originaldatei in den Backup-Ordner verschieben
    Move-Item $datei.Name "original_movs\"
    
    Write-Host "Erfolg: $ausgabeDatei ist bereit für Immich." -ForegroundColor Green
}

Write-Host "`nAlle Dateien fertig! Originale liegen in 'original_movs'." -ForegroundColor Magenta

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

  • -map 0: Weist FFmpeg an, alle Datenströme der Quelldatei (Video, Audio und vor allem die DJI-Metadaten-Streams) 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<CreationDate" ... output.mp4

  • Das Problem: FFmpeg setzt beim Enkodieren oft das "Create Date" des MP4-Containers auf das aktuelle Datum (z.B. 2026).
  • Die Lösung: Dieser Befehl liest das ursprüngliche CreationDate (das echte Flugdatum 2023 aus den QuickTime-Tags) aus und überschreibt damit alle anderen Zeitstempel (CreateDate, ModifyDate, TrackDate).
  • Wichtigkeit für Immich: Dadurch erkennt Immich das Video korrekt in der Timeline von 2023 und nicht als "heute aufgenommen".
  • -P: Bewahrt das ursprüngliche Dateimodifikationsdatum im Windows-Dateisystem.

Warum kein GPU-Encoding (NVENC)?

Das Hardware-Encoding via Nvidia (NVENC) ist zwar extrem schnell, aber deutlich weniger effizient. In Tests wurde eine Datei von 63 MB mit dem CPU-Skript auf 27 MB geschrumpft, während NVENC nur auf 55 MB kam. Für die Langzeitarchivierung in Immich ist die CPU-Variante daher die bessere Wahl.

Hochladen der Videos zu Immich mit dem immich-go Kommandozeilenprogramm

immich-go

image.png