Moviepy slidein和slideout转换

2024-09-24 00:28:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在视频剪辑之间使用滑入和滑出转换,但运气不好,我只能使用crossfadein这样做:

 from moviepy.editor import VideoFileClip, concatenate_videoclips, vfx, afx, transfx, concatenate, 
 CompositeVideoClip

 delay = 1
 output = "out.mp4"
 clip1 = VideoFileClip("174_3.mp4")
 clip2 = VideoFileClip("174_4.mp4")
 clip3 = VideoFileClip("174_5.mp4")
 clip4 = VideoFileClip("174_6.mp4")


final = concatenate([clip1,
                 clip2.crossfadein(delay),
                 clip3.crossfadein(delay),
                 clip4.crossfadein(delay)],
         padding=-delay, method="compose")
final.write_videofile(output)

但是当我在https://github.com/Zulko/moviepy/blob/3d86a2c4cba6769528112765d964eaec273d7636/moviepy/video/compositing/transitions.py上使用这个例子时

^{pr2}$

这个结果是视频连接,但根本不是过渡,请让我知道我做错了什么


Tags: fromoutputeditorfinalmp4delaymoviepy运气
1条回答
网友
1楼 · 发布于 2024-09-24 00:28:54

请记住,moviepy中的大多数函数不会修改对象,而是返回对象的一个修改过的浅层副本,因此CompositeVideoclip(clips)行不做任何事情。在

相反,你想做的是:

slided_clips = [CompositeVideoClip([clip.fx( transfx.slide_out, 1, 'bottom')]) for clip in clips]

slide_out必须在CompositeVideoClip中的原因是它改变了剪辑的位置,所以它需要在一个“帧”中才能使部分屏幕空白。这也是为什么set_position只能与CompositeVideoClip一起工作的原因。在

相关问题 更多 >