python moviepy 的用法入门篇

目录
  • 模块安装使用如下命令即可
  • 截取视频
  • 提取A视频的音频,注入到B视频中
  • 去掉视频声音
  • 获取视频信息
  • 设置视频倍速播放
  • 截取视频封面
  • 提取视频中的音频内容
  • 写在后面

python 中的视频处理模块,有一个叫做 moviepy,今天我们就来唠唠它。

模块安装使用如下命令即可

pip install moviepy

接下来完成第一个 Demo,为后续学习提高信心,截取视频中的一段。

截取视频

下述代码重点使用的是 subclip 方法,但需要提前声明一个 VideoFileClip 对象, VideoFileClip 类的构造函数在代码后进行说明。

from moviepy.editor import *
import time
clip = VideoFileClip('./1644974996.mp4').subclip(10, 20)
new_file = str(int(time.time())) + '_subclip.mp4'
clip.write_videofile(new_file)

代码运行结果如下所示:

subclip(t_start,t_end) 方法中的时间参数可以用 (t_start=10) ,以秒的时间来表示,也可以用 (t_start=(1,20)) ,以1分20秒的形式来表示,还可以 (t_start=(0,1,20)) 或者 (t_start=(00:01:20)) , 以小时: 分钟: 秒的形式表示, t_end 的默认值就是视频的长度

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,
	fps_source='tbr')

其中只有 filename 为必填项,其余都为选填内容。

  • filename:视频文件名,一般常见格式都支持;
  • has_mask:是否包含遮罩;
  • audio:是否加载音频;
  • audio_buffersize:音频缓冲区大小;
  • target_resolution:加载后需要变换到的分辨率;
  • resize_algorithm:调整分辨率的算法,默认是 bicubic,可以设置为 bilinearfast_bilinear
  • audio_fps:声音的采样频率;
  • audio_nbytes:采样的位数;
  • verbose:是否输出处理信息。

subclip(t1,t2) 方法的含义为截取t1到t2时间段内的片段。
write_videofile() 方法用于视频输出。

提取A视频的音频,注入到B视频中

from moviepy.editor import *

# 读取2个视频文件
videoclip_a = VideoFileClip("1644974996.mp4")
videoclip_b = VideoFileClip("1644974998.mp4")
# 提取A视频文件的音频部分
audio_a = videoclip_a.audio
# 给B设置音频,注意视频最终合成的大小会依据长的为准
videoclip_c = videoclip_b.set_audio(audio_a)
# 输出新的视频文件
videoclip_c.write_videofile("videoclip_c.mp4")

使用 VideoFileClip 对象的 audio 属性,可以获取视频的音频部分,然后调用 set_audio() 方法对文件进行音频设置,这里要注意一点,合成的音频和视频等于长度的。

去掉视频声音

from moviepy.editor import *

video = VideoFileClip('1644974996.mp4')
video = video.without_audio()
video.write_videofile('cc.mp4')

without_audio() 方法见名知意 - 去除声音。

获取视频信息

视频的分辨率和时间可以直接通过属性读取

from moviepy.editor import *

video = VideoFileClip('1644974996.mp4')
print(dir(video))
print(video.size) # 获取分辨率
print(video.duration) # 获取视频总时长

获取文件大小就比较简单了,使用 os 模块的 os.path.getsize() 方法即可,得到的是字节大小。

from moviepy.editor import *

video = VideoFileClip('1644974996.mp4')
size = os.path.getsize('1644974996.mp4')
print(size)

设置视频倍速播放

读取视频,调用 speedx() 方法,其中设置要加速到的倍数。

from moviepy.editor import *
clip = VideoFileClip('./1644974996.mp4')

video_1 = clip.speedx(2)
video_1.write_videofile('sss.mp4')

截取视频封面

很多时候我们需要生成视频的封面,直接使用下述几行代码,即可实现。

from moviepy.editor import *

clip = VideoFileClip('./1644974996.mp4')
clip.save_frame("frame.jpg")  # 保存第1帧
clip.save_frame("frame.png", t=2)  # 保存2s时刻的那1帧

提取视频中的音频内容

如果想要把目标视频中的某段音频截取出来,可以使用如下代码

from moviepy.editor import *

clip = VideoFileClip('./1644974996.mp4').subclip(10, 20)
audioclip1 = clip.audio  # 从视频对象中提取音频
audioclip1.write_audiofile('a.mp3')  # 写入音频文件

截取视频中的一段,将其保存为 gif

from moviepy.editor import *

clip = VideoFileClip('./1644974996.mp4').subclip(10, 20)
# clip.write_gif('demo.gif',fps=15) # 生成之后的文件大
clip.write_gif('demo.gif',fps=5) # 生成之后的文件小

