You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用FFmpeg批量调整嵌套文件夹中视频的自适应尺寸(按宽高比缩放)

如何使用FFmpeg批量调整嵌套文件夹中视频的自适应尺寸(按宽高比缩放)

我明白你要的是那种自适应宽高比的缩放——不管视频是横屏还是竖屏,都把最长边缩到指定尺寸,短边按比例自动适配,同时还要批量处理嵌套文件夹里的所有视频,处理完删掉原文件对吧?我来帮你一步步解决这些问题:

一、先修正你的CMD命令问题

你原来的命令有几个小错误,我先帮你改过来,同时调整缩放逻辑到你想要的效果:

1. 错误点说明

  • 变量引用错误:你用了%~f,但循环变量是%i,正确的完整路径引用应该是%~fi
  • 缩放滤镜不符合需求:原来的scale='min(300,iw)':'min(300,ih)'会把视频强制缩到300x300的正方形,完全破坏比例,这和你要的ImageMagick300x300^>效果不符
  • 文件名后缀逻辑:用时间戳不如直接加个清晰的后缀(比如_scaled),更容易识别

2. 修正后的CMD命令(直接在CMD窗口运行)

FOR /R %i in (*.mp4) DO (
    ffmpeg -i "%~fi" -vf "scale='w=if(gt(iw/ih,1),300,-1):h=if(gt(iw/ih,1),-1,300)'" -preset veryfast "%~dpni_scaled%~xi"
    IF %errorlevel% EQU 0 del /q "%~fi"
)

命令解释

  • FOR /R %i in (*.mp4):递归遍历当前目录及所有子文件夹里的MP4文件
  • ffmpeg的scale滤镜:判断视频宽高比,如果是横屏(宽>高)就把宽度缩到300,高度自动按比例计算;如果是竖屏(高>宽)就把高度缩到300,宽度自动适配,完美保持原比例
  • "%~dpni_scaled%~xi":生成带_scaled后缀的输出文件,和原文件在同一目录(%~dp是原文件的路径,%~n是原文件名,%~x是原扩展名)
  • IF %errorlevel% EQU 0 del /q "%~fi":只有当FFmpeg转换成功(错误码为0)时,才删除原文件,避免转换失败丢失视频

如果是写成批处理文件(.bat),记得把所有%i改成%%i,比如:

@echo off
FOR /R %%i in (*.mp4) DO (
    ffmpeg -i "%%~fi" -vf "scale='w=if(gt(iw/ih,1),300,-1):h=if(gt(iw/ih,1),-1,300)'" -preset veryfast "%%~dpni_scaled%%~xi"
    IF %%errorlevel%% EQU 0 del /q "%%~fi"
)

二、PowerShell版本方案

如果你更习惯用PowerShell,这个脚本同样能实现需求:

Get-ChildItem -Path . -Filter *.mp4 -Recurse | ForEach-Object {
    $outputPath = Join-Path $_.DirectoryName ($_.BaseName + "_scaled" + $_.Extension)
    ffmpeg -i $_.FullName -vf "scale='w=if(gt(iw/ih,1),300,-1):h=if(gt(iw/ih,1),-1,300)'" -preset veryfast $outputPath
    if ($LASTEXITCODE -eq 0) {
        Remove-Item $_.FullName -Force
    }
}

三、Git Bash(WSL)版本方案

如果用Git Bash或者Linux环境,用find命令递归处理:

find . -type f -name "*.mp4" | while read -r file; do
    output="${file%.*}_scaled.${file##*.}"
    ffmpeg -i "$file" -vf "scale='w=if(gt(iw/ih,1),300,-1):h=if(gt(iw/ih,1),-1,300)'" -preset veryfast "$output"
    if [ $? -eq 0 ]; then
        rm -f "$file"
    fi
done

重要提醒

  1. 先测试单个文件:先拿一个视频单独用FFmpeg命令测试,确认缩放效果符合预期后再批量处理
  2. 备份重要视频:虽然加了错误判断,但还是建议先备份原视频,避免意外情况
  3. FFmpeg路径:确保FFmpeg已经添加到系统环境变量里,或者用完整路径调用(比如C:\ffmpeg\bin\ffmpeg.exe)

备注:内容来源于stack exchange,提问作者cudnn_account

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 10:07:41