最近有一些视频需要剪辑,但本人比较懒,不想逐一手工处理。第一个想到的,就是万能的 Python。
果不其然 google 一搜,真的有现成的库 moviepy是一个用于视频编辑 Python 库,可以切割、拼接、标题插入,视频合成(即非线性编辑),进行视频处理和自定义效果的设计。总的来说,可以很方便自由地处理视频、图片等文件。
英文版官方文档地址: https://zulko.github.io/moviepy/。中文版文档,本人近期本文打算做一些翻译,估计要两三个月时间,到时再把地址更新上来。
接下来,介绍一下 MoviePy 的安装及基本操作。
MoviePy 的安装
首先,安装moviepy基本包。与其他的库一样,直接采用 pip 的方式安装即可。
pip install moviepy
1
pipinstallmoviepy
第二步,安装依赖包 ImageMagic
ImageMagic 是用于在视频中填入文本信息的工具,我认为还是很有用处的,需要单独下载 exe 程序安装。
第三步,设置 ImageMagic 路径
在上一步中安装了 ImageMagic,但此时仍无法使用,因为 Python 不知道 ImageMagic 安装在哪里,
需要在 Python 的库文件中找到moviepy/config_defaults.py,并在最后一行加入IMAGEMAGICK_BINARY = "C:\\Program Files\\ImageMagick_VERSION\\convert.exe"
第四步,安装ffmpeg(可忽略)
打开 Python Terminal,输入from moviepy.editor import *即可自动安装此模块
至此,moviepy安装完毕!
视频文件的读取
剪辑处理视频,首先需要读取到视频文件,主要有VideoFileClip、clips_array、CompositeVideoClips这三种方法
读取视频文件,合并,再导出文件
Python
clip1 = VideoFileClip("1.flv").subclip(10,20) #读取视频,并截取10-20秒的内容
clip2 = VideoFileClip("2.webm").resize(0.60) # 将视频画面尺寸缩小到60%
final_clip = concatenate_videoclips([clip1,clip2]) #视频合并
final_clip.write_videofile("hebing.mp4")
1
2
3
4
clip1=VideoFileClip("1.flv").subclip(10,20)#读取视频,并截取10-20秒的内容
clip2=VideoFileClip("2.webm").resize(0.60)# 将视频画面尺寸缩小到60%
final_clip=concatenate_videoclips([clip1,clip2])#视频合并
final_clip.write_videofile("hebing.mp4")
将多段视频以列表展现的形式显示
final_clip = clips_array([[clip1, clip2],[clip3, clip4]])
1
final_clip=clips_array([[clip1,clip2],[clip3,clip4]])
CompositeVideoClips(视比 concatenate_videoclips、clips_array 好用,推荐使用此方法)
合并视频文件,可选择起止位置,也可设置渐进切换
video = CompositeVideoClip([clip1, # starts at t=0
clip2.set_start(5), # start at t=5s
clip3.set_start(9)]) # start at t=9s,fade-in 的形式转换
video = CompositeVideoClip([clip1,
clip2.set_pos((45,150)),
clip3.set_pos((90,100))])
1
2
3
4
5
6
video=CompositeVideoClip([clip1,# starts at t=0
clip2.set_start(5),# start at t=5s
clip3.set_start(9)])# start at t=9s,fade-in 的形式转换
video=CompositeVideoClip([clip1,
clip2.set_pos((45,150)),
clip3.set_pos((90,100))])
其他设置视频位置的函数
clip2.set_pos((45,150)) # x=45, y=150 , 设置视频展示的位置
clip2.set_pos("center") # 居中
# 顶部居中
clip2.set_pos(("center","top"))
# 顶部靠左
clip2.set_pos(("left","center"))
# 在屏幕的相对位置
clip2.set_pos((0.4,0.7), relative=True)
# 在中心位置考下50的地方
clip2.set_pos(lambda t: ('center', 50+t) )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
clip2.set_pos((45,150))# x=45, y=150 , 设置视频展示的位置
clip2.set_pos("center")# 居中
# 顶部居中
clip2.set_pos(("center","top"))
# 顶部靠左
clip2.set_pos(("left","center"))
# 在屏幕的相对位置
clip2.set_pos((0.4,0.7),relative=True)
# 在中心位置考下50的地方
clip2.set_pos(lambdat:('center',50+t))
墨痕|畅所欲言的小笔记 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:MoviePy – 用Python玩转视频剪辑!(MoviePy安装及视频文件读取)