携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第12天,点击查看活动详情
moviepy能干啥
- moviepy可以一行代码快速剪辑视频中某个区间的片段
- moviepy可以合并多个视频为一个
- moviepy可以给视频添加字幕
- moviepy可以给视频添加水印
- moviepy可以对视频进行裁剪
moviepy是啥
moviepy是一个第三方的python库,开源,且是跨平台的;有自己的官网地址:中文文档在这里:中文文档
文档解释:MoviePy是一个用于视频编辑的Python模块,它可被用于一些基本操作(如剪切、拼接、插入标题)、视频合成(即非线性编辑)、视频处理和创建高级特效。它可对大多数常见视频格式进行读写,包括GIF。
moviepy安装
moviepy安装方式有很多,推送使用pip方式;需要确保电脑上安装了python和pip;
打开命令行窗口,执行代码:
pip install moviepy
等待安装成功;
moviepy实操
-
给视频添加水印图片 给视频加水印图片,需要准备一段视频,一个水印图片。 分别加载视频和图片素材,指定图片在视频中的位置, 最后合并视频和图片素材,生成一个视频文件;
需要导入moviepy中的三个功能模块; 视频VideoClip,图片ImageClip,合并CompositeVideoClip
from moviepy.editor import CompositeVideoClip,ImageClip,VideoFileClip
代码示例:
def videoAddPic(video_file,pic_file,out_put): video = VideoFileClip(video_file) #加载视频 logo = (ImageClip(pic_file) .set_duration(video.duration) # 时长 .resize(height=640) # 水印高度,等比缩放 #.margin(left=10, top=10, opacity=1) #.set_pos(("left","top"))) .set_pos(("center"))) # 位置 #合并素材 result = CompositeVideoClip([video, logo]) print("开始写入图片。。。") # mp4文件默认用libx264编码, 比特率单位bps result.write_videofile(out_put, codec="libx264", bitrate="10000000") #生成一个视频文件 print("写入完成") -
视频裁剪 视频裁剪三行代码即可完成,主要使用VideFileClip中的crop方法,crop可以接收四个参数,左上角坐标和宽高; 具体代码参考如下:
def video_crop_wh(video_file,x=0,y=0,width=None,height=None,output=None): ''' 视频裁剪 :param video_file 视频路径 :param x y 左上角坐标 :param width height 宽度高度 :param output 输出文件路径 ''' video_clip = VideoFileClip(video_file) video_clip = video_clip.crop(x,y,width=width,height=height) video_clip.write_videofile(output)
3.视频合成 合成两段视频,以其中一个视频的宽和高为准; 分别获取两段视频的宽度和高度:
width, height = video1_clip.w, video1_clip.h
video_width, video_height = video2_clip2.w, video2_clip2.h
对另一段视频就行缩放;
# 视频进行缩放
video_clip1 = video2_clip2.resize((width, width * video_height / video_width))
打包合并两段视频
video_clip = CompositeVideoClip([video1_clip, video_clip1.set_pos("center")])
video_clip.write_videofile('./temp_video.mp4')