moviepy
文档链接:
1git链接:https://github.com/Zulko/moviepy
2User Guide:https://zulko.github.io/moviepy/
3 中文文档:https://moviepy-cn.readthedocs.io/zh/latest/
moviepy
1 简单视频拼接

#导入VideoFileclip和concatenate_videoclips from moviepy.editor import VideoFileClip,concatenate_videoclips #实例化视频1 clip1=VideoFileClip("video/1.mp4") #实例化视频2 clip2=VideoFileClip("video/2.mp4") #实例化视频3 clip3=VideoFileClip("video/3.mp4") #连接视频对象 finalclip=concatenate_videoclips([clip1,clip2,clip3]) #输出拼接的视频到名为out_put.mp4的文件里 finalclip.write_videofile("out_put.mp4")

#!\Users\Local\Programs\Python37 # -*- coding: utf-8 -*- def concatenate(): #拼接(使它们变成一个更长的剪辑,一个接一个播放) from moviepy.editor import VideoFileClip, concatenate_videoclips clip1 = VideoFileClip("video/movie1.mp4") clip2 = VideoFileClip("video/movie2.mp4").subclip(0,3) clip3 = VideoFileClip("video/movie3.mp4") final_clip = concatenate_videoclips([clip1,clip2,clip3]) final_clip.write_videofile("video/my_concatenation.mp4") def clips_array(): #堆起来(使他们并排组成画面更大的剪辑) from moviepy.editor import VideoFileClip, clips_array, vfx clip1 = VideoFileClip("video/movie1.mp4").margin(10) # add 10px contour clip2 = clip1.fx(vfx.mirror_x) clip3 = clip1.fx(vfx.mirror_y) clip4 = clip1.resize(0.60) # downsize 60% final_clip = clips_array([[clip1, clip2], [clip3, clip4]]) final_clip.resize(width=480).write_videofile("my_stack.mp4") if __name__ == '__main__': # concatenate() clips_array()
2 音频处理

from moviepy.editor import AudioFileClip,VideoFileClip video1 =VideoFileClip("video/1.mp4") #获取视频1 audio1 = AudioFileClip("video/1.mp3") #获取音频1 video1.audio =audio1 #把音频赋值给视频 video1.write_videofile("output1.mp4")

from moviepy.editor import VideoFileClip,AudioFileClip video1 =VideoFileClip("video/1.mp4") audio =video1.audio #获取音频 audio.write_audiofile("提取音频1.mp3")

from moviepy.editor import * #读取两个视频文件 videoclip_1 =VideoFileClip("video/1.mp4") videoclip_2 =VideoFileClip("video/2.mp4") audio_1 =videoclip_1.audio #提取第一个视频的音频 videoclip_3 =videoclip_2.set_audio(audio_1) #将提取的音频和第二个视频合成 videoclip_3.write_videofile("output.mp4")
3 遮罩遮挡视频区域

from moviepy.editor import VideoFileClip,ColorClip,CompositeVideoClip video =VideoFileClip("video/2.mp4") #设置一个颜色剪辑对象,当作遮罩 size =(130,60) #大小 position= (300,300)#位置 color=(0,0,0)#遮罩颜色 duration =video.duration #时长 mask=ColorClip(size,color) mask =mask.set_position(position) mask =mask.set_duration(duration) clip_list =[video,mask] #视频列表,后面优先级更高,mask放到后面 final_clip =CompositeVideoClip(clip_list) final_clip.write_videofile("mask.mp4")

from moviepy.editor import VideoFileClip,ImageClip,CompositeVideoClip video =VideoFileClip("video/2.mp4") #设置一个图片对象 position= (300,300)#位置 duration =video.duration #时长 mask =ImageClip("video/Logo.png") mask =mask.set_position(position) mask =mask.set_duration(duration) clip_list =[video,mask] #视频列表,后面优先级更高,mask放到后面 final_clip =CompositeVideoClip(clip_list) final_clip.write_videofile("mask.mp4")
4 截取视频片段转为gif

from moviepy.editor import VideoFileClip video = VideoFileClip("video/2.mp4") start_time =1.02 end_time =2.03 video =video.subclip(start_time,end_time) video=video.resize((480,320)) #重新设置大小 video.write_gif("output.gif")
5 视频添加水印文字

from moviepy.editor import VideoFileClip video = VideoFileClip("video/2.mp4") start_time =1.02 end_time =2.03 video =video.subclip(start_time,end_time) video=video.resize((480,320)) #重新设置大小 video.write_gif("output.gif")
6 合并图片为视频

import os from moviepy.editor import ImageSequenceClip,AudioFileClip,ImageClip from imageio import imread,imwrite #取当前文件绝对路径,拼装图片路径 current_file_name=os.path.abspath(__file__) current_dir=os.path.dirname(current_file_name) images_dir=os.path.join(current_dir,"images") #获取文件列表,以及音频对象,计算每一秒要多少图片 image_files=os.listdir(images_dir) audio=AudioFileClip("extract.mp3") fps=len(image_files)/audio.duration #获取图片文件列表,并拼接图片文件夹,并追加到新列表中 image_file_list=[] for i in image_files: image_file=os.path.join(images_dir,i)#拼接图片文件路径 image_file_list.append(image_file)#追加文件到列表 #改变大小以及形状 image=imread(image_file) imwrite(image_file,image,size=(800,600),shape=(600,800,3))#形状的参数是高,宽,3彩色通道 #组成序列片段 clip = ImageSequenceClip(image_file_list,fps=fps) clip.duration=audio.duration#视频的长度和音频一样 clip.audio=audio #输出到output clip.write_videofile("output.mp4")
作者:华王
博客:https://www.cnblogs.com/huahuawang/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」