如何创建 FFMPEG VIDSTAB 批处理脚本窗口



>我是一名摄影师,我将照片(.jpg(和视频(.mov(下载到一个Windows文件夹中

我希望创建一个脚本,该脚本将为文件夹中的每个.mov实例运行以下 3 行 FFMPEG,并让它创建视频的稳定.mp4副本。稍后我将手动删除原件。

ffmpeg -i DSCF0229.MOV -vf vidstabdetect=shakiness=5:accuracy=15:stepsize=6:mincontrast=0.3:show=2 -y dummy.mp4
ffmpeg -i DSCF0229.MOV -vf scale=trunc((iw*1.15)/2)*2:trunc(ow/a/2)*2 -y scaled.mp4
ffmpeg -i scaled.mp4 -vf vidstabtransform=smoothing=30:input="transforms.trf":interpol=linear:crop=black:zoom=0:optzoom=1,unsharp=5:5:0.8:3:3:0.4 -y DSCF0229stabilized.mp4

我可以调整一些代码,但我不知道从哪里开始。 我尝试了"for do",甚至是批处理.bat文件,但我就是无法正确获得正确的语法。

非常感谢这里的任何帮助!!

至于问题的ffmpeg部分:

ffmpeg -y -i DSCF0229.MOV -vf vidstabdetect=shakiness=5:accuracy=15:stepsize=6:mincontrast=0.3:show=2 -an -f null -
ffmpeg -i DSCF0229.MOV -vf vidstabtransform=smoothing=30:input="transforms.trf":interpol=linear:crop=black:zoom=0:optzoom=1,unsharp=5:5:0.8:3:3:0.4 -c:a copy DSCF0229stabilized.mp4
  • 无需为第一个命令输出视频,除非您确实想查看字段和转换。跳过这将节省时间。添加了-an以避免音频处理,因为第一个命令不需要这样做。

  • 我认为没有理由升级 15%,所以跳过它。该步骤会导致不必要的生成丢失,因为它不必要地重新编码。如果您真的想升级,那么只需在未锐利的过滤器之后添加比例过滤器,您就可以避免生成损失。

  • 假设输入音频已经是 AAC,您可以流式复制它 (-c:a copy( 并避免重新编码它。

要执行此任务,通常需要使用 for 循环。若要了解如何使用命令,请通过打开命令提示符窗口并输入for /?来使用该命令的内置帮助和使用信息

下面是一个使用基本循环的示例,批处理文件与.mov文件位于同一目录中:

@For %%A In (*.mov)Do @(
ffmpeg -i "%%A" -vf vidstabdetect=shakiness=5:accuracy=15:stepsize=6:mincontrast=0.3:show=2 -y "dummy.mp4"
ffmpeg -i "%%A" -vf scale=trunc((iw*1.15^)/2^)*2:trunc(ow/a/2^)*2 -y "scaled.mp4"
ffmpeg -i "scaled.mp4" -vf vidstabtransform=smoothing=30:input="transforms.trf":interpol=linear:crop=black:zoom=0:optzoom=1,unsharp=5:5:0.8:3:3:0.4 -y "%%~nAstabilized.mp4"
)

您会注意到,由于ffmpeg命令位于括号块内,因此我已对这些命令行中的每个右括号进行了转义(使用插入符号^(,以防止do块过早关闭。

上面的代码假设ffmpeg.exe位于当前目录中的批处理文件旁边,位于%PATH%中的某个位置,或者有一个注册表项,允许它运行,而不管是否需要完整路径。如果没有,则需要在可执行文件前面加上该路径。

最新更新