moviepy 简介及安装
一、概述
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 实现的具体步骤。
更多 moviepy 的介绍请参考《PyQt+moviepy音视频剪辑实战文章目录》。
如果对文章内容存在疑问,可以在博客评论区留言,或关注:老猿 Python 微信公号发消息咨询。
版权声明: 本文为 InfoQ 作者【老猿Python】的原创文章。
原文链接:【http://xie.infoq.cn/article/edbbfbfa668d199775a3ad920】。文章转载请联系作者。
评论