最近有一些视频需要剪辑,但本人比较懒,不想逐一手工处理。第一个想到的,就是万能的Python。
果不其然google一搜,真的有现成的库 moviepy。如官方文档所介绍的,moviepy是一个用于视频编辑Python库,可以切割、拼接、标题插入,视频合成(即非线性编辑),进行视频处理和自定义效果的设计。总的来说,可以很方便自由地处理视频、图片等文件。
接下来,介绍一下MoviePy的安装及基本操作。欢迎来我的网站查看此文章,排版会更好看一些MoviePy - 用Python玩转视频剪辑!(MoviePy安装及视频文件读取)yuenshui.cn
MoviePy的安装
首先,安装moviepy基本包。与其他的库一样,直接采用 pip 的方式安装即可。
pip install moviepy
第二步,安装依赖包ImageMagic
ImageMagic是用于在视频中填入文本信息的工具,我认为还是很有用处的,需要单独下载exe程序安装。
第三步,设置ImageMagic路径
在上一步中安装了ImageMagic,但此时仍无法使用,因为Python不知道ImageMagic安装在哪里,需要在Python的库文件中找到moviepy/config_defaults.py,并在最后一行加入IMAGEMAGICK_BINARY = "C:\\Program Files\\ImageMagick_VERSION\\convert.exe" (此处修改为你的安装路径)
至此,moviepy安装完毕!
视频文件的读取
剪辑处理视频,首先需要读取到视频文件,主要有VideoFileClip、clips_array、CompositeVideoClips这三种方法
读取视频文件,合并,再导出文件
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]])
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))])
其他设置视频位置的函数
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) )
欢迎关注个人公众号“畅所欲言的小笔记”:talk_freely,每周定期更新文章!