FFMPEG裁剪边界动画
FFMPEG crop boundaries animation
我正在寻找一种使裁剪过滤器参数取决于当前时间的方法。
现在我有 2 个视频 - 一个分割输出视频中有白色和浅绿色方块,这段代码工作正常:
ffmpeg -i out/i1.mp4 -i out/i2.mp4 -filter_complex "[0:v]crop=iw/2:ih:0:0[left];[1:v]crop=iw/2:ih:ow:0[right];[left][right]hstack" out/generated.mp4
我的问题是 - 如何使两个视频之间的边界浮动、动画化?例如从输出视频的左侧到右侧?
我已经尝试使用 t 参数,例如像这样:
ffmpeg -i out/i1.mp4 -i out/i2.mp4 -filter_complex "[0:v]crop=iw/2+t:ih:0:0[left];[1:v]crop=iw/2-t:ih:ow:0[right];[left][right]hstack" out/generated.mp4
但是它抛出一个错误:
[Parsed_crop_0 @ 0x7fa46060eec0] Error when evaluating the expression 'iw/2+t'
[Parsed_crop_0 @ 0x7fa46060eec0] Failed to configure input pad on Parsed_crop_0
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #1:0
谁能帮我解决这个问题?或者解释 - 为什么不可能?
对于裁剪滤镜 w
和 h
不能设置动画:只有 x
和 y
可以。
使用 xfade 过滤器获得简单的解决方案:
ffmpeg -i input0.mp4 -i input1.mp4 -filter_complex "[0][1]xfade=transition=wiperight:duration=2:offset=5" output.mp4
我正在寻找一种使裁剪过滤器参数取决于当前时间的方法。
现在我有 2 个视频 - 一个分割输出视频中有白色和浅绿色方块,这段代码工作正常:
ffmpeg -i out/i1.mp4 -i out/i2.mp4 -filter_complex "[0:v]crop=iw/2:ih:0:0[left];[1:v]crop=iw/2:ih:ow:0[right];[left][right]hstack" out/generated.mp4
我的问题是 - 如何使两个视频之间的边界浮动、动画化?例如从输出视频的左侧到右侧?
我已经尝试使用 t 参数,例如像这样:
ffmpeg -i out/i1.mp4 -i out/i2.mp4 -filter_complex "[0:v]crop=iw/2+t:ih:0:0[left];[1:v]crop=iw/2-t:ih:ow:0[right];[left][right]hstack" out/generated.mp4
但是它抛出一个错误:
[Parsed_crop_0 @ 0x7fa46060eec0] Error when evaluating the expression 'iw/2+t'
[Parsed_crop_0 @ 0x7fa46060eec0] Failed to configure input pad on Parsed_crop_0
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #1:0
谁能帮我解决这个问题?或者解释 - 为什么不可能?
对于裁剪滤镜 w
和 h
不能设置动画:只有 x
和 y
可以。
使用 xfade 过滤器获得简单的解决方案:
ffmpeg -i input0.mp4 -i input1.mp4 -filter_complex "[0][1]xfade=transition=wiperight:duration=2:offset=5" output.mp4