从零开始:Windows 系统下 FFmpeg 安装与使用完全指南

你是否曾经遇到过这样的情况:下载了一个视频,却发现手机无法播放;或者拍了一段有趣的素材,想要截取其中一段发到朋友圈,却不知道用什么软件?如果你不想安装那些体积庞大、充满广告的视频编辑软件,那么 FFmpeg 绝对是你的救星。

FFmpeg 是一款开源、免费、强大的音视频处理工具,它主要通过命令行操作,但一旦上手,你会发现它比任何图形界面软件都要高效。本文将手把手教你如何在 Windows 系统下安装和使用 FFmpeg。

说点与教程无关的,其实,放在三年前,我不会推荐小白去使用 FFmpeg,但是到变了,AI 时代的到来改变了很多东西,即使你对电脑一无所知,也可以借助 AI 编写命令行代码,譬如我自己,我用了很久的 FFmpeg,几乎从未手写过命令,言归正传,我们接着回到安装教程。

第一部分:FFmpeg 的安装

  1. 访问官网下载页面

    打开浏览器,访问 FFmpeg 的官方下载地址:https://www.gyan.dev/ffmpeg/builds/

  2. 选择合适的版本

    在页面中找到你需要的安装包,带有essentials字样的是精简版,带有full字样的是完整版,理论上精简版足以满足大部分功能,不过我建议下载完整版,毕竟大家电脑应该都不差这一点存储空间。

    如果你打不开网页或者懒得分辨安装包也没事,我给大家准备好了,访问https://pan.quark.cn/s/3f38c878a456即可

  3. 解压并放置

    解压下载的压缩包,然后粘贴到一个你容易找到的位置,例如 **E:\FFmpeg**

第二部分:配置环境变量(让 FFmpeg 随处可用)

  1. 找到 bin 路径

    进入刚才解压的 FFmpeg 文件夹,找到名为 bin 的子文件夹。比兔我的是E:\ffmpeg\bin请复制这个路径

  2. 打开环境变量设置

    • 按住Win键,搜索框输入环境变量

    • 右键点击 "此电脑" 或 "我的电脑",选择 "属性"。

  3. 修改 Path 变量

    • 点击【环境变量(N)】

    • 在 "系统变量" 列表中,找到并双击 Path 变量。

    • 点击右上角的 "新建 ",将刚才复制的 bin 文件夹路径粘贴进去。

    • 一路点击 "确定" 保存。

  4. 验证安装

    按下 Win + R,输入 cmd 打开命令提示符,输入以下命令:

    bash 复制代码
    ffmpeg -version

    如果屏幕上显示出 FFmpeg 的版本信息和配置参数,恭喜你,安装成功了!

第三部分:FFmpeg 基础使用教程

这方面,你需要做的就是将你的需求准确的描述给 AI,你可以先问这个需求可不可以用 FFmpeg 实现,然后让 AI 给你具体代码,不会就问,如果报错就再把错误信息复制粘贴发给 AI,多来几次就熟能生巧了,然后常用的功能可以建一个 txt 文本文件夹,编写一个脚本文件,给大家分享一下我常用的提示词模板。

使用的时候要把 AI 给你的命令复制到命令行窗口中,可以按下 Win + R,输入 cmd 打开命令提示符,粘贴命令;也可以按下Win键,搜索Powershell并打开,这俩有什么区别我就不介绍少了,就当作业吧,大家自己查查或者问问 AI 都行。

markdown 复制代码
[在这里输入需求]
输入参数如下:
1. 输入文件完整路径
2. 输出文件夹
3. 根据要求设计你的输入参数

下面是我烧录字幕设置的提示词

markdown 复制代码
编写 FFmpeg 脚本
实现功能:将字幕烧录到视频中(即硬字幕)
接收参数:
1. 字幕文件路径
2. 视频文件路径
3. 是否使用 GPU 加速
4. 速度
5. 视频质量
6. 编码格式
7. 文件格式
8. 输出文件夹路径
要求:
1. 视频重编码,音频直接复制,如原本有字幕轨道,清空
2. powershell脚本,可直接粘贴运行

能够得到一个这样的脚本

bash 复制代码
# --- 配置区域 (在此修改参数) ---
$VideoPath    = "E:\Videos\英语视频\BranchEducation\GPU 是如何工作的\00.mp4"
$SubtitlePath = "E:\Videos\英语视频\BranchEducation\GPU 是如何工作的\00.ass"
$OutputDir    = ""                       # 留空 "" 则默认输出到原视频文件夹
$UseGPU       = $true                    # $true 为使用 NVIDIA 显卡加速,$false 为使用 CPU
$Speed        = "p7"                     # GPU: p1(最快)-p7(最强) | CPU: ultrafast, medium, veryslow

# ============ 画质控制 ============
$Quality      = 27                       # ← 在此设置画质等级
$EncFormat    = "av1"                    # 编码格式: "av1", "h264" 或 "h265"
$OutContainer = "mp4"                    # 输出文件后缀: mp4, mkv 等

# 1. 路径验证与处理
if (-not (Test-Path -LiteralPath $VideoPath)) {
    Write-Host "错误: 找不到视频文件 -> $VideoPath" -ForegroundColor Red
    Read-Host "按任意键退出"; exit 1
}
if (-not (Test-Path -LiteralPath $SubtitlePath)) {
    Write-Host "错误: 找不到字幕文件 -> $SubtitlePath" -ForegroundColor Red
    Read-Host "按任意键退出"; exit 1
}

if ([string]::IsNullOrWhiteSpace($OutputDir)) {
    $OutputDir = Split-Path -Parent $VideoPath
} elseif (-not (Test-Path -LiteralPath $OutputDir)) {
    New-Item -ItemType Directory -Force -Path $OutputDir | Out-Null
}

