Batch file 如何使用ffmpeg同时转换多个文件?

Batch file 如何使用ffmpeg同时转换多个文件?,batch-file,ffmpeg,Batch File,Ffmpeg,我需要转换许多avi文件(超过100)到mp4使用ffmpeg。我制作了一个像这样的批处理文件,它可以正常工作 ffmpeg.exe -i "A.avi" -s 320x240 "A.mp4" ffmpeg.exe -i "B.avi" -s 320x240 "B.mp4" ffmpeg.exe -i "C.avi" -s 320x240 "C.mp4" ffmpeg.exe -i "D.avi" -s 320x240 "D.mp4" ... 问题是它们是按顺序发生的,而不是同时发生的,因此需

我需要转换许多avi文件(超过100)到mp4使用ffmpeg。我制作了一个像这样的批处理文件,它可以正常工作

ffmpeg.exe -i "A.avi" -s 320x240 "A.mp4"
ffmpeg.exe -i "B.avi" -s 320x240 "B.mp4"
ffmpeg.exe -i "C.avi" -s 320x240 "C.mp4"
ffmpeg.exe -i "D.avi" -s 320x240 "D.mp4"
...

问题是它们是按顺序发生的,而不是同时发生的,因此需要花费太多的时间。我的CPU是8核,64位,8G内存,所以我想最好尽可能同时使用它们。我该怎么办?

您可以通过
-threads
参数设置ffmpeg可以使用的最大线程数,但是这不能保证它完全使用cpu

ffmpeg -i ... -threads 8 ...
如果不想从批处理脚本并行运行多个转码作业,可以尝试使用
start
命令启动它们。 因为您有100多个作业,所以您可能希望将它们分割成更小的批处理脚本,以便并行运行

Start_all.bat:

start batch_1.bat
start batch_2.bat
批次1.bat

ffmpeg -i ...
ffmpeg -i ...
ffmpeg -i ...    
批次2.bat

ffmpeg -i ...
ffmpeg -i ...
ffmpeg -i ...    

你确定ffmpeg不是多线程的吗?是的,我确定。控制台在一个文件中逐行显示,每行显示完成后,它会启动下一个文件。这并不意味着它不是多线程的。编码器可以为每个文件生成多个工作线程,这将使并行处理毫无意义。