写点什么

使用 python 处理视频的库 moviepy

作者:技能实验室
  • 2022-10-19
    河南
  • 本文字数:1280 字

    阅读完需:约 1 分钟

moviepy 能干啥

  • moviepy 可以一行代码快速剪辑视频中某个区间的片段

  • moviepy 可以合并多个视频为一个

  • moviepy 可以给视频添加字幕

  • moviepy 可以给视频添加水印

  • moviepy 可以对视频进行裁剪

moviepy 是啥

moviepy 是一个第三方的 python 库,开源,且是跨平台的;有自己的官网地址:中文文档在这里:中文文档


文档解释:MoviePy 是一个用于视频编辑的 Python 模块,它可被用于一些基本操作(如剪切、拼接、插入标题)、视频合成(即非线性编辑)、视频处理和创建高级特效。它可对大多数常见视频格式进行读写,包括 GIF。

moviepy 安装

moviepy 安装方式有很多,推送使用 pip 方式;需要确保电脑上安装了 python 和 pip;


打开命令行窗口,执行代码:


pip install moviepy


等待安装成功;

moviepy 实操

  1. 给视频添加水印图片给视频加水印图片,需要准备一段视频,一个水印图片。分别加载视频和图片素材,指定图片在视频中的位置,最后合并视频和图片素材,生成一个视频文件;

  2. 需要导入 moviepy 中的三个功能模块;视频 VideoClip,图片 ImageClip,合并 CompositeVideoClip

  3. from moviepy.editor import CompositeVideoClip,ImageClip,VideoFileClip

  4. 代码示例:


  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("写入完成")
复制代码


  1. 视频裁剪视频裁剪三行代码即可完成,主要使用 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')    
复制代码


发布于: 刚刚阅读数: 3
用户头像

还未添加个人签名 2022-07-26 加入

还未添加个人简介

评论

发布
暂无评论
使用python处理视频的库moviepy_python 3.5+_技能实验室_InfoQ写作社区