一、概述
MoviePy是一个用于视频编辑的Python模块,可用于进行视频的基本操作(如剪切、连接、标题插入)、视频合成(也称非线性编辑)、视频处理或创建高级效果。
它可以读写最常见的视频格式,包括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,如有侵权,请联系删除。