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


当前回答

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

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

-d表示深度

-x表示执行

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

其他回答

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

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

这将从当前目录中的所有jpg文件创建mp4视频。

echo exec("ffmpeg -framerate 1/5 -i photo%d.jpg -r 25 -pix_fmt yuv420p output.mp4");

我知道这可能是多余的,但我使用这个脚本批量转换文件。

old_extension=$1
new_extension=$2

for i in *."$old_extension";
  do ffmpeg -i "$i" "${i%.*}.$new_extension";
done

它需要2个参数使其更灵活:

要转换的扩展名 要转换的新扩展名

我为它创建了一个别名,但你也可以手动使用它,像这样:

sh batch_convert.sh mkv mp4

这将把所有的mkv文件转换为mp4文件。

正如你所看到的,它更多功能。只要ffmpeg可以转换它,您就可以指定任何两个扩展。

@Linux 为了转换一堆,我的一行代码是这样的 (。Avi到。mkv)在同一目录:

for f in *.avi; do ffmpeg -i "${f}" "${f%%.*}.mkv"; done

请注意输出语句中的两个“%%”。它不仅提供了第一个单词或输入文件名,还提供了最后一个点之前的所有内容。

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

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