问一下上面这串命令,长图向上滚动,能不能改成播放速度指定,并且播放时间根据图片高度和播放速度计算,播放前停顿2秒钟然后继续播放:
ffmpeg -r 1 -loop 1 -t 61 -i 1.png -filter_complex "color=white:s=1170x720, fps=fps=60[bg];[bg][0]overlay=y=-'t*120':shortest=1[video]" -preset ultrafast -map [video] -y output.mp4
ffmpeg在处理动画、视频或图像时,其自身是无法对图片高度直接感知的,无法根据图片高度直接计算出播放时间。一般来说,要实现动态计算播放时间相关的需求,需要借助于编程语言或者脚本,是需要比较复杂的计算的。
但是根据你的描述,可以通过更改-filter_complex参数中的'y=-'t*120'部分来更改播放速度。这个参数 essentially control the vertical scroll speed 的动画. 120
这个值越高,滚动速度越快。
例如:"y=-'t*60'"
你可以自己根据效果进行调整这个值。
至于更进一步的播放时间计算和延迟播放,我建议你通过脚本语言如 python 或 bash 实现。先计算出具体的播放时间与滚动速度,然后传入到 ffmpeg 的命令中。
下面是一个在播放前停顿2秒钟的基础命令示例:
ffmpeg -r 1 -loop 1 -i 1.png -vf "tpad=start_duration=2, setpts=PTS-STARTPTS,color=white:s=1170x720, fps=fps=60[bg];[bg][0]overlay=y=-'t*120':shortest=1[video]" -preset ultrafast -y output.mp4
注意这里添加的tpad=start_duration=2
和setpts=PTS-STARTPTS
。
这个参数可以让视频在播放前等待指定的时间。
关于滚动速度和播放时间的更精确控制,可能需要自己写脚本计算然后注入到这个命令中。具体的方法会根据你具体使用的脚本语言有所不同,这里就不进行进一步的说明了。
相似问题