我正在尝试合成两个视频,并使用 alpha 插件使白色透明。为了测试 alpha 插件,我正在使用 gst-launch 创建管道。
我做的第一个测试是:
gst-launch videotestsrc pattern=smpte75 ! alpha method=custom target-r=255 target-g=255 target-b=255 angle=10 ! videomixer name=mixer ! ffmpegcolorspace ! autovideosink videotestsrc pattern=snow ! mixer.
效果很好!然后我用这些台词制作了两个视频:
gst-launch videotestsrc pattern=snow ! ffmpegcolorspace ! theoraenc ! oggmux ! filesink location=snow.ogv
gst-launch videotestsrc pattern=smpte75 ! ffmpegcolorspace ! theoraenc ! oggmux ! filesink location=bars75.ogv
并将 videotestsrc 更改为 filesrc 并且它继续工作:
gst-launch filesrc location=bars75.ogv ! decodebin2 ! alpha method=custom target-r=255 target-g=255 target-b=255 angle=10 ! videomixer name=mixer ! ffmpegcolorspace ! autovideosink filesrc location=snow.ogv ! decodebin2 ! alpha ! mixer.
但是,当我使用我想要合成的视频时,我无法使白色变得透明:
gst-launch filesrc location=video.ogv ! decodebin2 ! alpha method=custom target-r=255 target-g=255 target-b=255 angle=10 ! videomixer name=mixer ! ffmpegcolorspace ! autovideosink filesrc location=snow.ogv ! decodebin2 ! alpha ! mixer.
知道发生了什么吗?我正在使用 GStreamer 0.10.28。
您可以从这里下载测试视频:
答案1
我测试了你的方法,它比你想象的效果更好......只需反过来交换视频即可;-)
gst-launch filesrc location=snow.ogv ! decodebin2 ! alpha method=custom target-r=255 target-g=255 target-b=255 angle=10 ! videomixer name=mixer ! ffmpegcolorspace ! autovideosink filesrc location=bars75.ogv ! decodebin2 ! alpha ! mixer.
很有趣的想法。恭喜!