已提供FFmpeg批量压缩视频的完整方案:包括环境验证、PowerShell智能筛选压缩(按大小阈值/跳过已存在文件)、批处理双击运行三套方法,均输出H.264+AAC编码的MP4文件。

想把D盘“待处理视频”文件夹里53个MP4、MOV和AVI文件在不明显损失画质的前提下批量压到微信能发出去的大小,又不想一个个点开软件手动操作。
确认FFmpeg已就位并能被系统识别
按 Win+R 输入 cmd 回车,在黑窗口里直接敲 ffmpeg -version 并回车。如果看到类似 “ffmpeg version 6.1.1” 的输出,说明已安装且环境变量配置正确;【若提示“不是内部或外部命令”,必须先完成环境变量配置,否则后续所有命令都会失败】。没装的话,去 https://github.com/BtbN/FFmpeg-Builds/releases 下载最新 full 版,解压后把 bin 文件夹路径加进系统 PATH。
用PowerShell一行命令批量压缩当前文件夹下所有视频
进入目标文件夹(例如 D:\待处理视频),在空白处按住 Shift + 右键 → 选择“在此处打开 PowerShell 窗口”。
粘贴执行以下命令:
Get-ChildItem *.mp4, *.mov, *.avi | ForEach-Object { ffmpeg -i $_.FullName -c:v libx264 -crf 25 -preset medium -c:a aac -b:a 128k "$($_.BaseName)_压缩.mp4" }
这条命令会自动遍历当前目录所有 .mp4/.mov/.avi 文件,用 H.264 编码 + CRF 25 质量 + AAC 音频生成同名带“_压缩”后缀的新 MP4 文件。CRF 25 是兼顾体积与画质的甜点值,比默认 23 略松一点,对微信/邮件等场景更友好。
按文件大小阈值智能筛选再压缩
方法一:只压缩超过 100MB 的大视频(避免小文件越压越大)
在相同 PowerShell 窗口中运行:
Get-ChildItem *.mp4, *.mov, *.avi | Where-Object { $_.Length -gt 100MB } | ForEach-Object { ffmpeg -i $_.FullName -c:v libx264 -crf 26 -c:a aac -b:a 96k "$($_.BaseName)_压缩.mp4" }
让 Windows 桌面程序在开机时静默自启并隐藏到系统托盘。特别适用于 Flutter、Electron 等无视 VBS/ProcessStartInfo 窗口样式、难以隐藏的顽固应用。提供「VBS 启动器 + Python ctypes/Win32 API」的隐藏窗口方案,可稳定把窗口收进托盘且不闪控制台。
方法二:跳过已存在压缩版的文件(防止重复处理)
Get-ChildItem *.mp4, *.mov, *.avi | Where-Object { -not (Test-Path "$($_.BaseName)_压缩.mp4") } | ForEach-Object { ffmpeg -i $_.FullName -c:v libx264 -crf 25 -c:a aac "$($_.BaseName)_压缩.mp4" }
这一步会主动跳过已有“xxx_压缩.mp4”的源文件,避免覆盖或重复生成。注意:PowerShell 中 -not 和 Test-Path 必须配合使用,缺一不可。
用批处理脚本实现双击即压的傻瓜流程
第一步:用记事本新建一个文本文件,把下面内容完整复制进去:
@echo off
setlocal enabledelayedexpansion
for %%a in (*.mp4 *.mov *.avi) do (
ffmpeg -i "%%a" -c:v libx264 -crf 24 -preset fast -c:a aac -b:a 128k "%%~na_压缩.mp4"
)
pause
第二步:将文件另存为 compress_all.bat,保存类型选“所有文件”,编码选 ANSI(不要 UTF-8)。
第三步:把这个 .bat 文件复制到你的视频文件夹里,双击运行即可。它会静默处理所有匹配格式的视频,完成后停住等待你按任意键退出——【务必确认当前目录就是目标视频所在目录,否则脚本会处理错地方】。










