首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(FFMPEG)在使用透视覆盖vid之前使区域透明

(FFMPEG)在使用透视覆盖vid之前使区域透明
EN

Stack Overflow用户
提问于 2016-08-03 11:50:12
回答 3查看 2.3K关注 0票数 2

我正在尝试添加一个小视频的视角,然后将其覆盖在其他视频之上。

到目前为止,我可以使视频小,添加视角到它,并将其覆盖到其他视频。但在应用透视滤镜后,多余的区域并不会变得透明,它们只是拉伸像素。

透视过滤器没有太多的文档,但据我所知,没有办法将额外的像素设置为透明。

所以我猜我需要在所需的区域应用某种alpha遮罩?

这是我用于透视图的命令:

代码语言:javascript
复制
ffmpeg -i /synced_folder/testvid.mp4 -vf perspective=0:0:W:H/4:0:H:W:3*H/4:0:1:0 /synced_folder/output5.mp4

我认为这无关紧要,但我在带有centOS的虚拟机上运行了ffmpeg。

This is a SS of how the result looks like:

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-03 14:26:21

这需要一种非常规的方法。透视滤镜旨在纠正记录过程中的某些类型的失真,而不是用于DVE类型的覆盖。边缘的像素将被扩展以填充画布。

这里的诀窍是向视频添加透明填充,然后添加透视。扩展的像素将是透明像素,它们在叠加时变得不可见。

代码语言:javascript
复制
ffmpeg -i base.mp4 -i overlay.mp4
filter_complex" [1]pad=iw+4:ih+4:2:2:black@0,perspective=0:0:W:H/4:0:H:W:3*H/4:0:1:0[p];
                [0][p]overlay=-2:-2"    output.mp4

我用2个像素的边框填充,因为通常的像素格式是4:2:0。边框颜色为黑色,但带有0的alpha。

严格地说,透视值应该进行校正以说明边界,但这是一个很小的变化。覆盖也被偏移,以使可见视频与预期的目的地对齐。

票数 6
EN

Stack Overflow用户

发布于 2016-08-03 13:16:19

通过在我想要的区域中使用alpha为0的png,然后使用alphaextract和alphamerge命令,我获得了想要的效果。

它是有效的,但如果有人知道如何直接从透视命令获得透明的背景,我将不胜感激。

代码语言:javascript
复制
ffmpeg -y -i video.mp4 -loop 1 -i alphamask.png -filter_complex "[1:v]alphaextract[alf];[0:v][alf]alphamerge" -c:v qtrle -an /synced_folder/output.mov

(请注意,如果播放输出,它可能看起来不起作用。要查看结果,您必须在背景中叠加一些内容)

票数 0
EN

Stack Overflow用户

发布于 2020-10-07 22:28:51

不幸的是,Gyan的方法对我不起作用。透视后的区域刚刚填充为黑色。

我不确定这是不是最好的方法,但我用chromakey解决了这个问题。

创建具有透视和绿色背景的视频:

代码语言:javascript
复制
ffmpeg -i video.mp4 -filter_complex "pad=iw+4:ih+4:2:2:0x00FF00@0,perspective=0:0:W:H/4:0:H:W:3*H/4:0:1:0" video_persp.mp4

覆盖和剪切绿色背景:

代码语言:javascript
复制
ffmpeg -i video2.mp4 -i video_persp.mp4 -shortest -filter_complex "[1:v]chromakey=0x00FF00:0.2:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" video_final.mp4

奖励:如果你想在图片上使用透视图并将其添加到视频中(没有黑区)

代码语言:javascript
复制
ffmpeg -i image.jpeg -filter_complex "pad=iw+4:ih+4:2:2:0x00FF00@0,perspective=0:0:W:H/4:0:H:W:3*H/4:0:1:0" image_persp.jpeg
ffmpeg -i image_persp.jpeg -vf "chromakey=0x00FF00:0.2:0.2" -c copy -c:v png image_transparent.png
ffmpeg -i video.mp4 -i image_transparent.png -filter_complex "[0]overlay=100:300" output.mp4
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38734068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档