Windows CMD 批处理脚本 FFmpeg

Windows CMD Batch Script FFmpeg

我创建了一个批处理文件 (.bat),它使用 FFmpeg 将各种视频(文件扩展名为 *.mov 或 *.mp4)从输入文件夹转码到输出文件夹(扩展名为 *.mkv)作为批处理(Windows 10 环境)。 输入文件夹中的文件名(无扩展名)应复制到新创建的输出文件名(具有新文件扩展名 *.mkv)。

@echo off

set CMD=ffmpeg -c:v ffv1 -level 3 -g 1 -coder 1 -context 1 -pix_fmt + -slices 24 -slicecrc 1 -report -c:a pcm_s24le

FOR /R input_folder %%G IN (*.mov,*.mp4) DO (
   echo %%G
   call set outputfile=%%~nG%.mkv
   call set inputfile=%%~nG%%~xG
   echo %CMD% -y output_folder/%outputfile% -i %inputfile%
)

但是这个脚本没有按预期工作,即没有任何反应。 您是否知道如何解决这个问题? 提前致谢!

这里有一个例子,显示了我从评论中提出的建议,并根据评论中的要求添加了文件删除。 这假设 ffmpeg returns 成功时的错误级别为 0(如果处理失败,您不想删除它们),并且存在一个名为 output_folder, 在当前工作目录下.

@Echo Off
SetLocal EnableExtensions
Set "CMD=ffmpeg.exe -c:v ffv1 -level 3 -g 1 -coder 1 -context 1 -pix_fmt +"
Set "CMD=%CMD% -slices 24 -slicecrc 1 -report -c:a pcm_s24le"

For /R "input_folder" %%G In (*.mov *.mp4) Do (
    Echo %%G
    %CMD% -y "output_folder\%%~nG.mkv" -i "%%G"
    If Not ErrorLevel 1 Del /A /F "%%G"
)