![ffmpeg 将旋转的图像叠加到视频上,如何透明旋转图像未覆盖的输出区域?](https://linux22.com/image/1414065/ffmpeg%20%E5%B0%86%E6%97%8B%E8%BD%AC%E7%9A%84%E5%9B%BE%E5%83%8F%E5%8F%A0%E5%8A%A0%E5%88%B0%E8%A7%86%E9%A2%91%E4%B8%8A%EF%BC%8C%E5%A6%82%E4%BD%95%E9%80%8F%E6%98%8E%E6%97%8B%E8%BD%AC%E5%9B%BE%E5%83%8F%E6%9C%AA%E8%A6%86%E7%9B%96%E7%9A%84%E8%BE%93%E5%87%BA%E5%8C%BA%E5%9F%9F%EF%BC%9F.png)
我正在使用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
过滤帮助:
fillcolor
,c
设置用于填充未被旋转图像覆盖的输出区域的颜色。有关此选项的一般语法,请查看 ffmpeg-utils 手册中的 (ffmpeg-utils)“颜色”部分。如果选择了特殊值“无”,则不会打印任何背景(例如,如果从不显示背景,则很有用)。
默认值为“黑色”。