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


当前回答

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

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

其他回答

对于Linux和macOS,这可以在一行中完成,使用参数展开来更改输出文件的扩展名:

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

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

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

我用这个为Windows上的电视节目或电影添加字幕。

只需在视频和子目录中创建“subbed”文件夹和bat文件。将代码放入bat文件并运行。

for /R  %%f in (*.mov,*.mxf,*.mkv,*.webm) do (
    ffmpeg.exe  -i "%%~f" -i "%%~nf.srt" -map 0:v -map 0:a -map 1:s -metadata:s:a language=eng -metadata:s:s:1 language=tur -c copy ./subbed/"%%~nf.mkv"
    )

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

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

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

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

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

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