MoviePy是一个用于视频编辑的python模块,你可以用它实现一些基本的操作(比如视频剪辑,视频拼接,插入标题),还可以实现视频合成,还有视频处理,抑或用它加入一些自定义的高级的特效。总之,它的功能还是蛮丰富的。此外,MoviePy可以读写绝大多数常见的视频格式,甚至包括GIF格式!是不是很兴奋呢?基于Python2.7以上的版本,MoviePy可以轻松实现跨平台,Mac/Windows/Linux统统没问题,这也以意味着,MoviePy项目可以部署到服务端,在服务端进行视频处理。真是福音啊!

安装:  pip install moviepy -i https://pypi.douban.com/simple

from moviepy.editor import *

video=VideoFileClip("1.mp4")  #导入视频
vid=video.subclip(50,60) #截取视频
#截取00:00:50 - 00:00:60部分

vid.write_videofile("my.MP4") #把vid视频写入my.MP4文件

时间既可以用(t_start=230.54),以秒的时间来表示,也可以用(t_start=(3,50.54)),以3分50.54秒的形式来表示,还可以 (t_start=(0,3,50.54))或者 (t_start=(00:03:50.54)),以,小时,分钟,秒的形式老表示

大多数没有赋值的时间参数会有一个默认值,比如clip.subclip(t_start=50),t_end的默认值就是视频的长度,clip.subclip(t_end=50),那么t_start就默认为0.当时间是负数的时候,代表倒数n秒。比如,clip.subclip(-20, -10)会截取倒数20秒到倒数10秒之间的片段

video.write_videofile("my.mp4",audio=False)  #把视频写入文件
#audio=False 表示去掉音频;这个指令推荐去掉音频,因为很容易出错--后面再加上音频
video = vid.subclip(10, vid.duration-12) # 剪辑视频,从10秒开始到视频结尾前12秒

视频合成:

from moviepy.editor import *

vid2=VideoFileClip("b.mp4")
vid3=VideoFileClip("c.mp4") video = concatenate_videoclips([vid2, vid3]) #视频合成--视频拼接
#并不需要相同的时长或者大小
#注意:合并视频的尺寸要一样,否则后面的视频会出现花屏
video.write_videofile("my.mp4")
s=vid1.reader.size  #返回视频的尺寸
#[960, 540]

缩放:

from moviepy.editor import *

vid1=VideoFileClip("a.mp4")
s=vid1.reader.size #返回视频的尺寸
#[960, 540]
print(s)
s=vid1.reader.fps #返回的帧率
v=vid1.resize(0.5) #尺寸等比缩放0.5
#注意:只有写入文件后才有效果 v.write_videofile("my.mp4")
vid=VideoFileClip("a.mp4")
s=vid.reader.size
print('原视频尺寸:',s)
vid1=vid.resize(width=480) #修改视频的尺寸
#当我们写出clip.resize(width=480),moviepy并不是立刻就逐帧修改clip。一般只会先修改第一帧,其他的左右的帧只有在需要的时候(最后写入文件或者预览)才会被resize。另一方面,可以这样讲,创建一个clip,几乎是不会占用时间和内存的,几乎所有的计算其实发生在最后转换的时刻
#宽高都是同时按比例修改的
video = vid.speedx(2)  # 2倍速
vid.save_frame("frame.jpeg")        #保存第一帧
vid.save_frame("frame.png", t=2) #保存2s时刻的那一帧
vid=VideoFileClip("a.mp4")
txt = TextClip("my sipin 2019",fontsize=70,color='white') #创建文本对象
#不支持中文
txt = txt.set_pos('center').set_duration(10) # 文本clip在屏幕正中显示持续10秒
video = CompositeVideoClip([vid, txt]) #把文本合成到视频中
vid=VideoFileClip("a.mp4")
vid1 = vid.fx(vfx.mirror_x) #x轴镜像
vid2 = vid.fx(vfx.mirror_y) #y轴镜像 video = clips_array([[vid, vid1],[vid, vid2]]) #视频叠加 video.write_videofile("my.mp4",audio=False)

效果:

vid=VideoFileClip("b.mp4")
vid1=VideoFileClip("a240.mp4") video = CompositeVideoClip([vid,vid1.set_pos((45,150))]) #前后叠加合成
#参数2视频在参数1视频的前面
#合成之后的视频尺寸是参数1视频的尺寸
#set_pos((45,150) 是视频的坐标位置

set_pos("center") #居中
set_pos(("center","top")) #水平方向居中,垂直方向在顶部
set_pos(("left","center")) #水平方向在左边,垂直方向居中
set_pos((0.4,0.7), relative=True) #0.4倍宽处,0.7倍高处
set_pos(lambda t: ('center', 50+t)) #水平居中,向下移动

效果:

音频:

vid=VideoFileClip("b.mp4")
audioclip =AudioFileClip("b.mp4") #从视频文件中提取音频
audioclip1 =vid.audio #从视频对象中提取音频
audioclip.write_audiofile('b.mp3') #写入音频文件
vid=VideoFileClip("mywusen.mp4")  #无声视频
audioclip =AudioFileClip("b.mp4")
video = vid.set_audio(audioclip) #音频视频合成 video.write_videofile("my.mp4")

解决错误问题:

出现 'NoneType' object has no attribute 'stdout'

