【问题标题】:(FFMPEG) Make areas transparent before overlaying a vid with perspective(FFMPEG) 在用透视覆盖视频之前使区域透明
【发布时间】:2016-12-08 14:42:35
【问题描述】:

我正在尝试为一个小视频添加透视图,然后将其叠加在另一个视频之上。

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

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

所以我猜我需要在所需区域应用某种 alpha 蒙版?

这是我用于透视的命令:

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 的 VM 上运行 ffmpeg。

This is a SS of how the result looks like:

【问题讨论】:

  • 您可能会在 video.se 上得到更快的答案

标签: video ffmpeg overlay transparency video-editing


【解决方案1】:

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

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

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

(请注意,如果您播放输出,它可能看起来不起作用。要查看结果,您必须在背景中将其覆盖)

【讨论】:

    【解决方案2】:

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

    这里的技巧是在视频中添加透明填充,然后添加透视。被扩展的像素将是透明像素,在叠加后变得不可见。

    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。边框颜色为黑色,但 alpha 为 0

    严格来说,应该更正透视值以考虑边界,但这是一个很小的变化。叠加层也会偏移以将可见视频与预期目标对齐。

    【讨论】:

    • 我只是在寻找透明度的颜色代码。似乎black@0 在做这项工作。谢谢。
    • 您需要使用支持 alpha 通道的编码器。例如:ffmpeg -i base.mp4 -i overlay.mp4 filter_complex" [1]format=yuva420p,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
    【解决方案3】:

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

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

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

    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
    

    覆盖和切割绿色背景:

    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
    

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

    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
    

    【讨论】:

      猜你喜欢
      • 2016-01-21
      • 2019-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-09
      • 1970-01-01
      相关资源
      最近更新 更多