使用 Python 进行视频编辑
项目描述
MoviePy(完整文档)是一个用于视频编辑的 Python 库:剪切、连接、标题插入、视频合成(也称为非线性编辑)、视频处理和创建自定义效果。有关一些使用示例,请参见图库。
MoviePy 可以读取和写入所有最常见的音频和视频格式,包括 GIF,并在 Windows/Mac/Linux 上运行,使用 Python 2.7+ 和 3(或仅来自 v.1.0 的 Python 3.4+)。它在 IPython 笔记本中运行:
例子
在本例中,我们打开一个视频文件,选择 t=50s 和 t=60s 之间的子剪辑,在屏幕中央添加一个标题,并将结果写入一个新文件:
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 维护人员似乎都很忙,我们很想听到有兴趣帮助解决一些问题的开发人员(尤其是影响您的)或审查拉取请求。如果您有兴趣,请打开问题或直接联系我们。谢谢!
安装
MoviePy 依赖于 Python 模块Numpy、imageio、Decorator和tqdm,它们将在 MoviePy 的安装过程中自动安装。在您第一次使用 MoviePy 时,应自动下载/安装软件 FFMPEG(通过 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 的后端,但您也可以使用 MoviePy 而不使用 ImageMagick 创建 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。
如果未安装 PIL 和 OpenCV, Scipy(用于跟踪、分割等)可用于调整视频剪辑的大小。
某些高级图像处理可能需要Scikit Image 。
某些高级图像处理可能需要OpenCV 2.4.6或更新版本(提供包cv2的版本)。
安装完成后,MoviePy 会自动检测到 ImageMagick(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。这个bug是可以修复的。修改该目录下的文件:/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
您可以将其他参数传递给文档构建,例如 clean build:
$ 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 上,欢迎每个人贡献、寻求帮助或简单地提供反馈。请阅读我们的贡献指南以获取有关如何贡献的更多信息!