moviepy简介及安装

Karen110
• 阅读 1747

一、概述

MoviePy是一个用于视频编辑的Python模块,可用于进行视频的基本操作(如剪切、连接、标题插入)、视频合成(也称非线性编辑)、视频处理或创建高级效果。

moviepy简介及安装

它可以读写最常见的视频格式,包括GIF。MoviePy能处理的视频是ffmpeg格式的,老猿理解支持的文件类型至少包括:*.mp4 *.wmv *.rm *.avi *.flv *.webm *.wav *rmvb 。

MoviePy使用ffmpeg读取、导出视频和音频文件,使用ImageMagick生成文本和输出GIF文件。Python的快速数字库Numpy保证了不同媒体的处理。高级效果和增强使用了Python的许多图像处理库(PIL、Scikit-image、scipy等)。

moviepy的核心对象是剪辑(clips),包括AudioClips 和VideoClips。它们可以修改(剪切、减速、变暗…)或与剪辑混合以形成新剪辑,可以使用PyGame或IPython Notebook预览,并可以输出到对应类型的文件(如MP4、GIF、 MP3等)。例如,VideoClips可以从视频文件、图像、文本或自定义动画创建。VideoClips可以有一个音频轨道(这是一个AudioClip)和一个mask(一个特殊的VideoClip,指示当剪辑与其他剪辑混合时要隐藏哪些部分)。

二、moviepy应用的考量

2.1、moviepy适用的场景

  • 许多视频需要处理或以复杂的方式组合

  • 在web服务器(Django、Flask等)上自动创建视频或gif

  • 自动化处理单调乏味的任务如:在跟踪对象中插入标题、剪辑场景、制作片尾字幕(end credits)、字幕等…

  • 从另一个python库(Matplotlib、Mayavi、Gizeh、scikit images…)生成的图像创建动画

  • 对自己的视频特效进行编码,以执行现有视频编辑器无法执行的操作

2.2、使用moviepy的好处

  • 使用方便:基本操作可以在一行中完成。对于新手来说,代码很容易学习和理解

  • 操作灵活:可以完全控制视频和音频的帧,很容易创建自己的效果,非常简单

  • 可移植:代码使用非常通用的软件(Numpy和FFMPEG),几乎可以在任何带有任意版本的Python的机器上运行

2.3、不建议使用moviepy场景

以下两种场景使用moviepy不是最好的选择:

  • 需逐帧进行视频分析(如人脸检测或其他花哨的东西)。这可以通过MoviePy与其他库结合来完成,但实际上,只要使用imageio、OpenCV或SimpleCV,这些库就专门处理这些任务

  • 只需要转换视频文件,或将一系列图像文件转换为电影。在这种情况下,直接调用ffmpeg(或avconv或mencoder…)会比通过MoviePy更快地提高内存效率

2.4、moviepy的局限性

  • MoviePy还不能处理流式视频(从网络摄像头读取、或在远程机器上实时渲染视频),也并不是真正为涉及到电影的许多连续帧视频处理而设计(比如视频稳定就需要用别的软件来实现)

  • 如果同时使用多个视频、音频和图像源(>100),也可能会出现内存问题,但这将在以后的版本中修复

三、安装

MoviePy安装非常简单,使用pip安装时,请将站点指向国内的镜像站点,否则下载很慢或者下载不下来,老猿使用清华的镜像,指令是:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple moviepy

注意:

1、moviepy全小写,安装时会自动安装相关依赖包;
2、建议安装最新的版本1.0.3,因为1.0.2中有个比较大的bug,请见《在Python中使用moviepy进行视频剪辑时输出文件报错 ‘NoneType’ object has no attribute 'stdout’问题》;
3、如果没有安装最新版本,可以执行版本升级,指令:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple moviepy --upgrade

四、后续安排

本部分后续章节内容每章节将逐一分解介绍一个或一类moviepy相关的功能,并通过PyQt开发对应的图形界面,以此作为一个个PyQt实战的程序,但在每章内容中只会简单介绍PyQt实现方面的内容,不会详细介绍PyQt实现的具体步骤。后续章节将在专栏《PyQt+moviepy音视频剪辑实战》和收费专栏《moviepy音视频开发专栏》同时发布,但收费专栏中会提供完整代码,并可能根据情况会有一些内容的差异。

更多moviepy的介绍请参考《PyQt+moviepy音视频剪辑实战文章目录》或《moviepy音视频开发专栏》。

关于收费专栏

老猿的付费专栏《使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,付费专栏《moviepy音视频开发专栏》详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,两个专栏加起来只需要19.9元,都适合有一定Python基础但无相关专利知识的小白读者学习。这2个收费专栏都有对应免费专栏,只是收费专栏的文章介绍更具体、内容更深入、案例更多。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《专栏:Python基础教程目录》从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

本文在CSDN的“老猿Python”首发,头条号、微信公众号和百家号“老猿Python”转载,由于这些平台对外部链接的限制,文中不能包含外部链接。如果是头条请点击文章底部最下方的“了解更多”跳转CSDN阅读原文,如果是微信公众号请点击文章底部最下方的“阅读原文”跳转CSDN阅读原文,否则请在百度搜索或CSDN搜索中输入"CSDN老猿Python”加文章标题关键字搜寻本文。

本文转转自微信公众号老猿Python原创https://mp.weixin.qq.com/s/7n0yHVuj8p1fe3DArhJYgg,如有侵权,请联系删除。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Karen110 Karen110
3年前
Python音视频剪辑库MoviePy中文教程导览
一、简介MoviePy是一个用于视频编辑的Python模块,可用于进行视频的基本操作(如剪切、拼接、标题插入)、视频合成(也称非线性编辑)、视频处理或创建高级效果。它可以读写最常见的视频格式,MoviePy能处理的视频是ffmpeg格式的,老猿理解支持的文件类型至少包括:\.mp4\.wmv\.rm\.avi\.flv\.webm\.wav\.
Karen110 Karen110
3年前
三行Python程序代码实现MP4视频转GIF动画文件
一、引言最近看到好几篇类似“n行Python代码…”的博文,看起来还挺不错,简洁、实用,传播了知识、带来了阅读量,撩动了老猿的心,决定跟风一把,写个视频转动画的三行代码的极简实现。二、moviepy2.1、moviepy介绍要实现视频转动画,老猿使用了moviepy库。MoviePy是一个用于视频编辑的Python模块,可用于进行视频的基本操作(如剪
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这