参看:https://blog.csdn.net/RocHoo/article/details/103273603

moviepy中文手册   http://www.moviepy.com.cn/thread-30-1-1.html

python--moviepy--视频编辑的更多相关文章

  1. PyQt(Python+Qt)学习随笔:MoviePy视频转GIF动图相关方法介绍

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 MoviePy能处理的视频是ffmpeg格式的,老猿理解支持的文件类型 ...

  2. Python MoviePy中文教程导览及可执行音视频剪辑工具下载

    ☞ ░ 前往老猿Python博文目录 ░ <Python音视频剪辑库MoviePy1.0.3中文教程导览及可执行工具下载>是老猿两个关于moviepy的专栏<PyQt+moviepy ...

  3. Python音视频剪辑库MoviePy1.0.3中文教程导览及可执行工具下载

    ☞ ░ 前往老猿Python博文目录 ░ 一.简介 MoviePy是一个用于视频编辑的Python模块,可用于进行视频的基本操作(如剪切.拼接.标题插入).视频合成(也称非线性编辑).视频处理或创建高 ...

  4. 零基础快速掌握Python系统管理视频课程【猎豹网校】

    点击了解更多Python课程>>> 零基础快速掌握Python系统管理视频课程[猎豹网校] 课程目录 01.第01章 Python简介.mp4 02.第02章 IPython基础.m ...

  5. [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作

    [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作 转载请注明出处 一.关于为什么用pymediainfo以及pymediainfo的安装 使用python对视频/音频文件进行详 ...

  6. Python音视频开发:消除抖音短视频Logo的图形化工具实现

    ☞ ░ 前往老猿Python博文目录 ░ 一.引言 在<Python音视频开发:消除抖音短视频Logo和去电视台标的实现详解>节介绍了怎么通过Python+Moviepy+OpenCV实现 ...

  7. Python音视频开发:消除抖音短视频Logo和去电视台标

    ☞ ░ 前往老猿Python博文目录 ░ 一.引言 对于带Logo(如抖音Logo.电视台标)的视频,有三种方案进行Logo消除: 直接将对应区域用对应图像替换: 直接将对应区域模糊化: 通过变换将要 ...

  8. 用视频编辑软件打不开jpg格式的图片的解决方法

    有时候我们把PSD.JPG等图片导入到素材库中会发现EDIUS视频编辑软件根本就不支持,显示黑屏状态.可是当我们把图片导入EDIUS NX支持下的premierepro里却能够正常显示.这是什么原因呢 ...

  9. Python远程视频监控

    Python远程视频监控程序   老板由于事务繁忙无法经常亲临教研室,于是让我搞个监控系统,让他在办公室就能看到教研室来了多少人.o(>﹏<)o||| 最初我的想法是直接去网上下个软件,可 ...

  10. LanSoEditor_advance1.8.0 视频编辑的高级版本

    ------------------------------------------2017年1月11日11:18:33------------------------------------- 我们 ...

随机推荐

  1. 代码: 0x80131500 win10应用商店崩溃了

    网上搜索大部分认同的结果如下 1.打开“运行”输入 inetcpl.cpl (“WINDOWS”+“R”键,输入 inetcpl.cpl亦可) 2.点开高级往下拉,勾上"使用TLS 1.2& ...

  2. python函数 全局变量和局部变量

    li1=[1,2,3,4,5] str1='abc' def func1(): li1=[7,8,9] str1='efg' print(str1) func1() print(li1)#输出的结果为 ...

  3. Hadoop三种架构介绍及搭建

    apache  hadoop三种架构介绍(standAlone,伪分布,分布式环境介绍以及安装) hadoop 文档 http://hadoop.apache.org/docs/ 1.StandAlo ...

  4. Python中的 _init__和 _new__的区别

    使用python 的面向对象写过程序之后,相信童鞋对 __init__ 方法已经非常的熟悉了.这个方法通常是 在初始化一个实例的时候使用的. 例如: class MysqlConnector(obje ...

  5. Luogu P2617 Dynamic Rankings(整体二分)

    题目 动态区间第K小模板题. 一个非常可行的办法是BIT套动态开点权值SegTree,但是它跑的实在太慢了. 然后由于这题并没有强制在线,所以我们可以使用整体二分来吊打树套树. 当然如果强制在线的话就 ...

  6. awk--基本操作

    二:awk--将一行分为数个字段处理 PS:awk [option] '条件类型 {动作1} 条件类型{动作2} ...' filename PS: awk 'Pattern {action}' fi ...

  7. 面向对象-this关键字的概述和应用

    /* 我们曾经说过:定义名字要做到见名知意. this:是当前类的对象引用.简单的记,它就代表当前类的一个对象. 注意:谁调用这个方法,在该方法内部的this就代表谁. this的场景: 解决局部变量 ...

  8. luogu题解 P1462 【通往奥格瑞玛的道路】二分+spfa

    题目链接: https://www.luogu.org/problemnew/show/P1462 思路: 又是一道水题,很明显二分+最短路 而且这道题数据非常水,spfa有个小错误居然拿了91分还比 ...

  9. O017、部署DevStack

    参考https://www.cnblogs.com/CloudMan6/p/5357273.html   本节按照以下步骤部署 DevStack 实验环境,包括控制节点和计算节点.详细的部署和配置可以 ...

  10. java实现spark常用算子之distinct

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...