我一直在使用FFmpeg,但我无法从他们网站上的示例中获得轮换。我正试图摆弄"摆动"在底部固定点来回的视频 - 认为头部从左向右移动(依此类推)。
我正在尝试使用过滤器"旋转" (https://ffmpeg.org/ffmpeg-filters.html#rotate)。试图使用他们的例子,我收到一个错误。
这是我到目前为止所做的:
ffmpeg -i vid1.mp4 -i vid2.mov -loop 1 -i image.png -filter_complex "\
[2:v]alphaextract, scale=240x160[mask];\
[0:v] scale=240x160, rotate=A*sin(2*PI/T*t) [ascaled];\
[ascaled][mask]alphamerge[masked];\
[1:v]scale=480x360[background];\
[background][masked]overlay=120:20"\
-c:a copy 65B6354F61B4AF02_HD_sq.MOV
我正在使用"旋转"直接从一个例子中试图让一些东西运行。
我得到的错误是:
[Parsed_rotate_3 @ 0x7ff4476045e0] [Eval @ 0x7fff5b3e3f00] Undefined constant or missing '(' in 'T*t)'
[Parsed_rotate_3 @ 0x7ff4476045e0] Error occurred parsing angle expression 'A*sin(2*PI/T*t)'
[Parsed_rotate_3 @ 0x7ff4476045e0] Failed to configure output pad on Parsed_rotate_3
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #1:0
如果我删除A',' T',' sin'等,则旋转确实有效,但远离所需的行为。
我错过了揭露这些参数的东西吗?
答案 0 :(得分:2)
在表达式中,
rotate=A*sin(2*PI/T*t)
A
和T
不是文字。用户应用数字代替它们,以弧度表示幅度,以秒为单位表示周期。
e.g。
rotate=2*sin(2*PI/3*t)
答案 1 :(得分:1)
尝试transpose过滤器,例如,顺时针旋转90°
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
对于转置参数,您可以传递:
0 90CounterCLockwise and Vertical Flip (default)
1 90Clockwise
2 90CounterClockwise
3 90Clockwise and Vertical Flip