Python Library 学习 - MoviePy 库 视频剪辑
MoviePy 库
视频剪辑库,官方文档
1 安装 和 引入
安装
pip3 install moviepy
引入
import moviepy.editor as mpy
2. 读取与写入
2.1 读取
-
mpy.VideoFileClip(filename, *)
:可读取视频或 gif 文件路径 -
mpy.ImageSequenceClip(file, fps=25)
:读取图片序列file
:可以为一系列图片文件路径(list
),或一个文件夹目录(包含需要加载的图片),或一系列 frame
-
mpy.ImageClip(file)
:-
file
:可以为图片文件路径,一个 3dnumpy.ndarray
数组(包含 RGB 通道的图像数组:width × height × 3) -
video_clip.to_ImageClip(t = 1)
:返回ImageClip()
,第 1 秒时的图面
-
-
-
txt
:字符串,需要添加的文字 -
其他参数:
font
字体,fontsize
字体大小,stroke_width
字体粗细 -
TextClip.list('fonts')
:查找可用字体;TextClip.search('Amiri','fonts')
:查找所有包含 Amiri 的字体
-
注意:当不需要所读取的句柄时,需要关闭(即:clip.close()
),否则在程序运行结束会报错。
2.2 写入
-
clip.write_videofile(filename)
:保存视频- 其他参数:
fps
帧率;audio
bool
类型,是否保存音频
- 其他参数:
-
clip.write_gif(filename)
:保存 gif,需要ImageMagick
library 支持 -
clip.save_frame(filename, t=0)
:保存图片t
指定时间,格式:in seconds15.35
, in(min, sec)
, in(hour, min, sec)
, or as a string:'01:03:05.35'
.
测试实例:从视频中提取音轨并保存
clip = mpy.VideoFileClip('test.mp4') # 读取视频
new_clip = clip.audio # 提取音轨
new_clip.write_audiofile('test.wav') # .wav 为无损音质
new_clip.write_audiofile('test.mp3') # .mp3 为有损音质
2. 展示
-
clip.show(t=0, interactive=False)
:预览某一画面,interactive = True
:点击画面会输出该点的坐标和颜色的RGB值
-
clip.preview(fps=15, audio=True)
:预览视频
注意:clip.show()
和 clip.preview()
需要 Pygame
库支持
-
clip.ipython_display()
和ipython_display(path)
:在 IPython Notebook 中显示- 可用参数:
t
,width
,fps
,autoplay
,loop
- 可用参数:
3. 编辑
-
clip.resize(newsize=None, height=None, width=None)
:缩放画面-
newsize
:(width,height) pixel 单位 或 缩放因子 -
height
和width
:pixel 单位
-
-
clip.subclip(t_start, t_end)
截取时间片段t_start
和t_end
格式:in seconds (15.35), in (min, sec), in (hour, min, sec), or as a string: '01:03:05.35'.
-
clip.subclip(x1, y1, x2, y2)
画面裁剪x1
和y1
左上坐标;x2
和y2
右下坐标
-
mpy.concatenate_videoclips(clips, *)
:多 clips 合并如
:finalclip = mpy.concatenate_videoclips([clip_1, clip_2])
参考资料
[1] MoviePy - 中文文档, InfoQ, 地址