FFmpeg unter Windows installieren: vollständige Anleitung
Um FFmpeg unter Windows zu installieren, entpacken Sie einen Windows-Build und fügen den Ordner
mit ffmpeg.exe zu Ihrem PATH hinzu. Das Archiv enthält einen Ordner mit einer
Versionsnummer. Der gesuchte Ordner liegt daher meist tiefer als C:\FFmpeg\bin.
Diese Anleitung ermittelt den tatsächlichen Pfad, macht FFmpeg für Ihr Benutzerkonto verfügbar
und prüft die Installation, indem Sie ein kurzes Video erstellen und untersuchen.
Voraussetzungen
Verwenden Sie Windows 11 auf einem x64-PC und Windows PowerShell 5.1. Sie benötigen eine Internetverbindung und Platz für das ZIP-Archiv sowie die entpackten Dateien. Die Installation bleibt in Ihrem Benutzerprofil und ändert nur Ihren Benutzer-PATH. Ein Terminal mit Administratorrechten ist nicht erforderlich.
Die folgenden Befehle sind zum Einfügen in PowerShell vorgesehen, nicht in die Eingabeaufforderung.
Lassen Sie während der Installation dasselbe PowerShell-Fenster geöffnet, damit
$bin verfügbar bleibt. Halten Sie an, wenn ein Block einen Fehler meldet.
Sie müssen Ihre Skriptausführungsrichtlinie nicht ändern, um diese Befehle einzufügen.
Den ZIP-Build installieren
Schritt 1: FFmpeg herunterladen
Öffnen Sie die offizielle FFmpeg-Downloadseite und folgen Sie
„Windows builds from gyan.dev“. FFmpeg veröffentlicht Quellcode; Gyan stellt die kompilierten
Windows-Programme bereit. Suchen Sie auf Gyans Build-Seite nach
release builds und laden Sie ffmpeg-release-essentials.zip sowie die daneben verlinkte Datei
.sha256 herunter. Speichern Sie beide unter diesen Namen in Ihrem
Downloads-Ordner, einschließlich ffmpeg-release-essentials.zip.sha256. Wenn Ihr Browser die Prüfsumme
als Text anzeigt, speichern Sie die Seite als reine Textdatei unter diesem Dateinamen.
Wenn der ZIP-Download langsam ist, folgen Sie dem Link „mirror @ github“ auf der Seite und
wählen Sie das Essentials-ZIP-Archiv desselben Releases. Benennen Sie dieses ZIP-Archiv mit
Versionsnummer für die folgenden Befehle in ffmpeg-release-essentials.zip um und verwenden Sie
die Prüfsumme derselben Version von Gyans Build-Seite.
Das Essentials-ZIP-Archiv enthält ffmpeg, ffprobe
und den unten verwendeten Encoder libx264. Das ZIP-Archiv lässt sich mit
PowerShell-Bordmitteln entpacken, Sie benötigen also kein 7-Zip. Getestet wurde Gyans Build
9.0.2-essentials_build; der Downloadlink kann bei Ihrem Besuch ein neueres Release liefern.
Der Essentials-Build ist statisch. Wenn Sie stattdessen einen Shared-Build wählen, belassen Sie dessen passende FFmpeg-DLLs bei den ausführbaren Dateien. „Full“ ergänzt externe Bibliotheken; für gewöhnliches H.264-Encoding benötigen Sie diese Variante nicht. Gyan setzt derzeit Windows 10 oder neuer voraus. Diese Anleitung behandelt Windows 11 x64, nicht ältere Windows-Versionen oder native ARM64-Builds.
Das ZIP-Archiv prüfen und sein bin-Verzeichnis finden
Fügen Sie diesen Block in PowerShell ein. Falls Sie den Download an einem anderen Ort gespeichert
haben, ändern Sie zuerst $archive. Der Block vergleicht die SHA-256-Prüfsumme
mit der Datei des Herausgebers, entpackt das Archiv nach %LOCALAPPDATA%\Programs\FFmpeg und speichert
das tatsächliche Verzeichnis der ausführbaren Dateien in $bin.
Er verweigert die Verwendung eines bereits vorhandenen Ziels, auch wenn dieses von einem
abgebrochenen Entpackvorgang stammt. Wählen Sie ein anderes Ziel, statt eine Installation zu
überschreiben.
$bin = & {
$ErrorActionPreference = 'Stop'
$archive = Join-Path $env:USERPROFILE 'Downloads\ffmpeg-release-essentials.zip'
$destination = Join-Path $env:LOCALAPPDATA 'Programs\FFmpeg'
if (Test-Path -LiteralPath $destination) {
throw 'The installation folder already exists. Choose a new destination.'
}
$expected = (Get-Content -Raw -LiteralPath "$archive.sha256").Trim()
$actual = (Get-FileHash -LiteralPath $archive -Algorithm SHA256).Hash
if ($expected -notmatch '^[0-9a-fA-F]{64}$' -or $actual -ne $expected) {
throw 'SHA-256 mismatch. Download the ZIP and its checksum again.'
}
Expand-Archive -LiteralPath $archive -DestinationPath $destination
$executables = @(Get-ChildItem -LiteralPath $destination -Filter ffmpeg.exe -File -Recurse)
if ($executables.Count -ne 1) {
throw 'Expected one ffmpeg.exe in the extracted archive.'
}
$executables[0].Directory.FullName
}
$bin
Beim getesteten ZIP-Archiv endet das Ergebnis auf
Programs\FFmpeg\ffmpeg-9.0.2-essentials_build\bin. Der letzte Bestandteil muss bin sein,
und dieser Ordner muss sowohl ffmpeg.exe als auch
ffprobe.exe enthalten. Fügen Sie weder das ZIP-Archiv noch den äußeren
Entpackordner oder den Namen der ausführbaren Datei selbst zu PATH hinzu.
Get-FileHash prüft die heruntergeladenen Bytes anhand der Prüfsumme des Herausgebers. Der Abgleich erkennt einen beschädigten oder nicht übereinstimmenden Download. Eine Übereinstimmung ist jedoch kein unabhängiger Nachweis dafür, dass die Dateien des Herausgebers vertrauenswürdig sind. Expand-Archive entpackt das ZIP-Archiv und behält dabei die verschachtelten Verzeichnisse bei.
FFmpeg zu Ihrem Benutzer-PATH hinzufügen
PATH ist eine Liste von Verzeichnissen, in denen Windows nach Befehlen sucht. Der folgende Block
hängt $bin an Ihren Benutzer-PATH an, behält vorhandene Einträge bei
und vermeidet ein identisches Duplikat. Der System-PATH gilt für alle Benutzerkonten und lässt sich
normalerweise nur mit Administratorrechten ändern. Für diese Installation müssen Sie ihn nicht
bearbeiten.
& {
$ErrorActionPreference = 'Stop'
if (-not $bin -or -not (Test-Path -LiteralPath (Join-Path $bin 'ffmpeg.exe') -PathType Leaf)) {
throw 'Run the extraction block successfully before changing PATH.'
}
$userPath = [Environment]::GetEnvironmentVariable('Path', 'User')
if (($userPath -split ';') -notcontains $bin) {
$updatedPath = (@($userPath, $bin) | Where-Object { $_ }) -join ';'
[Environment]::SetEnvironmentVariable('Path', $updatedPath, 'User')
}
}
Damit wird PATH für Ihr Benutzerkonto gespeichert; bereits laufende Programme werden dadurch nicht aktualisiert. Stellen Sie das Verzeichnis für dieses PowerShell-Fenster zusätzlich an den Anfang des Prozess-PATH:
$env:Path = "$bin;$env:Path"
Ein Kindprozess erbt die Umgebung seines Elternprozesses. Wenn Sie einen weiteren Tab in einem bereits laufenden Terminal oder Editor öffnen, kann deshalb der alte PATH erhalten bleiben. Schließen Sie die gesamte Terminalanwendung und öffnen Sie sie über Start erneut, bevor Sie prüfen, ob die Änderung dauerhaft gespeichert wurde. Falls die alte Umgebung weiterhin besteht, melden Sie sich von Windows ab und wieder an. Microsofts Dokumentation zu Umgebungsvariablen erläutert diese Geltungsbereiche für Prozesse, Benutzer und das System. Das vorübergehende Voranstellen oben bevorzugt gezielt diese Kopie. Nach einer erneuten Anmeldung kann im kombinierten PATH trotzdem zuerst eine ältere Installation gefunden werden.
Die Installation überprüfen
Prüfen Sie sowohl die ausgewählten ausführbaren Dateien als auch deren Versionen. Führen Sie diesen Block jetzt und nach dem erneuten Öffnen Ihres Terminals noch einmal aus:
& {
$ErrorActionPreference = 'Stop'
Get-Command ffmpeg, ffprobe -All | Format-List CommandType, Name, Source
ffmpeg -version
if ($LASTEXITCODE -ne 0) { throw 'ffmpeg could not start.' }
ffprobe -version
if ($LASTEXITCODE -ne 0) { throw 'ffprobe could not start.' }
}
Beide Pfade sollten in den entpackten Ordner bin zeigen und die
Build-Versionen übereinstimmen. Falls für einen Namen mehrere Ergebnisse erscheinen, wählt
PowerShell den ersten Befehl aus. Auch ein Alias oder eine Funktion kann Vorrang vor einer
ausführbaren Datei haben.
Ein Video codieren und untersuchen
Wechseln Sie in PowerShell in einen Ordner, in dem Sie ein kleines Testvideo erstellen möchten,
zum Beispiel Downloads. Dieses Beispiel erzeugt ein Testmuster von einer Sekunde Länge und
benötigt daher weder Eingabevideomaterial noch eine GPU. Es schreibt
ffmpeg-check.mp4 in das aktuelle Verzeichnis. Die explizite Dateiprüfung stoppt eine
erneute Ausführung vor dem Encoding; -n verhindert zusätzlich, dass
FFmpeg eine vorhandene Datei überschreibt. Verschieben Sie diese Datei für einen weiteren Test
an einen anderen Ort oder wählen Sie in der Prüfung und beiden Befehlen einen anderen Ausgabenamen.
& {
$ErrorActionPreference = 'Stop'
if (Test-Path -LiteralPath './ffmpeg-check.mp4') {
throw 'Output already exists. Move it aside or choose a new filename.'
}
ffmpeg -hide_banner -loglevel error -nostdin -n -f lavfi -i "testsrc2=size=320x180:rate=25" -t 1 -c:v libx264 -pix_fmt yuv420p "./ffmpeg-check.mp4"
if ($LASTEXITCODE -ne 0) { throw 'Encode failed. Check the error above before probing the output.' }
ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,width,height,pix_fmt:format=duration -of json "./ffmpeg-check.mp4"
if ($LASTEXITCODE -ne 0) { throw 'ffprobe could not read the output.' }
}
Das JSON sollte h264, die Breite 320, die Höhe
180, das Pixelformat yuv420p und eine Dauer von
etwa 1.000000 Sekunden ausweisen. Damit prüfen Sie das Encoding und Lesen
einer echten MP4-Datei, nicht nur den Programmstart. FFmpeg dokumentiert die
Steuerung des Überschreibens, und die
ausgewählten Felder von ffprobe erleichtern die Prüfung des Ergebnisses.
Häufige Probleme beheben
FFmpeg wird nicht erkannt
Prüfen Sie, ob die ausführbare Datei über ihren vollständigen Pfad funktioniert. In der
ursprünglichen PowerShell-Sitzung enthält $bin dieses Verzeichnis noch.
Setzen Sie die Variable in einer neuen Sitzung auf den Pfad, der beim Entpacken ausgegeben wurde.
& {
$ErrorActionPreference = 'Stop'
& (Join-Path $bin 'ffmpeg.exe') -version
if ($LASTEXITCODE -ne 0) { throw 'The selected ffmpeg.exe could not start.' }
}
Wenn dies funktioniert, ffmpeg -version aber nicht, prüfen Sie die Befehlssuche:
den korrekten Eintrag für bin, den vom Terminal geerbten PATH und die
obigen Ergebnisse von Get-Command -All. Ein Fehler „Unknown encoder“ bedeutet, dass
FFmpeg gestartet wurde. Prüfen Sie, ob der ausgewählte Build den angeforderten Encoder enthält.
Führen Sie beispielsweise ffmpeg -hide_banner -encoders aus und suchen Sie nach
libx264.
Fehler wegen fehlender DLLs
Entpacken Sie das vollständige Archiv erneut in einen neuen Ordner und prüfen Sie, welche
ausführbare Datei PowerShell verwendet. Ein Shared-Build benötigt seine passenden DLLs. Wenn Sie
nur die Dateien mit der Endung .exe kopieren, fehlt diese Zusammenstellung.
Mischen Sie keine DLLs aus verschiedenen Releases und laden Sie keine einzelnen DLLs von anderen
Websites herunter. Auch ein statischer Build benötigt Windows-Systemkomponenten. Die Installation
des neuesten Visual C++ Redistributable ist keine universelle Lösung für eine bestimmte fehlende
DLL. Beachten Sie die dokumentierten Laufzeitanforderungen des jeweiligen Builds.
Berechtigungsprobleme
Speichern Sie die Installation und die Testausgabe in Ordnern, in die Ihr Benutzerkonto schreiben
darf. Ein Fehler wegen verweigerten Zugriffs unter Program Files oder beim Ändern
des System-PATH ist kein Grund, jede Konvertierung als Administrator auszuführen. Wenn ein
verwalteter PC das Herunterladen oder Starten ausführbarer Dateien blockiert, nutzen Sie das dafür
freigegebene Verfahren zur Softwareinstallation.
Hardwarebeschleunigung separat prüfen
Das Beispiel nutzt CPU-Encoding. Wenn ein Build NVENC, QSV oder eine andere Hardwarekomponente
auflistet, beweist das nicht, dass Ihr PC sie nutzen kann: Auch kompatible Hardware und Treiber
müssen vorhanden sein. Die
Dokumentation zu -hwaccels von FFmpeg
macht diesen Unterschied deutlich. Bringen Sie zunächst das Software-Encoding zum Laufen, bevor
Sie Probleme mit einem GPU-Encoder untersuchen.
Wenn Sie bereits einen Paketmanager verwenden
Gyans Build-Seite listet auch Pakete für Chocolatey, Scoop und WinGet auf. Diese sind eine Alternative zur manuellen Installation. Verwenden Sie denselben Paketmanager für Updates und die Deinstallation und prüfen Sie, welchen Build sein Paket installiert. Vermeiden Sie es, Installationen beider Methoden im PATH zu behalten, sofern Sie nicht gezielt zwischen ihnen wählen möchten. Die Einrichtung eines Paketmanagers ist nicht Teil dieser Anleitung.
FFmpeg aktualisieren
Laden Sie für diese manuelle Installation das neue ZIP-Archiv und dessen Prüfsumme herunter.
Wiederholen Sie dann den Entpackblock mit einem anderen Ziel, etwa
Programs\FFmpeg-new. Führen Sie die PATH-Blöcke mit dem neuen Wert für
$bin aus und wiederholen Sie die Encoding- und ffprobe-Prüfung mit einem
neuen Ausgabedateinamen. Behalten Sie den bisherigen Ordner, bis der neue Build funktioniert.
Suchen Sie anschließend in Start nach „Umgebungsvariablen für dieses Konto bearbeiten“, bearbeiten
Sie Path unter Benutzervariablen und entfernen Sie genau den alten Eintrag für
bin. Behalten Sie dabei den neuen und alle anderen Einträge bei.
Starten Sie das Terminal neu und prüfen Sie Get-Command erneut, bevor Sie die
alte Installation löschen. Um eine manuell installierte Kopie zu deinstallieren, entfernen Sie
ihren Benutzer-PATH-Eintrag und anschließend den entpackten Ordner.
