ffmpeg 一次处理多个文件

ffmpeg 一次处理多个文件

我在批处理文件中有这个 FFmepg 脚本:

for %%a in ("*.mp4*") do ffmpeg -i "%%a" -y -c:v prores_ks -profile:v proxy -pix_fmt yuv422p10le -vendor ap10 -bits_per_mb 8000  -vf "scale=1920:1080" -c:a pcm_s16le -ar 48K "..\%%~na.mov"

它将把.mp4所在文件夹中的所有文件渲染.mov到上一个文件夹中。

问题是我想优化这个过程并更多地利用硬件,同时渲染 4 个视频,但我没有找到编写脚本的方法,以便分析.mp4文件夹中有多少个文件并将这些文件分成 4 个 ffmpeg 实例。

知道怎样做吗?

答案1

为了优化流程并通过一次渲染多个文件来充分利用硬件,您可以使用 Windows 中的 start 命令同时运行 ffmpeg 命令的多个实例。以下是您可以如何修改脚本来执行此操作的示例:

@echo off
setlocal enabledelayedexpansion

set counter=0
set max_instances=4

for %%a in ("*.mp4*") do (
  set /a counter+=1
  set /a counter_mod=!counter! %% !max_instances!
  if !counter_mod! equ 0 (
    start "" "ffmpeg" -i "%%a" -y -c:v prores_ks -profile:v proxy -pix_fmt yuv422p10le -vendor ap10 -bits_per_mb 8000  -vf "scale=1920:1080" -c:a pcm_s16le -ar 48K "..\%%~na.mov"
  ) else (
    ffmpeg -i "%%a" -y -c:v prores_ks -profile:v proxy -pix_fmt yuv422p10le -vendor ap10 -bits_per_mb 8000  -vf "scale=1920:1080" -c:a pcm_s16le -ar 48K "..\%%~na.mov"
  )
)

此脚本将同时启动最多 4 个 ffmpeg 实例,每个实例处理一个文件。当一个实例处理完一个文件后,它将开始处理下一个文件,直到处理完所有文件。

cmd /v:on /c "your_script.bat"

相关内容