FFmpeg - 以角度旋转

时间:2017-09-21 14:04:32

标签: ffmpeg

我一直在使用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'等,则旋转确实有效,但远离所需的行为。

我错过了揭露这些参数的东西吗?

2 个答案:

答案 0 :(得分:2)

在表达式中,

rotate=A*sin(2*PI/T*t)

AT不是文字。用户应用数字代替它们,以弧度表示幅度,以秒为单位表示周期。

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