Moviepy自动化视频处理:合成视频剪辑
Moviepy自动化视频处理:合成视频剪辑
CompositeVideoClip类提供了一个非常灵活的方法来合成剪辑,但它比concatenate_videoclips和clips_array更复杂一些。
Moviepy视频处理示例:合成视频剪辑效果如下:
Moviepy视频自动化处理:合成视频剪辑
from moviepy.editor import *
clip1 = VideoFileClip("./素材/夏日憧憬舞 (1).mp4")
clip2 = VideoFileClip("./素材/夏日憧憬舞 (2).mp4")
clip3 = VideoFileClip("./素材/夏日憧憬舞 (3).mp4")video = CompositeVideoClip([clip1,clip2,clip3])
video.write_videofile(r"./成品/夏日憧憬舞2.mp4")
当前video播放clip1,clip2在clip1的上层,而clip3在clip1和clip2的上层。举例来说,如果clip2与clip3和clip1有同样的尺寸,那么只有在顶层的clip3能在视频中可见,除非clip3和clip2被遮罩隐藏了一部分。注意,在默认情况下,合成的视频和第一个剪辑的尺寸相同(因为它通常是一个背景)。但是有时,你想让你的剪辑在更大的合成视频里浮动,所以你需要像这样特意修改最终合成视频的尺寸:
video = CompositeVideoClip([clip1,clip2,clip3], size=(1208,720))
指定视频的开始时间结束时间:
video = CompositeVideoClip([clip1, # starts at t=0clip2.set_start(5), # start at t=5sclip3.set_start(9)]) # start at t=9s
添加视频过渡淡入效果:
video = CompositeVideoClip([clip1, # starts at t=0clip2.set_start(5).crossfadein(1),clip3.set_start(9).crossfadein(1.5)])
视频位置定位:
如果clip2和clip3都比clip1小,你可以决定他们出现在视频中的位置。在这里,我们指定了剪辑左上角像素的坐标:
from moviepy.editor import *
from moviepy.video.fx.resize import resize
clip1 = VideoFileClip("./素材/夏日憧憬舞 (1).mp4").resize(0.5)
clip2 = VideoFileClip("./素材/夏日憧憬舞 (2).mp4").resize(0.5)
clip3 = VideoFileClip("./素材/夏日憧憬舞 (3).mp4").resize(0.5)# video = CompositeVideoClip([clip1,clip2,clip3])video = CompositeVideoClip([clip1.set_pos(lambda t: (2*t*t, 5+t*t)),clip2.set_start(5).crossfadein(3).set_pos(lambda t: (908-t*t, 50+t*t)),clip3.set_start(10).crossfadein(5).set_pos(lambda t: (720-2*t*t, 5+t*t))], size=(1208,720))video.write_videofile(r"./成品/夏日憧憬舞5.mp4")
不同的定位方式
clip2.set_pos((45,150)) # x=45, y=150 , in pixelsclip2.set_pos("center") # automatically centered# clip2 is horizontally centered, and at the top of the picture
clip2.set_pos(("center","top"))# clip2 is vertically centered, at the left of the picture
clip2.set_pos(("left","center"))# clip2 is at 40% of the width, 70% of the height of the screen:
clip2.set_pos((0.4,0.7), relative=True)# clip2's position is horizontally centered, and moving down !
clip2.set_pos(lambda t: ('center', 50+t) )
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
