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


当前回答

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

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

-d表示深度

-x表示执行

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

其他回答

如果你不想转换文件,只是复制编解码器使用下面的代码

for %i in (*.mkv) do ffmpeg -i "%i" -codec copy "%~ni.mp4"

这样可以减少转换时间。

如果您想要一个图形界面来使用ffmpegX进行批处理,请尝试Quick Batcher。它是免费的,并将使用您最后的ffmpegX设置来转换您放入其中的文件。

注意,不能将文件夹拖放到Quick Batcher上。所以选择文件,然后把他们通过快速批处理。

前面的答案只会创建一个名为out.mov的输出文件。要为每一部老电影创建一个单独的输出文件,可以试试这个方法。

for i in *.avi;
  do name=`echo "$i" | cut -d'.' -f1`
  echo "$name"
  ffmpeg -i "$i" "${name}.mov"
done

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

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

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

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

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

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