如何通过命令行或批处理脚本与ffmpeg转换整个目录/文件夹?
当前回答
如果你不想转换文件,只是复制编解码器使用下面的代码
for %i in (*.mkv) do ffmpeg -i "%i" -codec copy "%~ni.mp4"
这样可以减少转换时间。
其他回答
使用fd命令(存储库)的替代方法:
cd directory
fd -d 1 mp3 -x ffmpeg -i {} {.}.wav
-d表示深度
-x表示执行
{。没有文件扩展名的}路径
另一个简单的解决方案是使用xargs:
ls *。Avi | xargs -i -n1 ffmpeg -i {} "{}.mp4"
一个小缺陷是输出文件的尴尬命名(例如input.avi.mp4)。一个可能的解决方法是:
ls *。Avi | xargs -i -n1 bash -c "i={};Ffmpeg -i {} "\${i%.*}.mp4""
对于Linux和macOS,这可以在一行中完成,使用参数展开来更改输出文件的扩展名:
for i in *.avi; do ffmpeg -i "$i" "${i%.*}.mp4"; done
如果您想要一个图形界面来使用ffmpegX进行批处理,请尝试Quick Batcher。它是免费的,并将使用您最后的ffmpegX设置来转换您放入其中的文件。
注意,不能将文件夹拖放到Quick Batcher上。所以选择文件,然后把他们通过快速批处理。
如果你有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的包的形式列出。