Comment installer FFmpeg sur Windows : guide complet
Pour installer FFmpeg sur Windows, extrayez une version compilée pour Windows et ajoutez le dossier
contenant ffmpeg.exe à votre PATH. L’archive contient un dossier dont le nom inclut
la version : le dossier à ajouter se trouve donc généralement plus bas dans l’arborescence que
C:\FFmpeg\bin. Ce guide vous aide à trouver le chemin exact, à rendre FFmpeg
accessible depuis votre compte et à vérifier son fonctionnement en créant puis en inspectant une
courte vidéo.
Prérequis
Utilisez Windows 11 sur un PC x64 et Windows PowerShell 5.1. Vous avez besoin d’une connexion Internet et d’espace pour le ZIP et ses fichiers extraits. Cette installation reste dans votre profil utilisateur et modifie uniquement votre PATH utilisateur ; elle ne nécessite pas de terminal avec des droits d’administrateur.
Les commandes ci-dessous sont à coller dans PowerShell, et non dans l’invite de commandes. Gardez
la même fenêtre PowerShell ouverte pendant l’installation pour que $bin
reste disponible. Arrêtez-vous si un bloc signale une erreur. Il n’est pas nécessaire de modifier
votre stratégie d’exécution des scripts pour coller ces commandes.
Installer la version compilée au format ZIP
Étape 1 : Télécharger FFmpeg
Ouvrez la page officielle de téléchargement de FFmpeg et suivez le
lien « Windows builds from gyan.dev ». FFmpeg publie le code source ; Gyan fournit les programmes
compilés pour Windows. Sur la page des versions compilées de Gyan,
repérez release builds et téléchargez ffmpeg-release-essentials.zip ainsi que le fichier
.sha256 adjacent. Enregistrez-les dans votre dossier Téléchargements sous
ces noms, en conservant notamment ffmpeg-release-essentials.zip.sha256. Si votre navigateur affiche la
somme de contrôle sous forme de texte, enregistrez la page comme fichier texte brut sous ce nom.
Si le téléchargement du ZIP est lent, suivez le lien « mirror @ github » de la page et sélectionnez
le ZIP essentials de la même version. Renommez ce ZIP dont le nom inclut la version en
ffmpeg-release-essentials.zip pour utiliser ces commandes, et prenez la somme de contrôle de cette
même version sur la page des versions compilées de Gyan.
Le ZIP essentials comprend ffmpeg, ffprobe et
l’encodeur libx264 utilisé ci-dessous. Le ZIP fonctionne avec l’outil
d’extraction intégré à PowerShell ; vous n’avez donc pas besoin de 7-Zip. La version compilée
testée est 9.0.2-essentials_build, fournie par Gyan ; le lien de téléchargement peut
proposer une version plus récente lorsque vous le consultez.
La version compilée essentials utilise une liaison statique. Si vous choisissez plutôt une version à bibliothèques partagées, conservez les DLL FFmpeg correspondantes avec ses exécutables. « Full » ajoute des bibliothèques externes ; cela ne signifie pas que cette variante est nécessaire pour un encodage H.264 courant. Gyan exige actuellement Windows 10 ou une version ultérieure ; ce guide couvre Windows 11 x64, sans couvrir les anciennes versions de Windows ni les versions compilées natives pour ARM64.
Vérifier le ZIP et trouver son répertoire bin
Collez ce bloc dans PowerShell. Si vous avez enregistré le téléchargement ailleurs, modifiez
d’abord $archive. Ce bloc vérifie la somme SHA-256 à l’aide du fichier de
l’éditeur, extrait l’archive dans %LOCALAPPDATA%\Programs\FFmpeg et stocke le répertoire réel des
exécutables dans $bin. Il refuse d’utiliser une destination existante,
y compris si elle provient d’une extraction interrompue. Choisissez une autre destination plutôt
que d’écraser une installation.
$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
Pour le ZIP testé, le résultat se termine par
Programs\FFmpeg\ffmpeg-9.0.2-essentials_build\bin. Le dernier composant doit être bin, et ce
dossier doit contenir à la fois ffmpeg.exe et ffprobe.exe.
N’ajoutez au PATH ni le ZIP, ni son dossier d’extraction externe, ni le nom du fichier exécutable
lui-même.
Get-FileHash compare les octets téléchargés à la somme de contrôle de l’éditeur. Une correspondance permet de détecter un téléchargement endommagé ou qui ne correspond pas ; elle ne constitue pas une preuve indépendante de la fiabilité des fichiers de l’éditeur. Expand-Archive extrait le ZIP en conservant ses répertoires imbriqués.
Ajouter FFmpeg à votre PATH utilisateur
PATH est une liste de répertoires dans lesquels Windows recherche les commandes. Le bloc suivant
ajoute $bin à la fin de votre PATH utilisateur, en conservant les
entrées existantes et en évitant un doublon identique. Le PATH de la machine s’applique à tous les
comptes et sa modification nécessite normalement des droits d’administrateur ; vous n’avez pas
besoin de le modifier pour cette installation.
& {
$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')
}
}
Cela enregistre le PATH pour votre compte, sans actualiser les programmes déjà en cours d’exécution. Pour cette fenêtre PowerShell, ajoutez aussi le répertoire au début du PATH du processus :
$env:Path = "$bin;$env:Path"
Un processus enfant hérite de l’environnement de son parent. Ouvrir un autre onglet dans un terminal ou un éditeur existant peut donc conserver un ancien PATH. Fermez entièrement l’application de terminal et rouvrez-la depuis Démarrer avant de vérifier que la modification est conservée. Si elle utilise toujours l’ancien environnement, déconnectez-vous de Windows puis reconnectez-vous. La documentation Microsoft sur les variables d’environnement explique ces portées de processus, d’utilisateur et de machine. L’ajout temporaire en début de liste ci-dessus privilégie délibérément cette copie ; après une nouvelle connexion, une ancienne installation peut encore être trouvée plus tôt dans le PATH combiné.
Vérifier l’installation
Vérifiez les exécutables sélectionnés ainsi que leurs versions. Exécutez ce bloc maintenant, puis à nouveau après avoir rouvert votre terminal :
& {
$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.' }
}
Les deux chemins devraient pointer vers le dossier bin extrait, avec
des versions de compilation correspondantes. Si plusieurs résultats apparaissent pour un nom, le
premier est la commande que PowerShell sélectionne. Un alias ou une fonction peut également être
prioritaire sur un exécutable.
Encoder une vidéo et l’inspecter
Dans PowerShell, placez-vous dans un dossier où vous souhaitez créer une petite vidéo de test,
comme Téléchargements. Cet exemple génère une mire d’une seconde ; il ne nécessite donc ni vidéo
source ni GPU. Il écrit ffmpeg-check.mp4 dans le répertoire courant. La vérification
explicite du fichier arrête une nouvelle exécution avant l’encodage ;
-n empêche également FFmpeg d’écraser un fichier existant. Pour refaire
le test, déplacez ce fichier ou choisissez un autre nom de sortie dans la vérification et dans les
deux commandes.
& {
$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.' }
}
Le JSON devrait indiquer h264, une largeur de
320, une hauteur de 180, le format de pixels
yuv420p et une durée d’environ 1.000000 seconde. Cela
vérifie l’encodage et la lecture d’un véritable MP4, au-delà du simple démarrage des programmes.
FFmpeg documente le contrôle de l’écrasement des fichiers, et les
champs sélectionnés avec ffprobe facilitent l’inspection du résultat.
Résoudre les problèmes courants
FFmpeg n’est pas reconnu
Vérifiez si l’exécutable fonctionne avec son chemin complet. Dans la session PowerShell d’origine,
$bin contient toujours ce répertoire ; dans une nouvelle session,
affectez-lui le chemin affiché lors de l’extraction.
& {
$ErrorActionPreference = 'Stop'
& (Join-Path $bin 'ffmpeg.exe') -version
if ($LASTEXITCODE -ne 0) { throw 'The selected ffmpeg.exe could not start.' }
}
Si cela fonctionne, mais que ffmpeg -version échoue, examinez la recherche des
commandes : l’entrée bin correcte, le PATH hérité par le terminal et les
résultats de Get-Command -All ci-dessus. Une erreur « Unknown encoder » signifie que
FFmpeg a bien démarré. Vérifiez que la version compilée sélectionnée contient l’encodeur demandé ;
par exemple, exécutez ffmpeg -hide_banner -encoders et recherchez libx264.
Erreurs de DLL manquantes
Extrayez à nouveau l’archive complète dans un nouveau dossier et vérifiez quel exécutable
PowerShell lance. Une version compilée à bibliothèques partagées nécessite les DLL
correspondantes ; copier uniquement ses fichiers .exe fait perdre cette
configuration. Ne mélangez pas les DLL de versions différentes et ne téléchargez pas de DLL
individuelles depuis des sites sans rapport. Une version compilée à liaison statique dépend
toujours de composants système de Windows. Installer le dernier redistribuable Visual C++ n’est
pas une solution universelle à l’absence d’une DLL nommément signalée ; suivez les exigences
d’exécution documentées pour cette version compilée.
Problèmes d’autorisations
Conservez l’installation et la sortie du test dans des dossiers où votre compte peut écrire. Une
erreur d’accès refusé dans Program Files ou lors de la modification du PATH de la
machine ne justifie pas d’exécuter toutes les conversions en tant qu’administrateur. Si un PC géré
bloque le téléchargement ou le lancement d’exécutables, suivez sa procédure approuvée
d’installation de logiciels.
L’accélération matérielle nécessite une vérification distincte
L’exemple utilise l’encodage sur CPU. La présence de NVENC, QSV ou d’un autre composant matériel
dans la liste d’une version compilée ne prouve pas que votre PC peut l’utiliser : du matériel et
des pilotes compatibles doivent également être disponibles. La
documentation de FFmpeg sur -hwaccels fait cette
distinction. Faites fonctionner l’encodage logiciel avant de diagnostiquer un encodeur GPU.
Si vous utilisez déjà un gestionnaire de paquets
La page des versions compilées de Gyan répertorie également des paquets Chocolatey, Scoop et WinGet. Ils constituent une alternative à cette installation manuelle ; utilisez le même gestionnaire pour les mises à jour et la désinstallation, et vérifiez quelle version compilée son paquet installe. Évitez de conserver les deux méthodes dans le PATH, sauf si vous comptez choisir entre elles. La configuration d’un gestionnaire de paquets sort du cadre de ce guide.
Mettre à jour FFmpeg
Pour cette installation manuelle, téléchargez le nouveau ZIP et sa somme de contrôle, puis
réexécutez le bloc d’extraction avec une destination différente, comme
Programs\FFmpeg-new. Exécutez les blocs PATH avec la nouvelle valeur de
$bin, puis répétez la vérification par encodage et analyse avec un nouveau
nom de fichier de sortie. Conservez le dossier précédent jusqu’à ce que la nouvelle version
compilée fonctionne.
Ensuite, recherchez « Modifier les variables d’environnement pour votre compte » dans Démarrer,
modifiez Path sous Variables utilisateur, puis supprimez précisément l’ancienne entrée
bin en conservant la nouvelle et toutes les entrées sans rapport.
Redémarrez le terminal et vérifiez à nouveau Get-Command avant de supprimer
l’ancienne installation. Pour désinstaller une copie manuelle, supprimez son entrée du PATH
utilisateur, puis son dossier extrait.
