moviepy入门

1. 简介

由于恶心的工作和没有规划的部门安排,我被排到了算法部门,从事和算法没有半毛钱关系的业务上,也就是。。。搞视频。咋说呢?视频这东西我没有一点基础,还好有前人写好的代码,用的是moviepy和ffmpeg。那接下来就简单说说这两个吧。

1.1 moviepy是什么

moviepy是一个python库,用于音视频编辑。
官方API文档
别人翻译的一个中文文档
有一个别人翻译的中文文档

1.2 ffmpeg是什么

ffmpeg是一个强大的,难用的命令行工具,专门用于编辑处理各种音视频或图像。

1.3 gl-transitions是什么

有的时候,我们想要把视频转到另一个场景的画面,此时如何丝滑的转换到下一个场景呢?难不成像播放PPT那样,卡的一下到下一页?能不能像翻书那样,有个中间的过度阶段?

  • 可以的。

这个过度的阶段,我们称之为“转场”.
那如何实现转场,目前来说我也不知道,总不能不来写吧,找了找,目前有个开源的项目gl-transitions,它实现了一些转场效果。
gl-transitions项目地址
它的使用应该有很多中,有一种是把代码编译到ffmpeg代码中去,也是我现在在使用的方式,其他的方式我也不懂。。。
gl-transitions 【68个转场效果图】
在这里插入图片描述

2 moviepy介绍

本文还是重点讲讲moviepy。关于文档啥的,我在1.1小节已经给出来了。如果你不懂,或者刚入门,那简单!!!看几个例子就好了。因为,环境搭建简单的很,docker啦。有别人已经搞好的镜像,拉下来就可以直接用了。

2.1 moviepy的核心概念

  1. 蒙板/Mask
    如果同时播放两个视频,并且是叠加到一起,那这样的话,在上面的视频肯定会把下面的视频给挡住,结果就是只能看到在上面的视频。那要是可以把上面的视频变得透明一点,这样不就可以看到下面的视频了吗?蒙板,也就是Mask的作用。在moviepy中它是一个矩阵,矩阵中的值是一个0到1的浮点数。0是全透明,1是完全不透明。
  2. 切面/Clip
    Clip是moviepy中最核心的一个概念,对音视频的操作都是对clip的操作。
    在这里插入图片描述
    图片来源 https://blog.csdn.net/as604049322/article/details/134938026

moviepy的依赖库

  • The Python Imaging Library (PIL) or, better, its branch Pillow .
  • Scipy (for tracking, segmenting, etc.), and can be used for resizing video clips if PIL and OpenCV aren’t installed on your computer.
  • Scikit Image may be needed for some advanced image manipulation.
  • OpenCV 2.4.6 or more recent (provides the package cv2) or more recent may be needed for some advanced image manipulation.
  • ffmpeg
  • ImageMagick. ImageMagick is not strictly required, only if you want to write texts.

moviepy是如何工作的,

看原文 https://zulko.github.io/moviepy/getting_started/quick_presentation.html#how-moviepy-works
在这里插入图片描述

moviepy的坐标

和其他的坐标一样,左上是原点
在这里插入图片描述

Clip的两个重要方法:fl、fx傻傻分不清

  • fl: def fl(self, fun, apply_to=None, keep_duration=True)使用fun方法修改当前的帧。
    在这里插入图片描述

  • fx: def fx(self, func, *args, **kwargs)为了链式调用,clip.fx( volumex, 0.5).fx( resize, 0.3).fx( mirrorx )
    在这里插入图片描述

set_start/set_end/set_duration

设置组合视频中Clip的播放开始时间/结束时间/播放时长

Clip的方法不是面向对象的,不会修改原本的clip,因此每次修改都要接受返回值。

  • newclip = clip.subclip(0,-2)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/647417.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在CSDN上成长的感悟,你的粉丝长啥样?

