前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python视频剪辑工具moviePy

Python视频剪辑工具moviePy

作者头像
云深无际
发布2021-04-14 11:41:10
1.9K0
发布2021-04-14 11:41:10
举报
文章被收录于专栏:云深之无迹云深之无迹

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
媒体处理
媒体处理(Media Processing Service,MPS)是一种云端音视频处理服务。基于腾讯多年音视频领域的深耕,为您提供极致的编码能力,大幅节约存储及带宽成本、实现全平台播放,同时提供视频截图、音视频增强、内容理解、内容审核等能力,满足您在各种场景下对视频的处理需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档