windows - 如何使用 Batch For Loop 执行 ffmpeg

标签 windows for-loop batch-file ffmpeg scripting

FOR %%A IN (%*) DO ffmpeg -y -i %%A -c:v prores_ks -profile:v 3 -c:a pcm_s16le "%%~dpA%%~nA.mov"

该批处理文件旨在获取多个拖放到其上的文件,并使用 ffmpeg 对其进行转码。该命令导致一大堆与该命令相似的打印输出,但它不执行。我也尝试过使用 start cmd.exe/c,但这会导致打开许多窗口,需要重新启动计算机。

编辑: Squash 手已经明确表示,这个解决方案无论如何都行不通(谢谢!)。但是,我已编辑脚本以一次仅对单个文件执行操作,但它仍然无法按预期执行并导致循环打印输出。
ffmpeg -y -i %%1 -c:v prores_ks -profile:v 3 -c:a pcm_s16le "%%~dp1%%~n1.mov"

如何修改此脚本以正确执行 ffmpeg?

编辑2:通过将文件夹拖放到批处理脚本上来解决。
cd /d %1
md output
FOR /F %%A IN ('dir /B %1') do ffmpeg -y -i %%A -c:v prores_ks -profile:v 3 -c:a pcm_s16le "output/%%~nA.mov"
pause

最佳答案

期望所有 .mov 文件都驻留在当前目录中。如果没有,请将路径添加到“*.mov”和“%%~A.mov”中。

FOR /F "tokens=1,2 delims=." %%A IN ('dir /B *.mov') do ffmpeg -y -i %%A -c:v prores_ks -profile:v 3 -c:a pcm_s16le "%%~A.mov"

另一种方法是使用 PPX http://www.pirosa.co.uk/demo/wxargs/wxargs.html并利用所有 CPU 内核加速整个过程
dir /b *.%required_file_extension% |ppx2 -P 4 -L 1 ffmpeg -y -i %%A -c:v prores_ks -profile:v 3 -c:a pcm_s16le "{}.mov"

关于windows - 如何使用 Batch For Loop 执行 ffmpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60310563/

相关文章:

windows - 如何在Windows Vista及以上系统进入Windows Flip 3D模式?

c++ - 为什么我只需要在我将开发使用 ffmpeg 库的应用程序的 PC 上直接编译 ffmpeg?

python - 如何为/: 'str' and 'int' in for loops处理不受支持的操作数类型

java - Java 中的批处理文件进程被终止 : xcopy does not close

windows - 在带有 SVN 修订号的 MFC 应用程序中以编程方式更新 FILEVERSION

windows - 如何在动态创建的 silverlight 子窗口中显示 html 页面

python - append 在 for 循环中创建的数据帧

python - for循环中的递增计数器

windows - 是否有用于将用户添加到高级用户组的批处理脚本?

windows - 如何检查 %PATH% 中是否存在目录?