首页 > 解决方案 > 如何将透明度应用于moviepy中的剪辑?

问题描述

所以我试图用moviepy创建一个剪辑,其中五个半透明剪辑使用CompositeVideoClip相互叠加。

输出应该是长度等于最长剪辑的剪辑,其中复合剪辑的所有层都是可见的。

我的代码看起来像这样:

from moviepy.editor import *

clip_1 = VideoFileClip('some\\path\\here.mp4')
clip_2 = VideoFileClip('some\\path\\here.mp4')
clip_3 = VideoFileClip('some\\path\\here.mp4')
clip_4 = VideoFileClip('some\\path\\here.mp4')
clip_5 = VideoFileClip('some\\path\\here.mp4')

list_of_clips = [clip_1, clip_2, clip_3, clip_4, clip_5]

for index, clip in enumerate(list_of_clips):
    list_of_clips[index] = clip.set_opacity(.20)

output_clip = CompositeVideoClip(list_of_clips)

output_clip.write_videofile('some\\path\\here.mp4')

代码运行良好,但不应用透明度。

这也不起作用:

clip = VideoFileClip(some\\path\\here.mp4).set_opacity(.30)

clip.write_videofile(some\\path\\here.mp4)

导出工作正常,但剪辑完全不透明。

关于如何在剪辑输出中实现透明度的任何建议?

标签: pythonvideoopacitymoviepy

解决方案


mp4(我假设是 h264)格式不提供透明度。webM (vp9) 和 h265 的一些变体确实提供了透明度。

我不确定您到底要做什么-但也许将叠加视频创建为 webm(支持透明度)-然后在最后转换为 h264 可能对您有用。


推荐阅读