moviepy入门

news2024/11/19 9:36:38

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.coloradmin.cn/o/1699509.html

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

相关文章

网络攻防概述(基础概念)

文章目录 APTAPT概念APT攻击过程 网络空间与网络空间安全网络空间(Cyberspace)网络空间安全(Cyberspace Security) 网络安全属性机密性(Confidentiality或Security)完整性(Integrity)可用性(Availability)不可否认性(Non-repudiation&#xf…

通过unsplash引入图片素材

如果您还没听说过——当您需要无版权费的照片用于项目时,无论是否用于商业目的,Unsplash 都是您的不二之选。我自己也经常用它来获取大型背景图像。 虽然他们为开发者提供了出色的 API,但他们还为您提供了通过 URL 直接访问随机图片的选项。…

开源博客项目Blog .NET Core源码学习(27:App.Hosting项目结构分析-15)

本文学习并分析App.Hosting项目中后台管理页面的角色管理页面。   角色管理页面用于显示、检索、新建、编辑、删除角色数据同时支持按角色分配菜单权限,以便按角色控制后台管理页面的菜单访问权限。角色管理页面附带一新建及编辑页面,以支撑新建和编辑…

本地连接github仓库

【1】新建github仓库 【2】本地克隆并提交 $ git clone https://github.com/TomJourney/soil.git Cloning into soil... warning: You appear to have cloned an empty repository.pacosonDESKTOP-E4IASRJ MINGW64 /d/github/TomJourney/soil (master) $ git add readme.txtpa…

Android HAL到Framework

一、为什么需要Framwork? Framework实际上是⼀个应⽤程序的框架,提供了很多服务: 1、丰富⽽⼜可扩展的视图(Views), 可以⽤来构建应⽤程序,它包括列表(lists),⽹格&am…

指针(6)

1. sizeof和strlen的对比 1.1 sizeof 在学习操作符的时候,我们学习了 sizeof , sizeof 计算变量所占内存内存空间大小的,单位是字节,如果操作数是类型的话,计算的是使⽤类型创建的变量所占内存空间的大小。 sizeof 只…

精品丨快速申请免费https证书

https域名证书对提高网站排名有一定的好处,所以当今很多企业为了给网站一个好的安全防护,就会去申请该证书。如今很多企业虽然重视网站的安全防护,但是也重视成本,所以为了节约成本会考虑申请免费的https证书。 第一个好处 企业不…

力扣496. 下一个更大元素 I

Problem: 496. 下一个更大元素 I 文章目录 题目描述思路复杂度Code 题目描述 思路 因为题目说nums1是nums2的子集,那么我们先把nums2中每个元素的下一个更大元素算出来存到一个映射里,然后再让nums1中的元素去查表即可 复杂度 时间复杂度: O ( n 1 n 2…

吉林大学计科21级《软件工程》期末考试真题

文章目录 21级期末考试题一、单选题(2分一个,十个题,一共20分)二、问答题(5分一个,六个题,一共30分)三、分析题(一个10分,一共2个,共20分&#xf…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-22讲 RTC 时钟设置

前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

十四天学会Vue——Vue核心(理论+实战)(第一天)上篇

!!!声明必看:由于本篇开始就写了Vue,内容过多,本篇部分内容还有待完善,小编先去将连续更新的js高阶第四天完成~本篇部分待完善内容明日更新 一、Vue核心(上篇) 热身top…

mysql - 索引原理

mysql索引原理 文中的查询, 以该表结构为例 CREATE TABLE user (id int NOT NULL COMMENT id,name varchar(255) COLLATE utf8mb4_bin NOT NULL COMMENT 姓名,age int NOT NULL COMMENT 年龄,sex tinyint(1) NOT NULL COMMENT 性别,phone varchar(255) CHARACTER SET utf8mb4…

06中间件RTOS/CP

Autosar CP 操作系统详解-CSDN博客 1. 什么是RTOS ? RTOS,英文全称是 Real-time Operation System,中文就是 实时操作系统,又称及时操作系统。 实时操作系统,是指当外界事件或数据产生时,能够接受并以足…

GEC210编译环境搭建

一、下载编译工具链 下载:点击跳转 二、解压到 /usr/local/arm 目录 sudo mv gec210.zip /usr/local/arm cd /usr/local/arm sudo unzip gec210.zip 三、添加到环境变量 PATH/usr/local/arm/arm-cortex_a8-linux-gnueabi-4.7.3/bin:$PATH 四、测试验证 在终端…

微信小程序如何跳转微信公众号

1. 微信小程序如何跳转微信公众号 1.2. 微信公众号配置 登录微信公众号,点击【小程序管理】:   点击【添加】:   点击【关联小程序】:   输入小程序进行关联: 1.2. 微信小程序配置 登录微信小程序&#xf…

力扣刷题---LCS 02. 完成一半题目【简单】

题目描述 有 N 位扣友参加了微软与力扣举办了「以扣会友」线下活动。主办方提供了 2*N 道题目,整型数组 questions 中每个数字对应了每道题目所涉及的知识点类型。 若每位扣友选择不同的一题,请返回被选的 N 道题目至少包含多少种知识点类型。 示例 1&…

【NumPy】关于numpy.sum()函数,看这一篇文章就够了

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

JAVA实现图书管理系统(初阶)

一.抽象出对象: 1.要有书架,图书,用户(包括普通用户,管理员用户)。根据这些我们可以建立几个包,来把繁杂的代码分开,再通过一个类来把这些,对象整合起来实现系统。说到整合&#xf…

C++ List完全指南:使用方法与自定义实现

文章目录 list的使用几种构造函数 list的实现1.节点类的定义1.1节点类的构造函数 2.正向迭代器实现2.1operator*重载2.2operator->重载2.3operator重载2.4operator--2.5operator和operator! 3.反向迭代器实现3.1operator*重载3.2operator->重载3.3operator重载…

SpringBoot使用Mock进行单元测试

需求说明&#xff1a;需要对一个service接口进行单元测试 1.在pom.xml中加入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-ins…