关注了很多的公众号,大佬们的骚操作层出不穷,看的我跃跃欲试。也想整一下。跟在大佬们的后面好看风景(复现操作)。
今天要折腾的是moviePy,是一个视频的剪辑库。
MoviePy是一个用于视频编辑的Python模块,你可以用它实现一些基本的操作(比如视频剪辑,视频拼接,插入标题),还可以实现视频合成,还有视频处理,抑或用它加入一些自定义的高级的特效。总之,它的功能还是蛮丰富的。此外,MoviePy可以读写绝大多数常见的视频格式,甚至包括GIF格式!是不是很兴奋呢?基于Python2.7以上的版本,MoviePy可以轻松实现跨平台,Mac/Windows/Linux统统没问题,这也以意味着,MoviePy项目可以部署到服务端,在服务端进行视频处理。真是福音啊!
【PS:现在好多的自媒体公司频繁在各个平台进行视频搬运,对于视频原创性的要求越来越高,用MoviePy可以批量实现视频编辑,结合MoviePy的跨平台特性,可以实现在服务端视频采集,自动处理,发布的流水线作业】
老规矩,pip安装一下库~
代码语言:javascript复制pip install moviepy
安装成功!
突然想起来我还没有视频,我去爬一个下来做实验用~
改下名字。英文名字友好些~
搞个目录,防止文件污染~
小撸一段码~,注意放在同一文件夹下,直接写文件名字就好。至于为什么是zxc.mp4~因为离我手近我好输入~
看一眼输出信息~
代码语言:javascript复制from moviepy.editor import*
# 剪辑50-60秒的音乐 00:00:50 - 00:00:60
video = CompositeVideoClip(
[VideoFileClip("zxc.mp4").subclip(50, 60)])
# 写入剪辑完成的音乐
video.write_videofile("done.mp4")
输出了视频~
成功辣~
看起来,剪切是小问题。那么,我可以拼接嘛~瞎问,给你安排~
去又爬俩视频~
魔性的命名方式~
处理中的目录一角,不知道为什么有mp3格式
处理ing~(视频有点大了,时间比较久)
其实我觉得应该是一张一张的处理(我还是不会打zeng字)淦!
我去吸溜了一碗饭,回来看见已经处理好了~
代码语言:javascript复制from moviepy.editor import VideoFileClip, concatenate_videoclips
clip1 = VideoFileClip("zxc.mp4") # 1
clip2 = VideoFileClip("zx.mp4").subclip(50, 60) # 2
clip3 = VideoFileClip("z.mp4") # 3
final_clip = concatenate_videoclips([clip1, clip2, clip3])
final_clip.write_videofile("big.mp4")
代码在这里,自己改改
你是不是感觉都是基操呢~是呀,基操
逐帧处理
如何反转视频每一帧的绿色和蓝色通道,这个看起来明显一些
mp3又出现了~
自己看吧~
代码语言:javascript复制from moviepy.editor import VideoFileClip
my_clip = VideoFileClip("zxc.mp4")
def scroll(get_frame, t):
"""
处理每一帧图像
"""
frame = get_frame(t)
frame_region = frame[:, :, [0, 2, 1]]
return frame_region
modifiedClip = my_clip.fl(scroll)
modifiedClip.write_videofile("蓝绿.mp4")
代码附上
接着我们来看看最后导出gif呗。
代码语言:javascript复制
import moviepy.editor as mpy
# 获取视频内容
clip = mpy.VideoFileClip('zxc.mp4')
# 按时间划分截取(如下,截取22分25秒到23分55秒的内容)
content = clip.subclip((00, 10), (00, 15))
# 截取视频的同时改变帧大小,改为480x360
#content = clip.subclip((22,25),(23,55)).resize((480, 360))
# 生成gif
content.write_gif('get.gif')
还是比较强大的~
那么我需要使用MoviePy吗?
出于以下的情景或原因,我们可能会有使用Python做视频编辑的需求。
*我们有大量的视频需要处理,或者采用复杂的方式将他们拼接。
*我们需要在服务端自动地创建大量视频或者GIF图。
*我们需要在视频中创建视频编辑器中所没有的一些特殊的特效,我们只能敲代码来实现。
*为其他Python库(例如:Matplotlib, Mayavi, Gizeh, scikit-images)生产的图片创建动画效果。
当然,MoviePy并不是万能的,下面这样的需求,MoviePy也无能为力。
*当我们需要逐帧的做图像分析时(例如人脸检测),这真的不是MoviePy的强项,不如使用ImageIO,OpenCV,SimpleCV这样专业的库去处理
*我们仅仅是要将一段视频,或者一系列图片接进一个目标视频中时,我们使用ffmpeg就搞定了,也不用强行使用MoviePy
MoviePy的优点与局限
MoviePy在开发之初,就秉承着下面的理念
*简单直观,基本操作一般一行代码搞定。对于初学者,代码很容易理解和学习。
*灵活弹性,开发者拥有对视频或者音频中每一帧的全部控制权,这也使得我们在创建自定义效果时得心应手。
*跨平台,使用的ffmpeg各个平台都有,可以移植到不同的平台运行。
MoviePy的局限性如下:
*不支持流媒体,它也确实不是为了处理这样的视频而设计的。
*当同时使用太多(官网说>100认为提阿多)的视频,音频,或者图片的时候,我们有可能会遇到内存问题。内存问题亟待优化。
对了,这个库是依赖于ffpemg的
自己安装吧,记得放到系统路径