首页 文章

如何使用FFmpeg 2 Pass批量转换?

提问于
浏览
0

我正在使用FFmpeg将webm转换为mp4 .

我的批处理文件是

cd "C:\Users\Matt\Desktop\" && for %f in (*.webm) do ffmpeg -y -i "C:\Users\Matt\Desktop\%~f" -vcodec libx264 -b:v 600K -pass 1 -acodec aac -b:a 128k "C:\Users\Matt\Desktop\%~nf.mp4" && ffmpeg -y -i "C:\Users\Matt\Desktop\" -vcodec libx264 -b:v 600K -pass 2 -acodec aac -b:a 128k "C:\Users\Matt\Desktop\%~nf.mp4"

它适用于CRF和1 Pass,但使用2 Pass它会在第二次传递时停止并给出错误:

C:\ Users \ Matt \ Desktop“-vcodec libx264 -b:v 600K -pass 2 -acodec aac -b:a 128k C:\ Users \ Matt \ Desktop \ video:参数无效

路径上缺少第一个双引号,文件名“video 01.mp4”被截断 .

1 回答

  • 2

    您的代码只能直接在cmd中工作,在批处理中您必须将for变量的百分号加倍 .
    批量 生产环境 中不需要一个衬管 .
    我希望这更清楚,更有效 .

    @Echo off
    Pushd "C:\Users\Matt\Desktop\"
    for %%f in (*.webm) do (
      ffmpeg -y -i "%%~f" -vcodec libx264 -b:v 600K -pass 1 -acodec aac -b:a 128k -f mp4 NUL 
      ffmpeg -y -i "%%~nf_tmp.mp4" -vcodec libx264 -b:v 600K -pass 2 -acodec aac -b:a 128k "%%~nf.mp4"
    )
    PopD
    Pause
    

相关问题