Inhaltsverzeichnis
MOV mit Alpha-Kanal nach WEBM mit Alpha-Kanal umwandeln
Diese Anleitung beschreibt, wie MOV-Dateien mit Transparenz, also Alpha-Kanal, in WEBM-Dateien mit Alpha-Kanal umgewandelt werden. Die Umwandlung erfolgt mit FFmpeg über ein PowerShell-Script unter Windows.
Ziel
Das Script wandelt alle .mov-Dateien aus diesem Ordner um:
C:\temp\ffmpeg
Die fertigen .webm-Dateien werden im gleichen Ordner gespeichert.
Beispiel:
C:\temp\ffmpeg\A14-PETER.mov
wird zu:
C:\temp\ffmpeg\A14-PETER.webm
Die WEBM-Datei wird mit diesen Einstellungen erstellt:
Format: WEBM Codec: VP9 Alpha-Kanal: ja Framerate: 25 fps Bildmodus: progressive Bitrate: ca. 4 Mbit/s
Ordner erstellen
Falls der Ordner noch nicht vorhanden ist, kann er so erstellt werden:
- Öffne den Windows Explorer.
- Gehe zu:
C:\
- Erstelle dort einen neuen Ordner:
temp
- Öffne den Ordner
temp. - Erstelle darin einen weiteren Ordner:
ffmpeg
Der vollständige Pfad lautet danach:
C:\temp\ffmpeg
Alternativ kann der Ordner in PowerShell erstellt werden:
New-Item -ItemType Directory -Path "C:\temp\ffmpeg" -Force
FFmpeg vorbereiten
Damit das Script funktioniert, muss sich ffmpeg.exe im Ordner befinden:
C:\temp\ffmpeg\ffmpeg.exe
Der Ordner sollte also mindestens diese Datei enthalten:
C:\temp\ffmpeg\ffmpeg.exe
Optional kann auch ffprobe.exe im gleichen Ordner liegen. Das ist hilfreich, um Dateien später zu prüfen.
MOV-Dateien in den Ordner kopieren
Kopiere alle MOV-Dateien, die umgewandelt werden sollen, nach:
C:\temp\ffmpeg
Beispiel:
C:\temp\ffmpeg\A14-PETER (vMix - Output 3).mov
Das Script verarbeitet automatisch alle Dateien mit der Endung:
.mov
PowerShell-Script erstellen
Öffne PowerShell und gib ein:
notepad C:\temp\ffmpeg\convert.ps1
Wenn gefragt wird, ob die Datei erstellt werden soll, bestätige mit Ja.
Füge dann folgenden Inhalt in Notepad ein:
$ErrorActionPreference = "Stop" $folder = "C:\temp\ffmpeg" $ffmpegLocal = Join-Path $folder "ffmpeg.exe" if (Test-Path $ffmpegLocal) { $ffmpeg = $ffmpegLocal } else { $ffmpeg = "ffmpeg" } $movFiles = Get-ChildItem -Path $folder -Filter "*.mov" -File if ($movFiles.Count -eq 0) { Write-Host "Keine .mov-Dateien in $folder gefunden." exit 0 } foreach ($file in $movFiles) { $input = $file.FullName $output = Join-Path $folder ($file.BaseName + ".webm") Write-Host "" Write-Host "Konvertiere:" Write-Host " Input : $input" Write-Host " Output: $output" $cmd = "`"$ffmpeg`" -y -i `"$input`" -vf `"yadif=0:-1:0,fps=25`" -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -b:v 4M -minrate 4M -maxrate 4M -crf 25 `"$output`"" cmd /c $cmd if ($LASTEXITCODE -eq 0) { Write-Host "OK: $output" } else { Write-Host "FEHLER: FFmpeg Exit Code $LASTEXITCODE bei $input" } } Write-Host "" Write-Host "Alle Konvertierungen abgeschlossen."
Speichere die Datei.
Der Script-Pfad lautet dann:
C:\temp\ffmpeg\convert.ps1
Script ausführen
Wechsle in den Ordner C:\temp\ffmpeg.
dort befindet sich ja das File convert.ps1
Mit der rechten Maustaste darauf und mit Powerscript ausführen wählen.
Wenn die Konvertierung beginnt ist alles richtig.
ODER: Öffne PowerShell und wechsle in den Ordner:
cd C:\temp\ffmpeg
Falls PowerShell das Ausführen von Scripts blockiert, gib zuerst ein:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Danach startest du das Script:
.\convert.ps1
Das Script sucht nun alle .mov-Dateien im Ordner und erstellt daraus .webm-Dateien.
Was passiert bei der Umwandlung?
Diese Zeile ist der wichtigste Teil des Scripts:
$cmd = "`"$ffmpeg`" -y -i `"$input`" -vf `"yadif=0:-1:0,fps=25`" -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 -b:v 4M -minrate 4M -maxrate 4M -crf 25 `"$output`""
Bedeutung der wichtigsten Parameter:
| Parameter | Bedeutung |
|---|---|
-y | Überschreibt vorhandene WEBM-Dateien ohne Rückfrage |
-i „$input“ | Gibt die MOV-Eingabedatei an |
-vf „yadif=0:-1:0,fps=25“ | Wandelt das Video in progressive um und setzt es auf 25 fps |
-c:v libvpx-vp9 | Verwendet den VP9-Codec für WEBM |
-pix_fmt yuva420p | Erhält den Alpha-Kanal für Transparenz |
-auto-alt-ref 0 | Wichtig, damit Alpha bei VP9 korrekt funktioniert |
-b:v 4M | Setzt die Zielbitrate auf 4 Mbit/s |
-minrate 4M | Setzt die Mindestbitrate auf 4 Mbit/s |
-maxrate 4M | Setzt die Maximalbitrate auf 4 Mbit/s |
-crf 25 | Qualitätswert für VP9 |
„$output“ | Name der erzeugten WEBM-Datei |
Ergebnis prüfen
Nach erfolgreicher Umwandlung liegt die WEBM-Datei im gleichen Ordner wie die MOV-Datei.
Beispiel:
C:\temp\ffmpeg\A14-PETER (vMix - Output 3).webm
Um zu prüfen, ob die Datei Informationen zum Alpha-Kanal enthält, kann man in PowerShell ausführen:
.\ffmpeg.exe -i "C:\temp\ffmpeg\A14-PETER (vMix - Output 3).webm"
In der Ausgabe sollte bei der Videospur ein Hinweis wie dieser erscheinen:
alpha_mode
oder ein Pixelformat wie:
yuva420p
Das zeigt, dass die Datei mit Alpha-Kanal gespeichert wurde.
Häufige Fehler
Fehlermeldung: „Keine .mov-Dateien gefunden“
Dann liegt keine MOV-Datei im Ordner:
C:\temp\ffmpeg
Lösung: MOV-Dateien in diesen Ordner kopieren.
Fehlermeldung: „ffmpeg wird nicht erkannt“
Dann fehlt ffmpeg.exe.
Lösung: ffmpeg.exe in diesen Ordner kopieren:
C:\temp\ffmpeg
Die WEBM-Datei hat keine Transparenz
Mögliche Ursachen:
- Die ursprüngliche MOV-Datei enthält keinen Alpha-Kanal.
- Die MOV-Datei wurde vorher bereits ohne Alpha exportiert.
- Ein Player zeigt WEBM-Alpha nicht korrekt an.
Zum Testen sollte die WEBM-Datei in einer Anwendung geöffnet werden, die WEBM mit Alpha unterstützt.
Kurzablauf
- Ordner erstellen:
C:\temp\ffmpeg
ffmpeg.exein diesen Ordner legen.- MOV-Dateien in diesen Ordner kopieren.
- Script erstellen:
C:\temp\ffmpeg\convert.ps1
- Script ausführen:
cd C:\temp\ffmpeg Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass .\convert.ps1
- WEBM-Dateien im gleichen Ordner verwenden.