$FileName = [System.IO.Path]::GetFileNameWithoutExtension($VideoPath)
$OutputFile = Join-Path $OutputDir ("{0}_hardsub.{1}" -f $FileName, $OutContainer)

# 正确转义含空格的字幕路径
$EscapedSubPath = $SubtitlePath -replace '\\', '/' -replace ':', '\:' -replace "'", "\'"


# ============ 新增: 字幕与字体预检 ============
Write-Host "正在预检字幕文件和字体..." -ForegroundColor Cyan
$PreCheckArgs = @(
    "-hide_banner",
    "-loglevel", "warning",
    "-i", $VideoPath,
    "-vf", "subtitles='$EscapedSubPath'",
    "-frames:v", "1",           # 只测试1帧,速度极快
    "-f", "null",               # 不输出实体文件
    "-"
)

# 捕获预检输出 (合并 stderr 和 stdout)
$PreCheckOutput = & ffmpeg $PreCheckArgs 2>&1

# 检查是否包含指定的 libass 字体报错/回退警告
$FontError = $PreCheckOutput | Where-Object { 
    $_ -match "Using default font" -or 
    $_ -match "fontselect:" -or 
    $_ -match "Glyph .* not found" -or
    $_ -match "Cannot load default config file"
}

if ($FontError) {
    Write-Host "`n[致命错误] 字幕字体预检失败!系统缺失 ASS 中指定的字体,FFmpeg 已强制回退为默认字体。" -ForegroundColor Red
    Write-Host "拦截到的底层报错信息如下:" -ForegroundColor Yellow
    $FontError | ForEach-Object { Write-Host "  $_" }
    Read-Host -Prompt "`n请安装缺失字体,或检查字幕文件配置后再试。按任意键退出"
    exit 1
}
# ==============================================


# 2. 确定编码器参数
$VideoCodec = ""
$QualityArgs = @()

if ($UseGPU) {
    if ($EncFormat -eq "av1") { $VideoCodec = "av1_nvenc" } 
    elseif ($EncFormat -eq "h265") { $VideoCodec = "hevc_nvenc" } 
    else { $VideoCodec = "h264_nvenc" }
    $QualityArgs = @("-cq", "$Quality", "-b:v", "0")
} else {
    if ($EncFormat -eq "av1") { $VideoCodec = "libsvtav1" } 
    elseif ($EncFormat -eq "h265") { $VideoCodec = "libx265" } 
    else { $VideoCodec = "libx264" }
    $QualityArgs = @("-crf", "$Quality")
}

# 3. 构建FFmpeg参数数组 (修复了 PowerShell 数组传递时自带双引号导致路径解析失败的隐患)
$FFmpegArgs = @(
    "-hide_banner",
    "-loglevel", "warning",
    "-stats",
    "-i", $VideoPath,
    "-vf", "subtitles='$EscapedSubPath'",
    "-c:v", $VideoCodec,
    "-preset", $Speed
) + $QualityArgs + @(
    "-c:a", "copy",
    "-sn",
    "-y",
    $OutputFile
)

Write-Host "开始处理: $FileName (编码: $EncFormat | 画质: $Quality)" -ForegroundColor Cyan

# 执行FFmpeg
$StartTime = Get-Date
& ffmpeg $FFmpegArgs
$ExitCode = $LASTEXITCODE
$EndTime = Get-Date

# 结果判断
if ($ExitCode -eq 0) {
    Write-Host "`n[成功] 视频导出完毕,耗时: $(($EndTime - $StartTime).ToString('hh\:mm\:ss'))" -ForegroundColor Green
} else {
    Write-Host "`n[失败] FFmpeg 退出异常 (代码: $ExitCode),请检查上方输出。" -ForegroundColor Red
}

Read-Host -Prompt "`n按任意键关闭窗口"

然后我比较喜欢用 powershell,所以都让写的 powershell 脚本,你也可以让 AI 编写 cmd 脚本,没差儿。

结语

FFmpeg 的魅力在于它的"轻量"与"强大"。虽然刚开始接触命令行可能会让人感到有些陌生,有畏难情绪,但这东西玩着玩着就明白了,甚至上头之后反而可能不喜欢有图形界面的[doge],总之别给自己设限,多尝试一下。

今日互动: 你第一次接触 FFmpeg 是用来解决什么问题的?欢迎分享你的故事。

相关推荐
0110编程之路2 小时前
Wine & Ubuntu 调用 Windows 应用
linux·windows·ubuntu
Roc-xb2 小时前
Windows MySQL 密码忘记了如何重置密码?
windows·mysql
春日见2 小时前
深度神经网络的底层数学原理
运维·服务器·windows·深度学习·自动驾驶
我不是懒洋洋17 小时前
预处理详解
c语言·开发语言·c++·windows·microsoft·青少年编程·visual studio
人工智能训练18 小时前
从 1.1.3 到 1.13.2!Ubuntu 24.04 上 Dify 升级保姆级教程(零数据丢失 + 一键迁移)
linux·运维·人工智能·windows·ubuntu·dify
mldlds18 小时前
Windows安装Redis图文教程
数据库·windows·redis
softbangong19 小时前
815-批量Excel文件合并工具,批量excel文件、工作表合并软件
linux·windows·excel·文件合并·excel合并·数据整理
烛之武20 小时前
Nacos3.2.0下载安装教程(Windows版本)
windows
竹之却20 小时前
【OpenClaw】云服务器端 openclaw 集成本地 Windows端 ollama 模型
windows·llama·ollama·openclaw·qwen3.5