1.MoviePy入门手册
这些是你想用Python编辑视频的理由:
- 你需要用很复杂的方法来处理或组成大量的视频;
- 你想在web服务器(Django、Flask等)自动生成视频或GIF动图;
- 你想自动完成无聊的任务,如插入标题、追踪对象、剪切场景、制作结尾的演职人员表、字幕等等;
- 你想用代码实现视频编辑软件所不能达到的视频效果;
- 你想将从别的Python库里(如Matplotlib、Mayavi、Gizeh、scikit-images等)生成的图片制作成动画。
但在以下情况中,MoviePy并非最好的选择:
- 你只需要视频文件转换,或者将一系列图片文件转换成视频。在这种情况下,直接调用
ffmpeg
(或avconv
、mencoder
等)将比使用MoviePy更快速、更有效率地使用内存。
2.优势与局限性¶
MoviePy在以下方面表现出色:
- 易于上手:一行即可完成一项基本操作。对于新手来说,代码易学易懂。
- 灵活:视频和音频的每一帧都尽在掌握,创作属于自己的特效就像Python一样简单。
- 便携:代码使用十分常见的软件(Numpy和FFMPEG),而且可以在几乎所有版本的Python和几乎所有的机器上运行。
局限性:MoviePy目前还无法对流媒体进行处理(从摄像头或者远程设备获取视频),并且MoviePy并不是被设计成用来对电影的连续帧进行处理(例如视频去抖,你需要寻找另外的软件)。如果你同时处理大量视频,音频以及图片序列(数量大于100)可能会出现内存问题,但是这个问题会在将来的版本当中进行修复。
3.代码示例¶
在典型的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")