使用Python进行视频编辑
项目描述
MoviePy(完整文档)是一个Python视频编辑库:剪辑、拼接、标题插入、视频合成(即非线性编辑)、视频处理和自定义效果创建。请参阅画廊以了解一些使用示例。
MoviePy 可以读取和写入所有最常用的音频和视频格式,包括 GIF,并在 Windows/Mac/Linux 系统上运行,需要 Python 2.7+ 和 3(或从 v.1.0 版本开始仅 Python 3.4+)。以下是它在 IPython 笔记本中的运行情况。
示例
在这个示例中,我们打开一个视频文件,选择 t=50 秒到 t=60 秒的子剪辑,在屏幕中心添加一个标题,并将结果写入新文件。
from moviepy.editor import *
video = VideoFileClip("myHolidays.mp4").subclip(50,60)
# Make the text. Many more options are available.
txt_clip = ( TextClip("My Holidays 2013",fontsize=70,color='white')
.set_position('center')
.set_duration(10) )
result = CompositeVideoClip([video, txt_clip]) # Overlay text on video
result.write_videofile("myHolidays_edited.webm",fps=25) # Many options...
需要维护者!
由于越来越多的人寻求支持(截至 2019 年 9 月有 320 个开放问题!)以及所有 MoviePy 维护者似乎都很忙,我们非常希望听到那些有兴趣提供帮助、解决一些问题(特别是影响您的问题)或审查拉取请求的开发者的消息。如果您感兴趣,请发起一个 issue 或直接联系我们。谢谢!
安装
MoviePy 依赖于 Python 模块 Numpy、imageio、Decorator 和 tqdm,这些模块将在安装 MoviePy 时自动安装。软件 FFMPEG 应该在您首次使用 MoviePy 时自动下载/安装(由 imageio 完成,安装可能需要几秒钟)。如果您想使用 FFMPEG 的特定版本,请遵循 config_defaults.py 中的说明。如果遇到问题,请提供反馈。
手动安装:从 PyPI 或如果您想要开发版本,从 GitHub 下载源代码,将所有内容解压缩到一个文件夹中,打开终端并输入
$ (sudo) python setup.py install
使用 pip 安装:如果您已安装 pip,只需在终端中输入以下命令
$ (sudo) pip install moviepy
如果您既未安装 setuptools 也未安装 ez_setup,上面的命令将失败。在这种情况下,在安装之前请输入以下内容
$ (sudo) pip install ez_setup
可选但有用的依赖项
您可以通过以下方式安装带有所有依赖项的 moviepy
$ (sudo) pip install moviepy[optional]
ImageMagick 不是必需的,但如果您想插入文本则需要它。它也可以用作 GIF 的后端,尽管您也可以不使用 ImageMagick 就使用 MoviePy 创建 GIF。
一旦您安装了 ImageMagick,MoviePy 将自动检测到它(但在 Windows 上除外!)。Windows 用户在手动安装 MoviePy 之前,需要编辑 moviepy/config_defaults.py 以提供 ImageMagick 二进制文件的路径,该文件称为 convert。它应该看起来像这样
IMAGEMAGICK_BINARY = "C:\\Program Files\\ImageMagick_VERSION\\convert.exe"
PyGame 对于视频和声音预览是必需的(如果您打算在服务器上使用 MoviePy 则不相关,但对于手动高级视频编辑是必需的)。
对于高级图像处理,您可能需要以下一个或多个包
Python 图像库 (PIL) 或更好的是其分支 Pillow。
Scipy(用于跟踪、分割等)可以用来调整视频剪辑的大小,如果未安装 PIL 和 OpenCV。
Scikit Image 可能需要用于某些高级图像操作。
OpenCV 2.4.6 或更高版本(提供 cv2 包的版本)可能需要用于某些高级图像操作。
安装后,ImageMagick 将被 MoviePy 自动检测到(但对于 Windows 用户和 Ubuntu 16.04LTS 用户除外)。
对于Windows用户,在手动安装MoviePy之前,请进入 moviepy/config_defaults.py 文件,并指定名为 magick 的ImageMagick二进制文件的路径。它应该看起来像这样
IMAGEMAGICK_BINARY = "C:\\Program Files\\ImageMagick_VERSION\\magick.exe"
如果您使用的是较旧的ImageMagick版本,请注意可执行文件名不是 magick.exe,而是 convert.exe。在这种情况下,IMAGEMAGICK_BINARY属性应该是 C:\\Program Files\\ImageMagick_VERSION\\convert.exe
对于Ubuntu 16.04LTS用户,在终端上安装MoviePy后,MoviePy将无法检测到IMAGEMAGICK。这个错误可以通过修改此目录下的文件来修复:/etc/ImageMagick-6/policy.xml,取消注释以下语句 <!– <policy domain=”path” rights=”none” pattern=”@*” /> –>。
PyGame 对于视频和声音预览是必需的(如果您打算在服务器上使用MoviePy进行工作,则此功能无用,但对于高级视频编辑 手动 来说是必不可少的)。
例如,使用 clip.resize 方法需要安装至少Scipy、PIL、Pillow或OpenCV中的一个。
文档
运行 build_docs 需要额外的依赖项,需要安装。
$ (sudo) pip install moviepy[docs]
可以通过以下方式生成和查看文档
$ python setup.py build_docs
您可以向文档构建过程传递额外的参数,例如清理构建
$ python setup.py build_docs -E
更多信息请参阅 Sphinx 文档。
1.0.0版新增功能:进度条和带有Proglog的消息
在1.0.0版中引入了不兼容的更改,以使用 Proglog 管理进度条和消息,这可以在控制台以及Jupyter笔记本或任何用户界面(如网站)中显示漂亮的进度条。
要显示适合笔记本的进度条,首先安装IPyWidgets
sudo pip install ipywidgets
sudo jupyter nbextension enable --py --sys-prefix widgetsnbextension
然后在笔记本的开始处输入
import proglog
proglog.notebook()
有关更多选项,请查看Proglog项目页面。
运行测试
要本地运行测试套件,请先进入项目目录并运行以下命令以安装依赖项
$ (sudo) pip install moviepy[test]
然后可以通过以下方式执行测试套件
$ pytest
贡献
MoviePy是开源软件,最初由 Zulko 编写,并使用MIT许可证发布。项目托管在 GitHub 上,任何人都可以贡献、寻求帮助或简单地提供反馈。有关如何贡献的更多信息,请参阅我们的 贡献指南。