ffmpeg 将旋转的图像叠加到视频上,如何透明旋转图像未覆盖的输出区域?

ffmpeg 将旋转的图像叠加到视频上,如何透明旋转图像未覆盖的输出区域?

我正在使用ffmpeg在电影上叠加图片。要求是将图片旋转任意角度。使用filter_complex,我现在可以叠加旋转的图片。但是,图片的输出区域填充为黑色,不透明。我检查了文档,据说可以指定填充颜色,根据,但我没能做到。有什么想法吗?

我在这里复制我的命令行:

./ffmpeg -i mersyvideo.mp4 -i avatar.jpg -filter_complex "[1:v] rotate=-30*PI/180:c=black@'0x00':ow=rotw(iw):oh=roth(ih) [rotate];[0:v][rotate] overlay=40:10" -codec:a copy output/overlayavatar.mp4

答案1

要用透明填充未覆盖的区域,请使用以下选项c=none

ffmpeg \
  -i mersyvideo.mp4 \
  -i avatar.jpg \
  -filter_complex "
  [1:v]rotate=-30*PI/180:c=none:ow=rotw(iw):oh=roth(ih)[rotate];
  [0:v][rotate]overlay=40:10
  " \
  -codec:a copy \
  output/overlayavatar.mp4

查看rotate过滤帮助

fillcolorc

设置用于填充未被旋转图像覆盖的输出区域的颜色。有关此选项的一般语法,请查看 ffmpeg-utils 手册中的 (ffmpeg-utils)“颜色”部分。如果选择了特殊值“无”,则不会打印任何背景(例如,如果从不显示背景,则很有用)。

默认值为“黑色”。

相关内容