如何通过命令行或批处理脚本与ffmpeg转换整个目录/文件夹?


当前回答

我为此开发了一个python包。

https://github.com/developer0hye/BatchedFFmpeg

您可以轻松地安装和使用它。

pip install batchedffmpeg
batchedffmpeg * -i folder * output_file

其他回答

窗口:

@echo off
for /r %%d in (*.wav) do (
    ffmpeg -i "%%~nd%%~xd" -codec:a libmp3lame -c:v copy -qscale:a 2 "%

%~nd.2.mp3"
)

这是质量2的可变比特率,如果你想,你可以把它设置为0,但除非你有一个非常好的扬声器系统,否则在我看来这是毫无价值的

在Windows上,用于子目录中的文件

FOR /F "tokens=*" %G IN ('dir /s /b /o:gn *.mp4') DO ffmpeg -i "%G" -c copy "%~pG%~nG.mkv"

这将所有mp4文件转换为mkvs,包括子目录中的文件,并将mkv文件放在mp4文件所在的位置,即文件C:\temp\test.mp4将其对应的mkv文件放在C:\temp\test.mkv中

另一个简单的解决方案是使用xargs:

ls *。Avi | xargs -i -n1 ffmpeg -i {} "{}.mp4"

一个小缺陷是输出文件的尴尬命名(例如input.avi.mp4)。一个可能的解决方法是:

ls *。Avi | xargs -i -n1 bash -c "i={};Ffmpeg -i {} "\${i%.*}.mp4""

Windows:

这里我正在将所有(.mp4)文件转换为(.mp3)文件。 只需打开cmd,转到所需的文件夹并键入命令。 快捷方式:(可选) 1. 转到(.mp4)文件所在的文件夹 2. 按Shift键,点击左键,选择“在这里打开PowerShell窗口” 或“此处打开命令提示窗口” 3.输入“cmd”[注意:如果它直接打开cmd而不是PowerShell,则跳过此步骤] 4. 执行命令

for %i in (*.mp4) do ffmpeg -i "%i" "%~ni.mp3"

如果你想把它放到Windows 10的批处理文件中,你需要使用%%i。

一行bash脚本很容易完成——替换*。Avi与您的文件类型:

for i in *.avi; do ffmpeg -i "$i" -qscale 0 "$(basename "$i" .avi)".mov  ; done