moviepy音视频剪辑:使用mask遮罩实现视频叠加透明效果

☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython

一、引言

在《moviepy音视频剪辑:mask clip遮罩剪辑、遮片、蒙版的作用以及其包含的构成内容》中介绍:“mask遮罩是一种只有灰度值的像素构成的帧组成的剪辑,其作用就是在带mask的剪辑与其他剪辑合成时确认是否显示带mask剪辑的对应像素。”

本文实现一个使用mask遮罩剪辑实现叠加视频的透明效果。

二、程序实现

本案例实现一个可以在视频上面叠加一个旋转视频或旋转图片的通用方法,支持两个内容大小不同的视频叠加。为了支持叠加对象为图片,需要将图片转换成视频,为了尽可能突出图片的表达内容,在将图片转视频前将图片的背景色转换为黑色。
相关程序包括如下函数:

  1. ridPicBackground:去掉图片背景色,被convertPicToVideo调用
  2. convertPicToVideo:将图片转成视频,被videoOverlyObjMask调用
  3. videoOverlyObjMask:将视频和叠加对象叠加

上述函数中关键函数为videoOverlyObjMask,这个函数是视频旋转并叠加的主程序代码。相关程序代

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
好的,以下是使用Phaser3实现透明到不透明遮罩层的步骤: 1.首先,创建一个场景对象并在其中加载所需的资源,例如背景图和遮罩层图。 ``` var config = { type: Phaser.AUTO, width: 800, height: 600, scene: { preload: preload, create: create } }; var game = new Phaser.Game(config); function preload() { this.load.image('background', 'assets/background.png'); this.load.image('mask', 'assets/mask.png'); } function create() { var background = this.add.image(0, 0, 'background'); background.setOrigin(0, 0); var mask = this.add.image(0, 0, 'mask'); mask.setOrigin(0, 0); } ``` 2.接下来,将遮罩层图设置为全屏,并将其alpha值设置为0,表示完全透明。 ``` function create() { ... var mask = this.add.image(0, 0, 'mask'); mask.setOrigin(0, 0); mask.setScale(2); //将遮罩层图放大到全屏大小 mask.alpha = 0; //设置遮罩层图的alpha值为0,表示完全透明 } ``` 3.创建一个Tween对象,将遮罩层图的alpha值从0缓慢地改变为1,表示逐渐变得不透明。 ``` function create() { ... var mask = this.add.image(0, 0, 'mask'); mask.setOrigin(0, 0); mask.setScale(2); mask.alpha = 0; this.tweens.add({ targets: mask, alpha: 1, duration: 2000, //Tween的持续时间为2秒 ease: 'Power2' //使用Power2缓动函数,使Tween的变化更加平滑 }); } ``` 4.最后,在Tween完成后,可以添加一个回调函数,以便在遮罩层图完全不透明时执行其他操作。 ``` function create() { ... var mask = this.add.image(0, 0, 'mask'); mask.setOrigin(0, 0); mask.setScale(2); mask.alpha = 0; this.tweens.add({ targets: mask, alpha: 1, duration: 2000, ease: 'Power2', onComplete: function() { console.log('遮罩层图已完全不透明!'); //在Tween完成后,可以添加其他操作 } }); } ``` 这样,就可以实现透明到不透明遮罩层了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LaoYuanPython

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值