moviepy音视频剪辑:使用concatenate_videoclips和clips_array将多个视频合成一个顺序播放或同屏播放的视频
- 专栏:Python基础教程目录
- 专栏:使用PyQt开发图形界面Python应用
- 专栏:PyQt入门学习
- 老猿Python博文目录
- 老猿学5G博文目录
一、视频合成概述
视频合成,也称为非线性编辑,实际上是在一个新剪辑中播放几个剪辑。
请注意视频剪辑通常带有音频和遮罩,它们也是剪辑。当您将这些剪辑组合在一起时,通过将剪辑的原声和遮罩组合在一起,将自动生成最终剪辑的原声和遮罩。所以大多数时候你不需要担心混音和面具。
两种简单的剪辑合成方法是将它们拼接起来(在一个长剪辑中一个接一个地播放它们)或将它们堆叠起来(在一个大剪辑中并排播放)。
二、视频的拼接
2.1、拼接方法和语法
视频的拼接使用方法concatenate_videoclips,调用语法:
concatenate_videoclips(clips, method="chain", transition=None, bg_color=None, ismask=False, padding = 0)
语法释义:
- clips:多个视频剪辑的列表,列表中的每个元素都是VideoClip类型的对象
- method:拼接方法,有2种取值
- “chain”:生成一个简单输出多个剪辑连续帧的剪辑,不论这些剪辑是否相同大小(分辨率)都不进行修正。如果参数列表中的剪辑都没有遮罩,则最终拼接的剪辑也没有遮罩,否则最终剪辑的遮罩就是所有参数剪辑遮罩的拼接,如果对应参数指定剪辑没有遮罩则使用完全不透明的剪辑作为遮罩。如果参数对应的多个剪辑有不同大小又想将拼接剪辑直接输出到文件,需要使用“compose”方法
- “compose”:如果参数对应的剪辑不具有相同分辨率,最终分辨率将是使所有剪辑都不必调整大小的分辨率。因此,最终剪辑具有参数列表中最高剪辑的高度和最宽剪辑的宽度。所有尺寸较小的剪辑将显示为居中。如果mask=True,则边界为透明,否则为由“bg-color”指定的颜色。所有输入剪辑的最高FPS为最终连接剪辑的FPS
- transition: transition指定一个将在列表的每两个剪辑之间播放的剪辑 ,即结果剪辑不但会将参数对应剪辑拼接,而且会在两个剪辑拼接中间插入一个由transition指定的过场剪辑
- bg_color:仅在method="compose"时使用,设置背景色,如果要一个透明剪辑,则设置为None,否则为一个代表RGB颜色的三元组,如(0,0,0)代表黑色,也即透明色
- padding:仅在method=“compose"时使用,两个连续剪辑间的间隔时间,注意如果该参数为赋值,后面的剪辑和前一剪辑的播放有一段时间重叠,这种负数的padding参数,会制造出后一个剪辑逐渐变暗退出的效果。一个非0的padding值会自动将method置为"compose”
- 返回值:最终拼接的剪辑
2.2、案例
fileList = ['F:\\video\\1.mp4', 'F:\\video\\2.mp4','F:\\video\\3.mp4']
tmpClip = []
for fileName in fileList:print(f"准备加载视频文件:{fileName} ")clip = mpe.VideoFileClip(fileName)print(f"加载视频文件:{fileName} 完成,时长为{clip.duration}秒 ")tmpClip.append(clip)print(f"视频文件:{fileName} 已经加载并缓存")print("进行内存视频拼接...")
destClip = mpe.concatenate_videoclips(tmpClip)
print("内存视频拼接完成,准备输出到文件.")
destClip.write_videofile("F:\\video\\dest.mp4")
print("输出到文成功!")
三、视频的堆叠(同屏显示)
3.1、语法
视频的堆叠使用了的clips_array函数,调用语法如下:
clips_array(array, rows_widths=None, cols_widths=None, bg_color = None)
参数说明:
- array:用于存放剪辑的二维列表,每个列表的元素都是一个列表,每个元素的列表代表在屏幕上同行显示的多个剪辑,一维列表中有多少个元素就表示在屏幕上显示多少行,每行视频有多个视频并列。
- rows_widths:不同行的像素宽度,如果设置为None则自动设置
- cols_widths:不同列的像素宽度,如果设置为None则自动设置
- bg_color:为蒙版和未蒙版区域填充颜色。这些设置为None,这些区域将透明,处理速度会慢一些
- 返回值:合成后的剪辑
3.2、样例
print(f"视频将排列成{lines}行{columns}列")
clipArrays = []
tmpClipArray = []
column = 0
for clip in tmpClip:tmpClipArray.append(clip)column += 1if column == columns:clipArrays.append(tmpClipArray)column = 0tmpClipArray = []
destClip = mpe.clips_array(clipArrays)
更多moviepy的介绍请参考《PyQt+moviepy音视频剪辑实战文章目录》或《moviepy音视频开发专栏》。
关于收费专栏
老猿的付费专栏《使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,付费专栏《moviepy音视频开发专栏》详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,两个专栏加起来只需要19.9元,都适合有一定Python基础但无相关专利知识的小白读者学习。这2个收费专栏都有对应免费专栏,只是收费专栏的文章介绍更具体、内容更深入、案例更多。
收费专栏文章目录:《moviepy音视频开发专栏文章目录》、《使用PyQt开发图形界面Python应用专栏目录》,本文收费专栏对应文章为《moviepy音视频剪辑:多个视频合成一个视频》。
对于缺乏Python基础的同仁,可以通过老猿的免费专栏《专栏:Python基础教程目录》从零开始学习Python。
如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。
跟老猿学Python、学5G!
- 专栏:Python基础教程目录
- 专栏:使用PyQt开发图形界面Python应用
- 专栏:PyQt入门学习
- 老猿Python博文目录
- 老猿学5G博文目录
moviepy音视频剪辑:使用concatenate_videoclips和clips_array将多个视频合成一个顺序播放或同屏播放的视频相关推荐
- PyQt+moviepy音视频剪辑实战1:多视频合成顺序播放或同屏播放的视频文件
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.引言 在<moviepy音视频剪辑:音视 ...
- 安防互联网摄像头海康大华硬盘录像机视频流媒体服务器EasyNVR在layer弹出层中使用video标签无法最大化全屏播放问题解决
诞生背景 众所周知,EasyNVR可以将局域网/广域网上的海康/大华等网络摄像头由rtsp转换为rtmp.rtsp.hls.flv协议转换,并提供推流服务,可以将拉到的网络摄像头直接转发到流媒体服务器 ...
- moviepy音视频剪辑:视频基类VideoClip子类VideoFileClip、CompositeVideoClip、ImageSequenceClip介绍
☞ ░ 前往老猿Python博文目录 ░ 一.引言 在<moviepy音视频剪辑:moviepy中的剪辑相关类及关系>介绍了VideoClip主要有六个直接子类(VideoFileClip ...
- PyQt+moviepy音视频剪辑实战2:一个剪裁视频文件精华内容留存工具的实现
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 PyQt+moviepy音视频剪辑实战 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.引言 ...
- pyqt tablewidget 设置一行的背景_PyQt+moviepy音视频剪辑实战2:一个剪裁视频文件精华内容留存工具的实现...
一.引言 最近网上会议很多,网上会议工具大多提供了录播的功能,有些会议内容比较精彩,但中间穿插有些无用的内容,或者有些只有几段精彩,大部分内容可以去除.这就需要对该录播文件进行剪辑,取其精华留存,这样 ...
- Python音视频剪辑库MoviePy1.0.3中文教程导览及可执行工具下载
☞ ░ 前往老猿Python博文目录 ░ 一.简介 MoviePy是一个用于视频编辑的Python模块,可用于进行视频的基本操作(如剪切.拼接.标题插入).视频合成(也称非线性编辑).视频处理或创建高 ...
- [Python MoviePy 音视频开发零基础到实战] 一、用6条代码为你的视频裁剪以及添加水印
一.MoviePy 安装及配置 在 Python 有一个音视频开发模块 MoviePy,MoviePy 依赖于 FFmepg,使用 MoviePy 可以对音视频进行编辑:例如视频合成.视频处理.视频特 ...
- Moviepy音视频开发:视频转gif动画或jpg图片exe图形化工具开发案例
☞ ░ 前往老猿Python博文目录 ░ 一.引言 老猿之所以学习和研究Moviepy的使用,是因为需要一个将视频转成动画的工具,当时在网上到处搜索查找免费使用工具,结果找了很多自称免费的工具,但转完 ...
- 适合手机端的ckeditor样式_抖音运营干货(三):9款手机视频剪辑APP,让你轻松玩转后期!...
很多朋友想开始用手机拍视频,可能不知道如何剪辑! 本文将给大家介绍几款好用又方便的手机剪辑短视频工具,即便是零基础,用下面这些工具,你也可以轻松开始剪辑短视频. 选择一款实用好用的剪辑工具很重要,工具 ...
最新文章
- 金士顿u盘量产工具_与时俱进,金士顿双接口优盘支持Type C接口
- 倒计时321控制器设置
- Tomcat源码分析 - 1
- 程序员的项目周期(表情包版)
- 玉柴spn码故障对照表_后处理的故障不总是尿素泵故障,也有可能是这些原因
- centos7 安装 node.js 运行环境、卸载
- python元祖和文件用法举例
- vb6.0 listview隐藏水平方向滚动条_为Vuetify的UI组件添加滚动条
- Spring(一)--作用、IOC容器细节、搭配环境、Spring实验
- numpy中int类型与python中的int
- Handsontable 自定义菜单 自定义命令存放位置
- WINDOWS上OpenCV需要有MediaPlayer才能正确运行?
- Ubuntu18.04、Ubuntu20.04之ROS安装教程
- bootmgr快速修复win7_「科普」UEFI+GPT、Legacy+MBR引导模式介绍 引导修复
- 3d游戏编程(转帖)
- 服务器如何释放虚拟内存,服务器如何释放虚拟内存
- 解决问题最高明的方法:打开自己
- css样式 向下补白,CSS尺寸与补白
- vlookup使用步骤_vlookup怎么用(vlookup具体使用方法详细步骤)
- 删除错误提交的bit 历史_软件错误的历史