本节说明了何时可以使用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脚本中,您加载视频或音频文件,对其进行修改,将它们放在一起,然后将最终结果写入新的视频文件。 例如,让我们加载上个假期的视频,降低音量,在前十秒钟的视频中间添加标题,然后将结果写入文件中:
# Import everything needed to edit video clips
from moviepy.editor import *
# Load myHolidays.mp4 and select the subclip 00:00:50 - 00:00:60
clip = VideoFileClip("myHolidays.mp4").subclip(50,60)
# Reduce the audio volume (volume x 0.8)
clip = clip.volumex(0.8)
# Generate a text clip. You can customize the font, color, etc.
txt_clip = TextClip("My Holidays 2013",fontsize=70,color='white')
# Say that you want it to appear 10s at the center of the screen
txt_clip = txt_clip.set_pos('center').set_duration(10)
# Overlay the text clip on the first video clip
video = CompositeVideoClip([clip, txt_clip])
# Write the result to a file (many options available !)
video.write_videofile("myHolidays_edited.webm")
MoviePy的工作方式
MoviePy使用ffmpeg软件读取和导出视频和音频文件。 它还(可选)使用ImageMagick生成文本并写入GIF文件。 Python的快速数字库Numpy确保了对各种媒体的处理。 高级效果和增强功能使用了Python众多的图像处理库中的一些(PIL,Scikit-image,scipy等)。
image.png
基本概念
MoviePy的中心对象是剪辑,可以是AudioClips或VideoClips。 可以对其进行修改(剪切,放慢,变暗……)或与剪辑混合以形成新的剪辑,可以对其进行预览(使用PyGame或IPython Notebook)并渲染为文件(如MP4,GIF, MP3等)。 例如,可以从视频文件,图像,文本或自定义动画创建VideoClip。 它们可以具有音轨(这是一个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高效。
网友评论