写在后面

到这里,相信你能顺着这个思路去学习 moviepy 更多的高级用法啦。

到此这篇关于python moviepy 的用法入门篇的文章就介绍到这了,更多相关python moviepy用法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python视频编辑库MoviePy的使用

    moviepy官网: https://pypi.org/project/moviepy/ 是一个用于视频编辑的Python库:切割.连接.标题插入.视频合成.非线性编辑,视频处理和定制效果的创建. Github: https://github.com/Zulko/moviepy MoviePy MoviePy是一个关于视频编辑的python库,主要包括:剪辑,嵌入拼接,标题插入,视频合成(又名非线性编辑),视频处理,和自定制效果.可以看gallery中的一些实例来了解用法.MoviePy可以读写

  • python用moviepy对视频进行简单的处理

    楔子 随着自媒体时代,现在对视频的处理变得越来越常见.我们可以使用Adobe的一些专业工具,但是效率不高:如果只是对视频进行一些简单的处理的话,或者视频的数量非常多的话,那么使用专业软件显然就不太适合了. 而python中有专门用于处理视频的库:moviepy,可以非常方便地对视频进行一些简单处理,下面我们就来看一看. 首先是安装:pip install moviepy -i https://pypi.tuna.tsinghua.edu.cn/simple,个人推荐安装的时候使用清华源,因为mo

  • python基于moviepy实现音视频剪辑

    目录 实践步骤 完整代码 参考 实践步骤 1.寻找合适的Python库(安装是否麻烦.使用是否简便.执行会不会太久) moviepy 音视频库.分析需要用的API:代码示例 2.定义输入输出 输入:一个音视频文件的地址,需要剪出来的时间段 输出:剪辑片段的文件 3.设计执行流程并一步步实现(定义函数,与使用具体API相关) 读入并创建clip对象. 剪辑subclip,输入时间参数可以是时间格式的字符串. 导出write_videofile. 4.结论:时间太久,片段多长就花了多久的时间:CPU

  • Python中使用moviepy进行视频分割的实现方法

    场景 moviepy官网: https://pypi.org/project/moviepy/ 是一个用于视频编辑的Python库:切割.连接.标题插入.视频合成.非线性编辑,视频处理和定制效果的创建. Github: https://github.com/Zulko/moviepy 实现 首先你需要安装moviepy 打开cmd输入: pip install moviepy 其次需要安装ffmpeg,因为网络问题,这里使用豆瓣镜像 pip install imageio-ffmpeg -i h

  • MoviePy简介及Python视频剪辑自动化

    视频地址:https://www.bilibili.com/video/BV1mv411k7Qv?p=1 moviepy是啥 MoviePy是一个用于视频编辑的Python模块. 可用于基本操作(如剪切.拼接.字幕插入).视频合成.视频处理或创建高级效果等. 它可以读写最常见的视频(甚至GIF).音频格式. 在一定程度上,它可以取代Premiere. moviepy能做啥 批量加片头.片尾 比如你有一堆已经做好的视频,你想给它们加上片头,但不想用PR一个个地处理: 轻松从MV中提取音乐 比如你有

  • MoviePy常用剪辑类及Python视频剪辑自动化

    视频地址:https://www.bilibili.com/video/BV1mv411k7Qv?p=4 导入方式 所有的剪辑类都可以从moviepy.editor模块中导入 Clip 所有剪辑类的基类, 也可以简单的将它称为: VideoClip 所有视频剪辑的基类, 可以简单的将它称为: 很少用, 除非你要从零开始一帧一帧地构建视频. VideoFileClip 最常用的视频剪辑类, 用于导入视频文件(mp4.avi等格式皆可) ImageClip 常用的剪辑类, 用于导入图片文件(png.

  • python moviepy 的用法入门篇

    目录 模块安装使用如下命令即可 截取视频 提取A视频的音频,注入到B视频中 去掉视频声音 获取视频信息 设置视频倍速播放 截取视频封面 提取视频中的音频内容 写在后面 python 中的视频处理模块,有一个叫做 moviepy,今天我们就来唠唠它. 模块安装使用如下命令即可 pip install moviepy 接下来完成第一个 Demo,为后续学习提高信心,截取视频中的一段. 截取视频 下述代码重点使用的是 subclip 方法,但需要提前声明一个 VideoFileClip 对象, Vid

  • python中管道用法入门实例

    本文实例讲述了python中管道用法.分享给大家供大家参考.具体如下: #!coding=utf-8 import multiprocessing def consumer(pipe): output_p , input_p = pipe input_p.close() #关闭管道的输入端 while True: try: item = output_p.recv() except EOFError: break print item print ("consumer done") #

  • 基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解

    Pyplot matplotlib.pyplot是一个命令型函数集合,它可以让我们像使用MATLAB一样使用matplotlib.pyplot中的每一个函数都会对画布图像作出相应的改变,如创建画布.在画布中创建一个绘图区.在绘图区上画几条线.给图像添加文字说明等.下面我们就通过实例代码来领略一下他的魅力. import matplotlib.pyplot as plt plt.plot([1,2,3,4]) plt.ylabel('some numbers') plt.show() 上图是我们通

  • 小白入门篇使用Python搭建点击率预估模型

    点击率预估模型 0.前言 本篇是一个基础机器学习入门篇文章,帮助我们熟悉机器学习中的神经网络结构与使用. 日常中习惯于使用Python各种成熟的机器学习工具包,例如sklearn.TensorFlow等等,来快速搭建各种各样的机器学习模型来解决各种业务问题. 本文将从零开始,仅仅利用基础的numpy库,使用Python实现一个最简单的神经网络(或者说是简易的LR,因为LR就是一个单层的神经网络),解决一个点击率预估的问题. 1.假设一个业务场景 声明:为了简单起见,下面的一切设定从简-. 定义需

  • C语言入门篇--函数及数组用法

    目录 函数 1.函数的作用 2.函数的构成 (1)返回值 (2)函数名 (3)形参列表 (4)函数体 数组 1.定义数组 1.1不进行初始化 1.2进行初始化 1.3不给定数组元素个数 2.数组的经典用法 2.1求数组大小.元素大小.元素个数 2.2遍历 面向过程编程:C语言是面向过程的语言:在C语言中,把大部分的功能以一个个函数呈现,就称之为面向过程编程: 函数 是面向过程编程最关键的语法结构. 1.函数的作用 1.从工程上讲,函数可以让我们的代码更具有结构性,让代码更好看. 2.函数可以提升

  • Python视频处理模块之moviepy的用法教程

    目录 楔子 moviepy 的简单使用 视频截取 音量调整 在视频上添加文字 获取视频属性 视频合成 修改视频属性 视频音频合成 楔子 随着自媒体时代,现在对视频的处理变得越来越常见.我们可以使用 Adobe 的一些专业工具,但是效率不高:如果只是对视频进行一些简单的处理,或者视频的数量非常多的话,那么使用专业软件显然就不太适合了. 而 Python 有一个专门用于处理视频的第三方库:moviepy,可以非常方便地对视频进行一些简单处理,下面我们就来看一看. 首先是安装: pip install

  • Python在信息学竞赛中的运用及Python的基本用法(详解)

    前言 众所周知,Python是一种非常实用的语言.但是由于其运算时的低效和解释型编译,在信息学竞赛中并不用于完成算法程序.但正如LRJ在<算法竞赛入门经典-训练指南>中所说的一样,如果会用Python,在进行一些小程序的编写,如数据生成器时将会非常方便,它的语法决定了其简约性.本文主要介绍一下简单的Python用法,不会深入. Python的安装和实用 Linux(以Ubuntu系统为例) 一般的Linux都自带了Python,在命令行中输入Python即可进入 如果没有出现上图的文字,可以使

  • Python iter()函数用法实例分析

    本文实例讲述了Python iter()函数用法.分享给大家供大家参考,具体如下: python中的迭代器用起来非常灵巧,不仅可以迭代序列,也可以迭代表现出序列行为的对象,例如字典的键.一个文件的行,等等. 迭代器就是有一个next()方法的对象,而不是通过索引来计数.当使用一个循环机制需要下一个项时,调用迭代器的next()方法,迭代完后引发一个StopIteration异常. 但是迭代器只能向后移动.不能回到开始.再次迭代只能创建另一个新的迭代对象. 反序迭代工具:reversed()将返回

  • Python callable()函数用法实例分析

    本文实例讲述了Python callable()函数用法.分享给大家供大家参考,具体如下: python中的内建函数callable( ) ,可以检查一个对象是否是可调用的 . 对于函数, 方法, lambda 函数式, 类, 以及实现了 _ _call_ _ 方法的类实例, 它都返回 True. >>> help(callable) Help on built-in function callable in module __builtin__: callable(...) calla

  • Python中异常处理用法

    目录 1.if进行处理,在错误发生之前进行预防 2.用try..except:在错误发生之后进行处理 为了保证程序的健壮性与容错性,即在遇到错误时候程序不会崩溃,我们需要对异常进行处理, 1.if进行处理,在错误发生之前进行预防 如果错误发生的条件是可预知的,我们需要用if进行处理,在错误发生之前进行预防 AGE=10 while True: age=input('>>: ').strip() if age.isdigit(): #只有在age为字符串形式的整数时,下列代码才不会出错,该条件是

随机推荐