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


当前回答

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

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

这样可以减少转换时间。

其他回答

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

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

对于Windows,这是行不通的

FOR /F "tokens=*" %G IN ('dir /b *.flac') DO ffmpeg -i "%G" -acodec mp3 "%~nG.mp3"

即使我做了双倍的%。

我甚至建议:

-acodec ***libmp3lame***

另外:

FOR /F "tokens=*" %G IN ('dir /b *.flac') DO ffmpeg -i "%G" -acodec libmp3lame "%~nG.mp3"

在Windows上,用于子目录中的文件

FOR /F "tokens=*" %G IN ('dir /s /b /o:gn *.mp4') DO ffmpeg -i "%G" -c copy "%~pG%~nG.mkv"

这将所有mp4文件转换为mkvs,包括子目录中的文件,并将mkv文件放在mp4文件所在的位置,即文件C:\temp\test.mp4将其对应的mkv文件放在C:\temp\test.mkv中

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

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

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

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

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