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)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Zoho Campaigns邮件营销怎么发邮件?

Zoho Campaigns,作为业界领先的邮件营销平台,以其强大的功能、用户友好的界面以及深度的分析能力,为企业提供了一站式的邮件营销解决方案,助力企业高效地触达目标受众,构建并巩固庞大的客户基础。云衔科技为企业提供Zo…

零基础入门篇①⑤ Python不可变序列类型--元组

Python从入门到精通系列专栏面向零基础以及需要进阶的读者倾心打造,9.9元订阅即可享受付费专栏权益,一个专栏带你吃透Python,专栏分为零基础入门篇、模块篇、网络爬虫篇、Web开发篇、办公自动化篇、数据分析篇…学习不断,持续更新,火热订阅中🔥专栏限时一个月(5.8~6.8)重…

数据结构(四)

数据结构(四) 算法算法的特征算法和程序的区别怎么样评判一个算法的好坏 常见的查找算法线性树状哈希查找构建哈希函数的方法质数求余法解决冲突 算法 一堆指令的有序集合 算法的特征 唯一性:每一句话只有一种解释 有穷性:算法能…

企业活动想找媒体报道宣传怎样联系媒体?

在那遥远的公关江湖里,有一个传说,说的是一位勇士,手持鼠标和键盘,踏上了寻找媒体圣杯的征途。这位勇士,就是我们亲爱的市场部门小李,他的任务是为公司即将举行的一场盛大的企业活动找到媒体的聚光灯。 小李的故事,开始于一张空白的Excel表格,上面列着各大媒体的名称,旁边是一片…

Element-UI10分钟快速入门

Element-UI 是一个基于 Vue.js 的桌面端组件库,它为开发者提供了一套完整、易用、美观的组件解决方案,极大地提升了前端开发的效率和质量。以下是一个 Element-UI 的快速入门指南: 1. 安装 Element-UI 首先,确保你已经创建了一个…

如何让大模型更聪明

目录 如何让大模型更聪明? 🍉算法创新 🍈新型优化算法 🍍案例分析:LAMB优化器 🍈对比学习 🍍应用案例:SimCLR 🍈强化学习 🍍案例分析:Alph…

【30天精通Prometheus:一站式监控实战指南】第4天:node_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细

亲爱的读者们👋   欢迎加入【30天精通Prometheus】专栏!📚 在这里,我们将探索Prometheus的强大功能,并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。🚀   Prometheus是云原生和DevOps的…

蓝桥杯-班级活动

题目描述 小明的老师准备组织一次班级活动。班上一共有 ( n ) 名(( n ) 为偶数)同学,老师想把所有的同学进行分组,每两名同学一组。为了公平,老师给每名同学随机分配了一个 ( n ) 以内的正整数作为 id,第 …

C++标准库中string的底层实现方式

对于C中 std::string 的一些基本功能和用法,我们应该都很熟悉。但它底层到底是如何实现的呢? 其实在 std::string 的历史中,出现过几种不同的方式。下面我们来一一揭晓。 我们可以从一个简单的问题来探索,一个 std::string 对象占据的内存空…

RK3568笔记二十五:RetinaFace人脸检测训练部署

若该文为原创文章,转载请注明原文出处。 一、介绍 Retinaface是来自insightFace的又一力作,基于one-stage的人脸检测网络。RetinaFace是在RetinaNet基础上引申出来的人脸检测框架,所以大致结构和RetinaNet非常像。 官方提供两种主干特征提取网…

Python 中别再用 ‘+‘ 拼接字符串了!

当我开始学习 Python 时,使用加号来连接字符串非常直观和容易,就像许多其他编程语言(比如Java)一样。 然而,很快我意识到许多开发者似乎更喜欢使用.join()方法而不是。 在本文中,我将介绍这两种方法之间的…

关于数据库和数据表的基础SQL

目录 一. 数据库的基础SQL 1. 创建数据库 2. 查看当前有哪些数据库 3. 选中数据库 4. 删除数据库 5. 小结 二. 数据表的基础SQL 1. 创建数据表 2. 查看当前数据库中有哪些表 3. 查看指定表的详细情况(查看表的结构) 4. 删除表 5. 小结 一. 数据库的基础SQL 1. 创建…

Qt中的网络编程(Tcp和Udp)详解 及 实现

Qt中的网络编程(Tcp和Udp)详解 及 实现 代码 卡的格式不对,看我的代码标题去 拷贝 ,共四个文件。 1、安装qty软件,官网直接下载 在线安装。 怕以后麻烦直接安装选择一个完整版本QT勾选。 在线下载i30多g应该&#xff…

Stream浅解析

Stream流浅解析 package com.w.earn.share;import java.util.*; import java.util.stream.Collectors;/*** Author yang kai bo* Date 2024/5/26 19:43* Description* 概念:stream流是一种对 Java 集合运算和表达的高阶抽象。* 优点:写法简单&#xf…

python内置函数map/filter/reduce详解

在Python中,map(), filter(), 和 reduce() 是内置的高级函数(实际是class),用于处理可迭代对象(如列表、元组等)的元素。这些函数通常与lambda函数一起使用,以简洁地表达常见的操作。下面我将分别解释这三个函数。 1. …

mac安装git心得

我是买了一个新的mac但是当我安装git的时候遇见了很多问题 安装不上各种报错 首先我们直接打开git网址,然后打开mac的命令提示,里边输入git大概1g左右,下载完了直接好了

持续总结中!2024年面试必问 20 道 Redis面试题(七)

上一篇地址:持续总结中!2024年面试必问 20 道 Redis面试题(六)-CSDN博客 十三、Redis集群的主从复制模型是怎样的? Redis集群的主从复制模型是一种高可用性架构,它允许数据在多个节点之间进行复制&#x…

pod 之资源限制 与健康检查

目录 一 资源限制 1,资源限制是什么 2,资源限制的 标准 3, k8s 创pod 显示 OOMKILLED 是 requests小了 还是limits小了 4, Pod 和 容器 的资源请求和限制 (yaml) 5, CPU 资源单位 6&…

xgboost项目实战-保险赔偿额预测与信用卡评分预测001

目录 算法代码 原理 算法流程 xgb.train中的参数介绍 params min_child_weight gamma 技巧 算法代码 代码获取方式:链接:https://pan.baidu.com/s/1QV7nMC5ds5wSh-M9kuiwew?pwdx48l 提取码:x48l 特征直方图统计: fig, …

这次泰迪杯应该不能答辩

检查了里面还有没修改完的,只能但愿没看到 魔改了又去投水赛,理论加应用