>我是一名摄影师,我将照片(.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%
中的某个位置,或者有一个注册表项,允许它运行,而不管是否需要完整路径。如果没有,则需要在可执行文件前面加上该路径。