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


当前回答

要转换子目录,请使用例如。

find . -exec ffmpeg -i {} {}.mp3 \;

其他回答

窗口:

@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,但除非你有一个非常好的扬声器系统,否则在我看来这是毫无价值的

如果你有GNU并行,你可以将vid_dir以下的所有。avi文件并行转换为mp4,使用你的CPU内核

find vid_dir -type f -name '*.avi' -not -empty -print0 |
    parallel -0 -j -1 ffmpeg -loglevel fatal -i {} {.}.mp4

要从/转换为不同的格式,请更改'*。Avi '或。mp4。GNU parallel在大多数Linux发行版的存储库中以一个通常称为parallel的包的形式列出。

为了逗你笑,这里有鱼壳的解决方案:

for i in *.avi; ffmpeg -i "$i" (string split -r -m1 . $i)[1]".mp4"; end

要转换子目录,请使用例如。

find . -exec ffmpeg -i {} {}.mp3 \;

使用fd命令(存储库)的替代方法:

cd directory
fd -d 1 mp3 -x ffmpeg -i {} {.}.wav

-d表示深度

-x表示执行

{。没有文件扩展名的}路径