python使用moviepy实现有透明通道视频的叠加

其实我一直犹豫要不要将这份脚本分享出来,因为这份脚本我真的花了很多时间才研究出来的,好比在一顿沙子里找到一颗珍珠一样。脚本代码如下,小白看不懂代码的话欢迎联系我,QQ840694971,密码:黄俊雄

from moviepy.editor import VideoFileClip, CompositeVideoClip
zm_video_path = "data/zm.mov"


def add_zm(fg_in_bg_avi):
    clip1 = VideoFileClip(fg_in_bg_avi)
    clip3 = VideoFileClip(zm_video_path, has_mask=True)
    video = CompositeVideoClip([clip1, clip3])
    name = zm_video_path.split('.', 1)[0] + ".mp4"
    video.write_videofile(name, audio=False)  # 先不加音频
    video.close()
    return name


if __name__ == '__main__':
    video_have_zm = add_zm("data/fg_in_bg.avi")

结果和原始数据我就不放了,如果你连尝试的勇气和诚意都没有,我不觉得你有资格拥有这份代码哈哈哈(其实还不是我懒)。

能不能来波素质三连,关注点赞评论,你的支持是我最大的快乐(转载请注明出处呀呀呀呀呀呀!)

### 使用 MoviePy 实现多层带 Alpha 通道视频叠加 为了实现多个带有透明度(Alpha 通道)的视频文件进行叠加,可以利用 `moviepy` 库提供的功能。具体来说,通过创建具有透明背景的 VideoClip 对象并调整其透明度属性,再将这些对象组合在一起形成最终合成视频。 #### 创建和处理带 Alpha 的视频片段 首先定义函数来加载视频素材,并确保它们拥有有效的 alpha 层: ```python from moviepy.editor import VideoFileClip, CompositeVideoClip def load_video_with_alpha(video_path): """Load video file and ensure it has an alpha channel.""" clip = VideoFileClip(video_path).add_mask() # Add mask to enable transparency control return clip.set_opacity(1) # Set full opacity as default; adjust value between 0 (fully transparent) and 1 (opaque) ``` 此段代码会读取指定路径下的视频文件,并为其添加一个默认完全不透明的蒙版[^2]。 #### 合成多层视频 接下来编写逻辑以按照需求堆叠不同层次的视频片段: ```python def composite_videos(base_clip_path, overlay_clips_paths, output_path): base_clip = load_video_with_alpha(base_clip_path) overlays = [] for path in overlay_clips_paths: overlay = load_video_with_alpha(path) # Adjust position or other properties of the overlay here if needed overlays.append(overlay) final_clip = CompositeVideoClip([base_clip] + overlays) # Write result to disk ensuring support for alpha channels final_clip.write_videofile(output_path, codec='png', fps=24, logger=None) ``` 上述脚本接受基础视频以及一系列待覆盖在其上的其他视频作为输入参数,最后保存到给定的目标位置。这里特别指定了编码器为 PNG 来支持 RGBA 色彩模式[^4]。 注意,在实际应用过程中可能还需要考虑各层之间的相对定位以及其他视觉效果设置等问题。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值