Python视频剪辑工具moviePy

2021-04-14 11:41:10 浏览数 (1)

关注了很多的公众号,大佬们的骚操作层出不穷,看的我跃跃欲试。也想整一下。跟在大佬们的后面好看风景(复现操作)。

今天要折腾的是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的

自己安装吧,记得放到系统路径

0 人点赞