文章目录 一、写作的初衷1. 记录所学内容2.巩固所学知识3.分享与帮助4.方便后续查找5.获取激励 二、你的粉丝长啥样?1. 粉丝的特点与困惑2. 关于粉丝,细思极恐 三、继续前行、坚持初心 在CSDN上写博文,对于我来说,不仅仅是一个记录…

(2024,attention,可并行计算的 RNN,并行前缀扫描)将注意力当作 RNN

Attention as an RNN 公众号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 3. 方法 3.1 注意力作为一种(多对一的)RNN 3.2 注意力作为(多对多&…

Linux C++ Socket 套接字、select、poll、epoll 实例

文章目录 1. 概述2. TCP 网络编程实例2.1 服务器端2.2 客户端2.3 运行截图 3. I/O 模型3.1 阻塞式I/O模型3.2 非阻塞I/O模型3.3 I/O 复用模型3.4 信号驱动式I/O3.5 异步I/O模型 4. I/O复用之 select4.1 select 函数描述4.2 服务端代码4.3 客户端代码4.4 运行截图 5. I/O复用之 …

音视频开发9 FFmpeg 解复用框架--如何将一个影音文件(mp4文件/wav文件) 最终播放起来

一,播放器框架 二 常用音视频术语 容器/文件(Conainer/File): 即特定格式的多媒体文件, 比如mp4、flv、mkv等。 媒体流(Stream): 表示时间轴上的一段连续数据&#xff0…

jmeter之测试计划

一、测试计划作用 测试计划是jmeter的默认控件所有线程组都是测试计划的下级控件测试计划可以配置用户自定义的变量测试计划可以配置线程组的串行或并行 二、查看界面 名称:可以修改自定义的名称注释:解释测试计划是用来做什么的用户自定义的变量&…

23种设计模式顺口溜

口诀: 原型 抽风 ,单独 建造 工厂 (寓意:(这里代指本来很简单的东西,却要干工厂这里复杂的业务) 抽风:抽象工厂单独:单例桥代理组合享元适配器,&#xff0…

驱动开发之新字符设备驱动开发

1.前言 register_chrdev 和 unregister_chrdev 这两个函数是老版本驱动使用的函数,现在新的 字符设备驱动已经不再使用这两个函数,而是使用 Linux 内核推荐的新字符设备驱动 API 函数。 旧版本的接口使用,感兴趣可以看下面这个博客&#…

关于C的\r回车在不同平台的问题

首先我们需要搞明白\r和\n是两回事 \r是回车&#xff0c;前者使光标到行首&#xff0c;&#xff08;carriage return&#xff09; \n是换行&#xff0c;后者使光标下移一格&#xff0c;&#xff08;line feed&#xff09; Linux平台下 #include <stdio.h> int main()…

TiDB学习4:Placement Driver

目录 1. PD架构 2. 路由功能 2. TSO 2.1 TSO 概念 2.2 TSO分配过程 2.3 TSO时间窗口 3. 调度 3.1 信息收集 3.2 生成调度(operator) 3.3 执行调度 4. Label 与高可用 4.1 Label 的配置 5. 小结 1. PD架构 PD是整个TiDB的总控&#xff0c;相当于集群的大脑 PD集成了…

Overleaf中出现文字越界、越下届、没有正确分页、换页的原因和解决方法

在使用overleaf中&#xff0c;我偶尔会遇到如标题所说的情况&#xff0c;也如图所示&#xff1a; 后来发现&#xff0c;是因为这一页前面是一个表格&#xff0c;所以怀疑是表格的格式导致的。所以让chatgpt帮我更换了表格的格式&#xff0c;成功解决问题。 对于问题可能的成因…

20232803 2023-2024-2 《网络攻防实践》实践十报告

目录 1. 实践内容1.1 SEED SQL注入攻击与防御实验1.2 SEED XSS跨站脚本攻击实验(Elgg) 2. 实践过程2.1 SEED SQL注入攻击与防御实验2.1.1 熟悉SQL语句2.1.2 对SELECT语句的SQL注入攻击2.1.3 对UPDATE语句的SQL注入攻击2.1.4 SQL对抗 2.2 SEED XSS跨站脚本攻击实验(Elgg)2.2.1 发…

视频拼接融合产品的产品与架构设计(四)分布式GPU运算合并单元

上一篇如下 视频拼接融合产品的产品与架构设计(三&#xff09;内存和显存单元数据迁移 视频合并单元说明 对下面这张图做些说明&#xff0c;视频接入是比较常见&#xff0c;可以说是普通&#xff0c;但是做到接入后随即进行比较重的算法运算&#xff0c;这个在视频领域并不多…

探索PyImGui:高效可交互图形界面的Python实现

简介 Pyimgui 是一个基于 Cython 的 Python 绑定层&#xff0c;它将功能强大的用户界面库 Dear ImGui 无缝集成到 Python 环境中。它使 Python 开发人员能够轻松地创建交互式图形用户界面 (GUI)&#xff0c;同时充分利用 Dear ImGui 的丰富功能集。 下图为用Dear ImGui开的GU…

Android 使用 ActivityResultLauncher 申请权限

前面介绍了 Android 运行时权限。 其中&#xff0c;申请权限的步骤有些繁琐&#xff0c;需要用到&#xff1a;ActivityCompat.requestPermissions 函数和 onRequestPermissionsResult 回调函数&#xff0c;今天就借助 ActivityResultLauncher 来简化书写。 步骤1&#xff1a;创…

2024年5月26日 (周日) 叶子游戏新闻

资深开发者&#xff1a;3A游戏当前处于一种尴尬的中间地带游戏行业整体&#xff0c;尤其是3A游戏正处于艰难时期。尽管2023年3A游戏佳作频出&#xff0c;广受好评&#xff0c;但居高不下的游戏开发成本&#xff08;传闻《漫威蜘蛛侠2》的制作成本高达3亿美元&#xff09;正严重…

提高Java编程效率:ArrayList类的使用技巧

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

虹科Pico汽车示波器 | 免拆诊断案例 | 2012 款雪佛兰科鲁兹车偶尔多个故障灯异常点亮

故障现象 一辆2012款雪佛兰科鲁兹车&#xff0c;搭载1.8 L 发动机&#xff0c;累计行驶里程约为9.6万km。该车组合仪表上的发动机故障灯、ABS故障灯及动力转向故障灯偶尔异常点亮&#xff0c;同时发动机转速表和发动机冷却液温度表的指针会突然归零&#xff0c;严重时发动机无…

【Linux 网络】网络基础(三)(网络层协议:IP 协议)

在复杂的网络环境中确定一个合适的路径。 一、TCP 与 IP 的关系 IP 层的核心作用是定位主机&#xff0c;具有将数据从主机 A 发送到主机 B 的能力&#xff0c;但是能力并不能保证一定能够做到&#xff0c;所以这时就需要 TCP 起作用了&#xff0c;TCP 可以通过超时重传、拥塞控…

[Vulnhub]Vulnix 通过NFS挂载+SSH公钥免密登录权限提升

端口扫描 Server IP AddressPorts Open192.168.8.103TCP:22/tcp, 25/tcp, 79/tcp, 110/tcp, 111/tcp, 143/tcp, 512/tcp, 513/tcp, 514/tcp, 993/tcp, 995/tcp, 2049/tcp, 37522/tcp, 42172/tcp, 43219/tcp, 47279/tcp, 54227/tcp $ nmap -p- 192.168.8.103 -sV -sC --min-ra…

Nginx实战(安装部署、常用命令、反向代理、负载均衡、动静分离)

文章目录 1. nginx安装部署1.1 windows安装包1.2 linux-源码编译1.3 linux-docker安装 2. nginx介绍2.1 简介2.2 常用命令2.3 nginx运行原理2.3.1 mater和worker2.3.3 Nginx 的工作原理 2.4 nginx的基本配置文件2.4.1 location指令说明 3. nginx案例3.1 nginx-反向代理案例013.…