moviepy音视频剪辑:视频基类VideoClip子类VideoFileClip、CompositeVideoClip、ImageSequenceClip介绍

VideoFileClip() 加载视频 使用VideoFileClip类 __init__(self, filename, has_mask=False, audio=True, audio_buffersize=200000, target_resolution=None, resize_algorithm='bicubic', audio_fps=44100, audio_nbytes=2, verbose=False, . 阅读详情
☞ ░ 前往老猿Python博文目录 ░

一、引言

在《moviepy音视频剪辑:moviepy中的剪辑相关类及关系》介绍了VideoClip主要有六个直接子类(VideoFileClip、 ImageSequenceClip、CompositeVideoClip、ImageClip、DataVideoClip、UpdatedVideoClip)和两个间接子类(ColorClip, TextClip)。在《moviepy音视频剪辑:视频基类VideoClip子类DataVideoClip、UpdatedVideoClip、ImageClip、ColorClip、TextClip类详解》介绍了DataVideoClip、UpdatedVideoClip、ImageClip、ColorClip、TextClip类,这是因为这几个子类都与VideoClip类在同一模块文件VideoClip.py中。本文将介绍VideofileClip、 ImageSequenceClip、CompositeVideoClip这三个子类。

二、VideoFileClip视频文件剪辑

2.1、概述

VideoFileClip类是VideoClip的直接子类,是从一个视频文件创建一个剪辑类,除了从父类继承的特性和方法外,VideoFileClip实现了自己的构造方法和close方法,另外VideoFileClip有1个自己独的属性filename。VideoFileClip加载视频文件时,可以调整剪辑对应分辨率大小,可以根据应用要求设定是否加载音频。VideoFileClip加载视频文件时,会调用FFMPEG_VideoReader来加载视频文件,加载时会对视频文件进行加锁处理。

2.2、filename属性

filename属性用于存储读取视频文件的文件名,该文件名与读取视频文件给的名字完全一致,无需进行本地化路径转换。

2.3、构造方法

调用语法:
__init__(self, filename, has_mask=False,
                 audio=True, audio_buffersize=200000,
                 target_resolution=None, resize_algorithm='bicubic',
                 audio_fps=44100, audio_nbytes=2, verbose=False,
                 fps_source='tbr')
参数说明:
  • filename:视频文件名,可以带路径
  • has_mask:是否有遮罩 ,如果视频文件带遮罩,则设置has_mask为True。视频文件一般很少带遮罩,但有些视频编码支持遮罩功能。例如如果moviepy合成了一个带遮罩的剪辑,则可以使用《moviepy音视频剪辑:视频剪辑基类VideoClip的属性及方法详解》介绍的VideoClip.write_videofile将剪辑和遮罩、音频信息一起保存到视频文件中
  • audio:如果视频文件不带音频或者不希望加载视频文件的音频,可以将audio参数设置为False
  • audio_buffersize:音频文件读取缓冲区大小,字节为单位,一般用缺省值足够,如果audio_buffersize比一个音频帧的大小还要小,会自动使用音频帧的大小代替
  • target_resolution:设置为加载后需要变换到的分辨率,类型为列表或元组,第一个元素为分辨率的高,第二个为宽,如果高或宽有一个为None,则保持现有纵横比调整帧的大小。如果保持原分辨率不变,则不需要设置本参数或设置为None。如果设置了新的分辨率,则在调用ffmpeg 返回视频剪辑的帧之前会按新的分辨率调整帧的大小。这比使用转换为高分辨率流然后再调整分辨率会快很多
  • resize_algorithm:要改变加载后的视频分辨率,可以通过resize_algorithm指定调整分辨率的算法,缺省值为 “bicubic”,还可以是 “bilinear” 、"fast_bilinear"等。关于算法的更多信息请参考:https://ffmpeg.org/ffmpeg-scaler.html
  • audio_fps:声音的采样频率
  • audio_nbytes:声音采样的位数
  • verbose:是否在标准输出设备上显示处理信息
  • fps_source:从视频的元数据metadata哪个数据中获取fps值,默认设置为’tbr’,但可以设置为’fps’,这可能有助于导入慢动作视频,否则可能会出意外。

2.2、close方法

构造方法会对视频文件进行加锁,并占用相关资源,如果要释放文件和资源,需要调用close方法或等加载处理的进程结束。close方法除了self无其他参数,其目的就是释放文件和其他占用的资源。

需要注意,如果一个VideoFileClip实例被浅拷贝到另一个对象,这两个对象中任意一个调用close方法都可能会释放文件导致另一个实例的close方法失败。具体情况与代码的上下文环境相关。

三、CompositeVideoClip合成视频剪辑

3.1、概述

CompositeVideoClip是一种由其他视频剪辑组合构成一起播放的视频剪辑,这是大多数合成剪辑的基类。《moviepy音视频剪辑:使用concatenate_videoclips和clips_array将多个视频合成一个顺序播放或同屏播放的视频》介绍的concatenate_videoclips在method参数设置为’compose’时,实际上就是调用的CompositeVideoClip完成合成的。

3.2、构造方法

调用语法:

__init__(self, clips, size=None, bg_color=None, use_bgclip=False,ismask=False)

参数说明:
  • clips:多个视频剪辑的列表,列表中的每个元素都是VideoClip类型的对象。列表中的每个剪辑都将显示在列表中其后面出现的剪辑的下面。每个剪辑的pos属性决定剪辑放置在最终合成剪辑屏幕的位置,每个剪辑的mask遮罩属性决定每个剪辑哪部分可见哪部分不可见
  • size:最终剪辑的大小(分辨率),如果size为None,则将clips中第一个剪辑的size作为最终剪辑的size
  • bg_color:设置合成剪辑的背景色,背景色用于剪辑未填充且无遮罩的区域,如果要一个透明剪辑,则设置为None,否则为一个代表RGB颜色的三元组,如(0,0,0)代表黑色,也即透明色。该参数只有use_bgclip为False的情况下使用,实际上是通过构建一个由bg_color指定颜色的ColorClip来实现的
  • use_bgclip:如果列表中的第一个剪辑应用作所有其他剪辑的“背景”,则设置为True。第一个剪辑的大小必须与最后合成剪辑的大小相同。如果没有透明度,则最终剪辑将没有遮罩
  • ismask:最终合成剪辑是否为遮罩剪辑。

3.2、clips属性

clips属性保存合成剪辑所需要的所有剪辑的列表,但不包含背景剪辑,即如果use_bgclip为True,则clips保存的为构造方法clips参数对应列表第二个及之后的所有剪辑,如果use_bgclip为False,则就是构造方法clips参数对应的列表。

3.3、playing_clips方法

playing_clips方法用于判断clips属性中对应剪辑在参数指定的t时刻是否处于播放状态,对处于播放状态的剪辑存放到一个列表中返回。

调用语法:playing_clips(self, t=0)

3.4、close方法

用于关闭音频及由CompositeVideoClip创建的背景剪辑,其他资源的释放不处理。

四、ImageSequenceClip图像序列剪辑

4.1、引言

在《moviepy音视频剪辑:视频剪辑基类VideoClip的属性及方法详解》介绍了write_images_sequence方法,write_images_sequence方法用于将剪辑输出到一系列图像文件中,而ImageSequenceClip则基本上与write_images_sequence过程可逆,用于将一系列图像生成剪辑。

ImageSequenceClip是VideoClip的直接子类,该类自身只有构造方法,其他方法和属性都是继承自父类。

4.2、构造方法

调用语法:
__init__(self, sequence, fps=None, durations=None, with_mask=True,
                 ismask=False, load_images=False)
参数说明:
  • sequence:参数sequence可以是如下三种之一
  • 一个仅包含图片的文件夹路径目录名,目录下的文件将按字母顺序排列作为处理的系列图像文件
  • 一个图像文件名的列表,在这种情况下开发者可以通过load_images参数控制选择将文件图像一次性加载到内存中
  • 一个表示图像的numpy数组列表,注意这种情况不支持遮罩
  • fps:每秒读入的图像帧数,该参数可以通过设定durations来替代
  • durations:每个图像在剪辑中显示的时长列表,因此可以给每个图像不同的播放时间,如果设置了fps,该参数将不起作用
  • with_mask:是否将PNG图像的alpha层作为遮罩
  • ismask:是否将生成剪辑作为遮罩
  • load_images:是否在处理前集中将图像文件加载到内存,如果为True,则对于sequence对应图像文件的情况,一次性的将所有图像文件先加载到内存,否则每处理一个文件加载一个。该参数仅对sequence为文件名列表的情况生效。

更多moviepy的介绍请参考《PyQt+moviepy音视频剪辑实战文章目录》或《moviepy音视频开发专栏》。

关于收费专栏

老猿的付费专栏《使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,付费专栏《moviepy音视频开发专栏》详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,两个专栏加起来只需要19.9元,都适合有一定Python基础但无相关专利知识的小白读者学习。这2个收费专栏都有对应免费专栏,只是收费专栏的文章介绍更具体、内容更深入、案例更多。

收费专栏文章目录:《moviepy音视频开发专栏文章目录》、《使用PyQt开发图形界面Python应用专栏目录》,本文收费专栏对应文章为《moviepy音视频剪辑:视频基类VideoClip子类VideoFileClip、CompositeVideoClip、ImageSequenceClip介绍及使用案例》。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《专栏:Python基础教程目录》从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

跟老猿学Python、学5G!

☞ ░ 前往老猿Python博文目录 ░
Moviepy自动化视频处理:合成视频剪辑 Moviepy自动化视频处理:合成视频剪辑 CompositeVideoClip类提供了一个非常灵活的方法来合成剪辑,但它比concatenate_videoclips和clips_array更复杂一些。 Moviepy视频处理示例:移动的文字效果如下: Moviepy视频自动化处理:合成视频剪辑 from moviepy.editor import * clip1 = VideoFil 阅读详情

相关推荐

Python中的ImageSequenceClip使用方法详解及案例

在上面的代码中,首先使用glob库搜索指定路径下所有的jpg文件,并读取背景音乐。最后,使用resize方法调整视频剪辑的尺寸,并使用write_videofile方法导出带有音轨的mp4格式的文件。例如,可以使用duration参数来控制每张图片在视频剪辑中显示的时间,使用resize参数来调整图片的大小,使用make_frame参数来自定义图像序列等等。本文将介绍Python中的一个常用视频处理库MoviePy中的ImageSequenceClip方法,包括其基本用法和使用案例,并且提供相应的源代码。

qq_37934722的博客 1032

python+moviepy音视频处理(一):基本操作

安装:pip install moviepy'''moviepy.editor模块类'''

北冥有鱼的博客 8124

Python视频剪辑-Moviepy视频处理VideoFileClip

在数字时代,视频内容成为了一种非常流行的信息传递方式。无论是在社交媒体上分享日常,还是在商业活动中进行产品推广,高质量的视频都是不可或缺的。本文将介绍如何使用Python的MoviePy库进行基础的视频处理。

Mr数据杨 1416

python 速度 write_videofile_moviepy音视频剪辑基类VideoClip的write_videofile方法codec、bitrate、preset、audio_bitrat...

moviepy音视频剪辑模块的视频剪辑基类write_videofile方法用于将视频剪辑输出到文件,调用语法如下:write_videofile(self, filename, fps=None, codec=None,bitrate=None, audio=True, audio_fps=44100,preset="medium",audio_nbytes=4, audio_codec=Non...

weixin_39603265的博客 1014

moviepy音视频剪辑:视频基类VideoClip子类VideoFileClip、CompositeVideoClip、ImageSequenceClip介绍及使用案例

☞ ░ 前往老猿Python博文目录 ░ 一、引言 在《moviepy音视频剪辑:moviepy中的剪辑相关类及关系》介绍了VideoClip主要有六个直接子类(VideoFileClip、 ImageSequenceClip、CompositeVideoClip、ImageClip、DataVideoClip、UpdatedVideoClip)和两个间接子类(ColorClip, TextClip)。在《moviepy音视频剪辑:视频基类VideoClip子类DataVideoClip、UpdatedV

老猿Python 4069

Python中的ImageSequenceClip介绍

ImageSequenceClip类允许我们将一系列图像转换为视频剪辑,并可以对其进行各种操作,如设置持续时间、添加音频等。总结起来,ImageSequenceClip类是MoviePy库中一个非常方便的类,可以将图像序列转换为视频剪辑,并提供了许多操作和功能来处理和编辑这些视频剪辑。MoviePy库是一个用于视频编辑和图像处理的Python库,它提供了许多功能和工具来创建、编辑和操作视频和图像。接下来,我们可以创建一个图像序列,将其转换为视频剪辑,并对其进行各种操作。首先,我们需要安装MoviePy库。

ByteLegend的博客 663

moviepy.video 视频处理核心包全解析:VideoClip 基类、合成、特效与 IO 模块导览

MoviePy 的 `moviepy.video` 子包承载了全部视频操作能力,从 `VideoClip` 基类与各类视频片段(`VideoFileClip`、`ImageClip`、`TextClip` 等),到多层合成(`CompositeVideoClip`)、三十余种内置特效(`moviepy.video.fx`),再到基于 FFmpeg 的读写与预览(`moviepy.video.io`

gitblog_00924的博客 434

使用Python创建图像序列视频剪辑:ImageSequenceClip介绍及使用案例

在MoviePy库中,有一个名为ImageSequenceClip的类,它允许我们将一系列图像转换为视频剪辑。我们可以指定图像的文件路径、文件名或者图像对象列表作为输入,然后使用ImageSequenceClip类来创建一个视频剪辑对象。除了基本的用法,ImageSequenceClip还提供了许多其他的选项和功能,如设置视频的持续时间、调整图像大小、添加转场效果等。,其中包含了要用于视频剪辑的图像序列。在上面的示例中,我们使用PIL库生成了一个简单的白色图像,并将其添加到图像对象列表。

2301_79366332的博客 800

实战案例:用MoviePy批量处理视频,搭建自动化视频生成服务

MoviePy 是一个用 Python 进行视频编辑的开源库,支持剪切、拼接、字幕、特效合成等常见剪辑操作。本文以真实业务场景出发,演示如何用 MoviePy 批量处理视频,从文件夹里成百上千张图片、素材文件,自动生成成品视频,并进一步搭建一个可定时触发的自动化视频生成服务,帮助新手快速落地"无人值守"的视频生产线。 ## 为什么选择 MoviePy 做批量视频处理 很多重复性的视频工作(日报

gitblog_00929的博客 943

使用Python制作视频编辑工具——ImageSequenceClip简介

ImageSequenceClip是Python中的一个视频编辑工具,使用该工具可以很方便地将一系列的图片或图像序列转化为视频文件。它可以将任何包含在Python Imaging Library(PIL)支持范围内的图片格式转化为视频,例如PNG、JPEG、BMP、TIFF等。总结起来,ImageSequenceClip是一个简单实用的Python工具,可用于将图片序列转化为视频文件。它不仅易于使用,而且还有很多定制化的选项可供使用,如帧率、每个图像的显示时间等,非常适合于Python视频编辑的初学者。

NoerrorCode的博客 591

HPE磁盘阵列管理04——MSA事件

本文介绍了HPE MSA存储系统的事件处理机制,重点分析了常见磁盘故障事件及其解决方案。文章首先定义了MSA事件的五个严重级别(严重、错误、警告、信息和解决),然后详细列举了多个典型事件案例(如事件1、3、6、8、172等),包括每种事件的触发条件、对系统的影响以及具体修复步骤。针对磁盘故障场景,文章提供了更换磁盘、重建磁盘组、取消隔离等操作建议,并强调应及时配置备用磁盘以降低数据风险。最后指出更详细的事件说明可参考《MSA事件描述参考指南》,并提供了HPE官方手册下载链接。全文为技术人员处理MSA存储故障

istrangeboy&begin zero的博客 1121

MoviePy 文档中心全览:从入门到二次开发的视频编辑自动化指南

MoviePy 是 Python 生态中面向视频编辑自动化的开源库(MIT 许可),以 "Video editing with Python" 为核心定位,覆盖视频剪辑、拼接、合成、特效与自定义效果创作等完整工作流。本文基于官方文档首页 [docs/index.rst](https://link.gitcode.com/i/009fd3cf7087f7bb807aaaed68446401) 的导航

gitblog_00591的博客 672

从零开始安装pytorch(包含GPU和CPU版本的安装)

Pytorch是。

qiaoxinyu1989的博客 8万+

MoviePy 资源加载指南:从文件、图像与数据创建 Clip 的完整实践

制作视频的第一步,是把你想放进最终成片的各种资源(视频文件、图片、文本、纯色背景、音频文件乃至纯数据)加载为 MoviePy 的 `Clip` 对象。本指南以 MoviePy 官方用户指南的 [loading 章节](https://link.gitcode.com/i/a3a94a0829310780c62a9c982c6fb5a5) 为骨架,系统梳理视频类与音频类 Clip 的每一种创建方式、

gitblog_00178的博客 512

Android Google 支付接入

1. 从 2023 年 8 月 2 日起,所有新应用都必须使用结算库版本 5 或更高版本。自 2023 年 11 月 1 日起,现有应用的所有新版本都必须使用结算库版本 5 或更高版本。 2. 如果您的应用以 Android 14 或更高版本为目标平台,您必须更新到 PBL 5.2.1 或 PBL 6.0.1 或更高版本。

帅次的博客 9404

安卓手机强制清理数据恢复出厂设置后无法设置密码怎么办?(分享亲身经历的有效解决方案)

📱安卓手机强制清数据恢复出厂设置后,竟无法设置锁屏密码!本文将解析问题根源,分享亲测有效的解决方案,帮你快速摆脱困扰🎉

XiaoqiangClub的博客 242

MoviePy 视频自动剪切与循环片段挖掘完全指南:moviepy.video.tools.cuts 模块深度解析

本指南围绕 MoviePy 参考文档中的 [moviepy.video.tools.cuts 模块页](https://link.gitcode.com/i/0a93271e192fe48455291d397528f700) 展开,系统讲解该模块提供的两类函数(`detect_scenes`、`find_video_period`)与两个类(`FramesMatch`、`FramesMatches

gitblog_00903的博客 480

Lammps实现单轴压缩-应力应变曲线以及弹性模量计算

Lammps实现单轴压缩-应力应变曲线以及弹性模量计算

Rockyoung 1万+

MoviePy - 使用 Python 编辑视频

是一个用于编辑视频的Python模块,可用于视频剪切、视频合并、标题插入、视频旋转变换等一些基本的视频操作。MoviePy可以读写很多常见的视频格式,包含GIF。本文介绍如何使用MoviePy。

weixin_45497461的博客 3010

【已解决】WorkBuddy 国内版与国际版共存 + 关闭自动更新 教程

本文介绍在Windows系统中同时安装并共存WorkBuddy国内版与国际版的完整方案,通过修改product.json文件关闭启动自动更新,修复缓存配置污染问题,确保两版本互不干扰、数据独立。重点解决因共享身份标识导致的更新源错乱、进程锁冲突及自动覆盖风险,提供命令行备份与修改步骤,并强调手动升级时需避免使用应用内更新功能,以规避平台参数错位缺陷。

人生是一场修行 1513

一文吃透!C#上位机CAN总线通信开发:从协议解析到数据可视化

CAN底层协议仅定义了8字节数据的传输规则,实际业务需自定义应用层协议,实现多类型数据的有序传输,这是数据解析的核心。仲裁ID(16进制)数据长度(DLC)数据场格式业务含义解析规则0x0014字节0~3:温度数据温度采集(单位:℃)4字节→float类型(大端/小端需统一,如西门子PLC格式)0x0022字节0~1:转速数据电机转速(单位:r/min)2字节→short类型(Int16)0x0031字节0:bit0~bit7设备状态(8路开关量)

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 846

Python中moviepy模块的VideoClip详解

Python中moviepy模块的VideoClip基本使用使用情景主要知识点1 VideoFileClip视频文件剪辑2 视频输出3 视频合成 使用情景 Python中moviepy模块,是视频剪辑最基础的模块,而VideoClip是视频中最基本的剪辑类。本文将对VideoClip经常使用的功能进行简述。 主要知识点 1 VideoFileClip视频文件剪辑 VideoFileClip类是VideoClip的直接子类,是从一个视频文件创建一个剪辑类。 laught_file = “laught.mp4"

马文MarvinOld的博客 5724

AI上推荐 之 NeuralCF与PNN模型(改变特征交叉方式)

1. 前言 随着信息技术和互联网的发展, 我们已经步入了一个信息过载的时代,这个时代,无论是信息消费者还是信息生产者都遇到了很大的挑战: 信息消费者:如何从大量的信息中找到自己感兴趣的信息? 信息生产者:如何让自己生产的信息脱颖而出, 受到广大用户的关注? 为了解决这个矛盾, 推荐系统应时而生, 并飞速前进,在用户和信息之间架起了一道桥梁,一方面帮助用户发现对自己有价值的信息, 一方面让信息能够展现在对它感兴趣的用户前面。 推荐系统近几年有了深度学习的助推发展之势迅猛, 从前深度学习的传统推荐模型(协

Miracle8070 1万+

moviepy音视频剪辑:视频剪辑基类VideoClip的属性及方法详解

本文详细介绍了视频剪辑基类VideoClip的构造方法、属性和相关处理方法,相关内容参考了moviepy.video.VideoClip.py的文档字符串以及源代码,并针对部分疑难点进行了资料查询和测试,相关内容的探索和写作断断续续持续了一个多星期。VideoClip很多方法如save_frame、write_videofile、write_images_sequence、write_gif可以用于输出视频中的对应数据,而subfx、fl_image、on_color等是进行视频变换的重要方法。

老猿Python 1万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

利用Python库VideoFileClip读取MP4视频长度的代码

利用Python库VideoFileClip读取MP4视频长度的代码

昊虹AI笔记 1280

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

深入解析,python合并多张图片成视频,可用于批量制作短视频

随着短视频的兴起,越来越多的人开始用各种形式进行视频制作,本篇博客从程序员的角度为大家解析一下如何通过 Python 合并多个图片为一个视频。

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: moviepy音视频剪辑:视频基类VideoClip子类VideoFileClip、CompositeVideoClip、ImageSequenceClip介绍及使用案例
下一篇: 重要消息:MoviePy v2.0.0.dev1预发布版本已经可以下载安装使用
LaoYuanPython
LaoYuanPython 2020年博客之星Top3 2020年博客之星Top3 领域专家: Python技术领域 领域专家: Python技术领域
博客等级 码龄8年 15万+粉丝 1324原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LaoYuanPython

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值