Skip to content

Instantly share code, notes, and snippets.

@cornradio
Created October 11, 2025 13:58
Show Gist options
  • Select an option

  • Save cornradio/dfaec9b0e9f7648b80fff92871df9bd5 to your computer and use it in GitHub Desktop.

Select an option

Save cornradio/dfaec9b0e9f7648b80fff92871df9bd5 to your computer and use it in GitHub Desktop.
@echo off
setlocal enabledelayedexpansion
:: 设置 FFmpeg 的路径,如果已添加到环境变量则无需修改
:: 如果未添加到环境变量,请修改为你的 FFmpeg 可执行文件的完整路径,例如:
:: set "FFMPEG_PATH=C:\Program Files\ffmpeg\bin\ffmpeg.exe"
set "FFMPEG_PATH=ffmpeg.exe"
:: 源文件夹 (要压缩的 MP4 文件所在目录)
set "SOURCE_DIR=E:\素材"
:: 目标文件夹 (压缩后文件保存的目录)
set "OUTPUT_DIR=E:\素材\压缩"
:: 压缩参数 (可根据需要调整 CRF 值和 preset)
:: -crf 28: 建议的视频质量控制参数,值越小质量越高文件越大。范围18-30尝试。
:: -preset slow: 压缩速度与文件大小的平衡,越慢压缩效果越好,但耗时。
set "FFMPEG_PARAMS=-c:v hevc_nvenc -cq 30 -preset p5 -c:a aac -b:a 96k -vf scale=1920:-1"
echo.
echo =========================================================
echo 开始批量压缩 MP4 文件
echo 源目录: %SOURCE_DIR%
echo 目标目录: %OUTPUT_DIR%
echo 压缩参数: %FFMPEG_PARAMS%
echo =========================================================
echo.
:: 检查 FFmpeg 是否可用
where %FFMPEG_PATH% >nul 2>nul
if %errorlevel% neq 0 (
echo 错误:FFmpeg 未找到!请确保 FFmpeg 已添加到系统环境变量,
echo 或在脚本中手动设置 FFMPEG_PATH 变量为 FFmpeg 可执行文件的完整路径。
echo.
pause
goto :eof
)
:: 创建输出目录 (如果不存在)
if not exist "%OUTPUT_DIR%" (
echo 创建输出目录: %OUTPUT_DIR%
mkdir "%OUTPUT_DIR%"
)
:: 遍历源文件夹中的所有 MP4 文件
for %%f in ("%SOURCE_DIR%\*.mp4") do (
set "INPUT_FILE=%%f"
set "OUTPUT_FILE=!OUTPUT_DIR!\%%~nf_compressed.mp4"
echo.
echo ----------------------------------------------------
echo 正在处理文件: !INPUT_FILE!
echo 目标文件: !OUTPUT_FILE!
echo ----------------------------------------------------
:: 执行 FFmpeg 压缩
"%FFMPEG_PATH%" -i "!INPUT_FILE!" %FFMPEG_PARAMS% "!OUTPUT_FILE!"
if %errorlevel% equ 0 (
echo 成功压缩: !INPUT_FILE!
) else (
echo 错误:压缩 !INPUT_FILE! 失败!
)
echo.
)
echo.
echo =========================================================
echo 所有 MP4 文件处理完毕!
echo =========================================================
echo.
pause
endlocal
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment