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

2.2 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.

2.3 moviepy是如何工作的,

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

2.4 moviepy的坐标

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

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

  • fl: 修改当前的帧

    • def fl(self, fun, apply_to=None, keep_duration=True)使用fun方法修改当前的帧
      在这里插入图片描述
  • fx: 方便调用,相当于是模版方法,参数func是函数指针

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

2.6 set_start/set_end/set_duration

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

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

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

3. 环境安装

3.1嫌麻烦直接用别人的docker镜像

3.2 自己安装,推荐使用conda

numpy==1.26.4
scipy=1.13.0
scikit-image==0.23.2
moviepy==1.0.3
opencv-python==4.9.0.80
Wand==0.6.13
pyinstaller
ffmpeg 
imagemagick 

4 moviepy编程入门

4.1 源码目录

在这里插入图片描述

  • 可以看到源码很少
  • Clip是视频和音频的基类
  • VideoClip是视频的父类
    • 子类有,但是常用的就是ImageCLip、TextClip、ColorClip、VideoFileClip、CompositiVideoClip 。还有一些子类我也没用过,也不知道啥意思。
      在这里插入图片描述
  • AudioClip是音频的父类
    • 我都没用过在这里插入图片描述

4.2 待续

10. 总结

  1. moviepy抽象了python端的音视频编辑,封装了一些基本的类,方便上手操作
  2. 新手上手需要了解一些基本概念
  3. 有些简单,复杂的动画则不支持。因此需要结合其他的第三方库生成,然后融入到moviepy的处理流程中。
  • 29
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值