繁体   English   中英

如何使用 Moviepy 制作透明视频?

[英]How can I make a transparent video with Moviepy?

我正在尝试创建带有 alpha 的透明视频。

这是我的代码:

import moviepy.editor as mpe
clip = mpe.VideoFileClip("input3.mov")
mask = mpe.ImageClip("01.png", ismask=True, fromalpha=True).to_mask()
clip = clip.set_mask(mask)
final_clip = mpe.CompositeVideoClip([clip])
final_clip.write_videofile("output1.avi", codec="rawvideo")

使用的文件:

01.png

输入3.mov

output 不透明(使用 Adobe After Effects 测试)。

在阅读了 https://github.com/Zulko/moviepy/issues/1502之后,我找到了一种方法——通过将剪辑渲染为一系列图像,我最终得到了一系列带有 alpha 的图像。 虽然不是透明视频,而是透明图片序列,我也能接受,但需要重新处理。

import moviepy.editor as mpe
clip = mpe.VideoFileClip("input3.mov")
mask = mpe.ImageClip("01.png", ismask=True, fromalpha=True).to_mask()
clip = clip.set_mask(mask)
final_clip = mpe.CompositeVideoClip([clip])
final_clip.write_images_sequence('00/frame%05d.png', fps=25, withmask=True, logger='bar')

但是有个小问题,图片的边缘有一个黑色的边框。 ↓↓↓

黑色边框.jpg

我猜这可能是默认黑色背景的效果。 我更改了背景颜色后,发现导出的图像序列丢失了 alpha,这不是我想要的结果。

import moviepy.editor as mpe
clip = mpe.VideoFileClip("input3.mov")
mask = mpe.ImageClip("01.png", ismask=True, fromalpha=True).to_mask()
clip = clip.set_mask(mask)
final_clip = mpe.CompositeVideoClip([clip], bg_color=(255, 255, 255))
final_clip.write_images_sequence('00/frame%05d.png', fps=25, withmask=True, logger='bar')

缺少 alpha 的白色背景图像。 ↓↓↓

缺少 alpha.png

不然怎么能直接得到透明视频呢?

我修改了素材和代码来制作视频,最终得到了一个透明的视频。

这种方法有局限性,并不适用于所有情况。

这是用于制作视频的透明图像材料。 导出透明序列图后,会有黑色边框,所以不使用此方法。

在此处输入图像描述

改变想法:

使每张透明图片为白色背景图片和由 alpha 转换而来的灰度信息图片。

在此处输入图像描述 在此处输入图像描述

使用不同的图像资源制作两次视频,然后使用 Adobe Premiere 的抠像功能制作透明视频。

最终效果如下:

[ 视频.mp4 ]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM