【MoviePy 中文文档】快速演示
本节说明何时可以使用 MoviePy 以及它是如何工作的。
我需要 MoviePy 吗?
以下可能是你想要在 Python 中编辑视频的几个原因:
你有许多视频要以复杂的方式处理或编辑。
你想在 Web 服务器(Django,Flask等)上自动创建视频或 GIF。
你想自动化繁琐的任务,例如标题插入跟踪对象、剪辑场景、制作片尾字幕、字幕等......
你想编写自己的视频效果以执行现有视频编辑器无法执行的操作。
你想从另一个 Python 库生成的图像创建动画(Matplotlib,Mayavi,Gizeh,scikit-images...)
以下是 MoviePy 不是最佳解决方案的一些用途:
你只需要进行逐帧视频分析(使用人脸检测或其他花哨的东西)。这可以通过 MoviePy 与其他库一起完成,但实际上,只需使用 imageio,OpenCV 或 SimpleCV,这些是专门执行这些任务的库。
你只想转换视频文件,或将一系列图像文件转换为电影。在这种情况下,最好直接调用(
ffmpeg
或avconv
或mencoder
...)它将比通过 MoviePy 处理更快、更节省内存。
优点和局限性
MoviePy 的开发考虑了以下目标:
简单直观:基本操作可以在一行代码中完成。该代码对于新手来说易于学习和理解。
灵活:你可以完全控制视频和音频的帧,并且创建自己的效果就像 Py 一样容易。
便携:该代码使用非常常见的软件(Numpy 和 FFmpeg),并且可以在(几乎)任何具有(几乎)任何版本的 Python 的机器上运行。
对于限制:MoviePy(尚)无法以流式传输视频(从网络摄像头读取,或在远程机器上实时渲染视频),并且并非真正设计用于涉及电影中许多连续帧的视频处理(如视频稳定,你需要另一个软件)。如果同时使用多个视频、音频和图像源(>100),也可能会出现内存问题,但这将在将来的版本中修复。
示例代码
在典型的 MoviePy 脚本中,您可以加载视频或音频文件,修改它们,将它们放在一起,然后将最终结果写入新的视频文件。例如,让我们加载我上次假期的视频,降低音量,在视频中心添加前十秒的标题,然后将结果写入文件:
# 导入编辑视频剪辑所需的所有内容from moviepy.editor import * # 加载 myHolidays.mp4 并选择子片段 00:00:50 - 00:00:60clip = VideoFileClip('myHolidays.mp4').subclip(50, 60) # 降低音频音量 (volume x 0.8)clip = clip.volumex(0.8) # 生成文本剪辑,您可以自定义字体、颜色等txt_clip = TextClip('My Holidays 2013', fontsize = 70, color = 'white') # 让文本在屏幕中央出现10秒txt_clip = txt_clip.set_pos('center').set_duration(10) # 将文本剪辑覆盖在第一个视频剪辑上video = CompositeVideoClip([clip, txt_clip]) # 将结果写入文件(有许多选项可用!)video.write_videofile('myHolidays_edited.webm')
MoviePy 如何工作
MoviePy 使用软件 FFmpeg
来读取和导出视频和音频文件。它还(可选)使用 ImageMagick 生成文本和写入 GIF 文件。Python 的 Numpy 确保了对不同媒体的处理。高级效果和增强功能使用了 Python 众多图像处理库(PIL,Scikit-image,scipy 等)。
基本概念
MoviePy 的中心对象是剪辑,可以是 AudioClips
或 VideoClips
。它们可以被修改(剪切,减慢,变暗...)或与剪辑混合以形成新的剪辑,它们可以被预览(使用 PyGame 或 IPython Notebook)并渲染到文件(作为 MP4,GIF,MP3 等)。VideoClips
可以从视频文件、图像、文本或自定义动画中创建。它们可以有一个音轨(即 AudioClip
)和一个蒙版(一种特殊的 VideoClip
,指示在剪辑与其他剪辑混合时隐藏剪辑的哪些部分)。有关更多详细信息,请参阅 创建和导出视频剪辑 和 混合剪辑。
剪辑可以使用 MoviePy 的众多效果之一(如 clip.resize(width = '360')
、clip.subclip(t1, t2)
或 clip.fx(vfx.black_white)
)或使用用户实现的效果来修改剪辑。MoviePy 实现了许多功能(如 clip.fl
,clip.fx
等),这使得在几行代码中编写自己的效果变得非常容易。请参阅 剪辑变换和效果 了解更多信息。
你还可以在 moviepy.video.tools
找到一些高级功能,用于跟踪视频中的对象、绘制简单的形状和颜色渐变(对蒙版非常有用)、生成字幕和字幕等。有关这些功能的描述,请参阅 高级工具。
最后,尽管 MoviePy 没有图形用户界面,但有很多方法可以预览剪辑,这些方法允许你微调脚本并确保在以高质量渲染视频时一切都是完美的。请参阅 如何使用 MoviePy 提高效率。