一、MoviePy 安装及配置

在 Python 有一个音视频开发模块 MoviePy,MoviePy 依赖于 FFmepg,使用 MoviePy 可以对音视频进行编辑;例如视频合成、视频处理、视频特效等。

在 Python 下直接使用 pip 工具进行安装即可:

pip install moviepy

如果是在 windows 系统下使用 MoviePy 还需要额外安装 ImageMagick,否则将会出现如下错误:

以上提示告诉我们的关键信息是我们可能没有安装 ImageMagick ,需要将其安装并且配置安装后的文件地址则可以正常使用。ImageMagick 可以搜索引擎搜索或者微信关注 [李兰清的代码小屋] 回复 ImageMagick 获取下载链接。

安装完 ImageMagick 后,我们打开 Python 文件目录搜索 MoviePy,找到 MoviePy 目录在其下文件中找到 config_defaults.py 文件。

打开该文件对其进行配置 ImageMagick 根目录下 magick.exe 所在的位置信息:

这样,之后在使用 MoviePy 将会省心很多。

二、MoviePy 基础播放

在 MoviePy 中有一个视频剪辑类 VideoFileClip,它继承于基类 VideoClip。我们可以使用 VideoFileClip 直接对某一视频或 GIF 进行加载:

clip = VideoFileClip(r"C:\Users\mx\Desktop\demo.mp4")
clip = VideoFileClip(r"C:\Users\mx\Desktop\demo.gif")

加载了视频对象后我们可以使用该对象的 subclip 方法对视频进行剪辑,subclip 方法接收两个参数 t_start 与 t_end,t_start 默认为 0 。t_start 表示对该视频截取片段从第几秒开始,t_end 表示结束的时间位置,例如如下代码:

clip = VideoFileClip(r"C:\Users\mx\Desktop\hmbb.mp4").subclip(10,20)

VideoFileClip 首先获取到了 hmbb.mp4 这个视频对象,随后调用 subclip 截取第 10 秒到第 20 秒的视频内容。如果想从视频末尾截取直接在 t_end 参数传入负数即可:

clip = VideoFileClip(r"C:\Users\mx\Desktop\hmbb.mp4").subclip(0,-2)

以上代码 0,-2 表示该视频从结尾裁剪 2 秒。最后将视频导出即可:

from moviepy.editor import *clip = VideoFileClip(r"C:\Users\mx\Desktop\hmbb.mp4").subclip(10,22)
clip.write_videofile(r"C:\Users\mx\Desktop\myHolidays_edited.webm")

以上代码是这部分完整的代码,最终使用 write_videofile 导出媒体文件,可以在导出路径中填写视频的后缀名进行默认转码。

最终导出文件后将会出现一个 12 秒视频,为导出的结果:

我们还可以通过 volumex 方法更改视频对象的音量大小:

clip = clip.volumex(1.2)

三、MoviePy 文字添加

对视频添加文字可以使用 TextClip 类,该类创建时可以传入多个参数对需要创建的文字进行修饰,在此先简单的介绍几个基本传入参数。首先看看基本代码示例(在此注意,使用 TextClip 必须安装 ImageMagick,在 windows 操作系统上需要对其进行配置,配置方法查看第一点内容):

txt_clip = TextClip("I am 1_bit ",fontsize=70,color='white')

以上代码示例创建了 TextClip 对象,该对象的的第一个参数需要接收一个写入的字符串,该字符串则为添加到视频中的字符串,在 TextClip 类的原型中参数名为 txt;接下来在以上示例中传入了 fontsize 设置了其字体大小为 70,并且设置了颜色 color 为白色 white。那此时如何将该 TextClip 对象的文本添加至视频中呢?先不急,我们此时还要将该 TextClip 对象的位置进行设置,如何进行显示是非常必要的。查看示例:

txt_clip = txt_clip.set_pos('center').set_duration(3)

以上代码使用 txt_clip 调用 set_pos 方法设置该文本显示在视频的区域为 center 中部,而 set_duration 表示显示的次序时间,传入 3表示显示 3 秒。

接下来我们应该使用 CompositeVideoClip 类对两者进行装载。代码示例如下:

video = CompositeVideoClip([clip, txt_clip])

此时生成了一个 CompositeVideoClip 的对象 video,我们可以调用 video 中的 write_videofile 方法将装载后的视频进行输出,从而得到最终的结果。代码示例如下:

video.write_videofile(r"C:\Users\mx\Desktop\hi.webm")

在 write_videofile 后传入地址输出路径即可,最终将会出现一个输出视频。该部分完整代码如下:

from moviepy.editor import *clip = VideoFileClip(r"C:\Users\mx\Desktop\hmbb.mp4").subclip(10,20)
clip = clip.volumex(10.2)txt_clip = TextClip("I am 1_bit",fontsize=70,color='white')
txt_clip = txt_clip.set_pos('center').set_duration(10)video = CompositeVideoClip([clip, txt_clip])
video.write_videofile(r"C:\Users\mx\Desktop\hi.webm")

三、TextClip 的其他参数设置

我们完成了基本的视频导入及输出后,我们可以在创建 TextClip 时传入更多的参数对需要显示的文字进行更深入的修饰。首先我们可以查看 TextClip 中 init 方法原型:

def __init__(self, txt=None, filename=None, size=None, color='black',bg_color='transparent', fontsize=None, font='Courier',stroke_color=None, stroke_width=1, method='label',kerning=None, align='center', interline=None,tempfilename=None, temptxt=None,transparent=True, remove_temp=True,print_cmd=False):

我们在此简单的对 bg_color、stroke_color、stroke_color 、stroke_width、kerning 进行讲解。

bg_color

bg_color 可以设置该文本内容的背景色,直接传参为指定颜色即可。代码示例如下:

txt_clip = TextClip("I am 1_bit",fontsize=70,color='white',bg_color="red")

导出后播放内容如下:

stroke_color 与 stroke_width

stroke_color 表示对文本描边的颜色,可以通过颜色标识进行设置。示例代码如下:

txt_clip = TextClip("I am 1_bit",fontsize=70,color='white',bg_color="red",stroke_color="green")

也可以通过 stroke_width 设置描边宽度,单位为像素。代码示例如下:

txt_clip = TextClip("I am 1_bit",fontsize=70,color='white',bg_color="red",stroke_color="green",stroke_width=2.1)

kerning

可以使用 kerning 设置字母间距,代码示例如下:

txt_clip = TextClip("I am 1_bit",fontsize=70,color='white',bg_color="red",stroke_color="green",kerning=2)

[Python MoviePy 音视频开发零基础到实战] 一、用6条代码为你的视频裁剪以及添加水印相关推荐

  1. 视频教程-Python开发零基础入门-计算机基础-Python

    Python开发零基础入门-计算机基础 马哥教育Python金牌讲师,国内知名Python技术专家,在Python全栈.Python运维开发.Python数据挖掘.爬虫.人工智能等领域有深入研究,有1 ...

  2. Android 音视频开发之基础篇 使用 SurfaceView绘制一张图片

    Android 音视频开发 上一篇文章:使用 imageview绘制一张图片 任务一 SurfaceView绘制一张图片 文章目录 Android 音视频开发 前言 一.surfaceview是什么? ...

  3. 音视频开发入门基础知识(视频入门篇)

    RTSP实时音视频开发实战课程:<RTSP实时音视频开发实战> 音视频开发入门基础知识(音频入门篇) 目录 一.前言 二.视频采集和显示 三.视频常见的格式 四.RGB转YUV和YUV转R ...

  4. Android音视频开发---0基础入门准备篇

    文章目录 0,题记 1,学习路线 2,学习目标 任务列表 基础知识 FFmpeg 3,开始音视频开发必备的技能 1,C语言. 2,Linux. 3,基本的Linux编译执行命令,以及vim操作. 4, ...

  5. 音视频开发入门基础知识(音频入门篇)

    RTSP实时音视频开发实战课程:<RTSP实时音视频开发实战> 音视频开发入门基础知识(音频入门篇) 目录 前言 音频的采集和播放 音频常见的格式 音频的编码 前言 在音视频开发入门基础知 ...

  6. 零基础可以学python吗-Python编程语言好学吗?零基础转行能学Python吗?

    Python编程语言好学吗?零基础转行能学Python吗?人工智能时代的来临催生了很多新兴行业,Python是最具代表性也是比较热门的技术之一.有人看好Python入门简单.功能强大的特性,选择转行从 ...

  7. 0基础学python做什么工作好-零基础自学python到什么程度才有机会去小公司实习?...

    谢邀.小公司的要求不是很高.但是基本的做项目,解决问题的思路还是要有的.对算法,底层框架源码可能没有过多地要求 必须要掌握的技能有: 一.基础语法 1 变量 2 逻辑判断 3 循环 4 函数 /> ...

  8. python零基础能学吗-Python编程语言好学吗?零基础转行能学Python吗?

    Python编程语言好学吗?零基础转行能学Python吗?人工智能时代的来临催生了很多新兴行业,Python是最具代表性也是比较热门的技术之一.有人看好Python入门简单.功能强大的特性,选择转行从 ...

  9. Python编程语言好学吗? 零基础转行能学Python吗?

    Python编程语言好学吗?零基础转行能学Python吗?人工智能时代的来临催生了很多新兴行业,Python是最具代表性也是比较热门的技术之一.有人看好Python入门简单.功能强大的特性,选择转行从 ...

最新文章

  1. 计算机管理损坏的图像,损坏的图像(打开软件出现)解决方法
  2. python爬虫提取人名_python爬虫—爬取英文名以及正则表达式的介绍
  3. 【Linux】32. shell脚本 定时删除 过时 的某类文件
  4. c++:MFC _cstring.h库常用函数
  5. java vote_vote投票系统java jsp mysql
  6. 建立Win32 Console Project时会出“error LNK1123” 错误
  7. Linux下Birt、JTreeChart中文乱码问题解决办法
  8. POJ 2115C Looooops[一元线性同余方程]
  9. JS取得RadioButtonList的Value,Text及选中值等信息
  10. 260.只出现一次的数字III
  11. Winform开发技术详解 - 应用环境 相关技术介绍
  12. Hash表素数大集合
  13. DBV命令行工具检测坏块
  14. 胃肠道微生物与癌症有关
  15. 2. 一元函数微分学
  16. linux实验二文件与文件夹操作
  17. 89c52流水灯c语言程序,【学习之路】STC89C52RC流水灯程序
  18. gsoap参数老是记不住,岁月不饶人
  19. Tello SDK 开发避坑指南(持续更新)
  20. UEFI BIOS setup菜单之页面隐藏的方法

热门文章

  1. 记一次 .NET 某HIS系统后端服务 内存泄漏分析
  2. 龙芯3A5000完成流片 同主频性能追平AMD Zen1
  3. 快来参加学习.NET 挑战赛
  4. 内存不够用还要速度快,终于找到可以基于 File 的 Cache 了
  5. 带你深入探究云原生时代的分布式操作系统 Kubernetes
  6. 微软备战 RPA 市场,Power Platform,Ready GO!
  7. 微软想将新版Edge浏览器引入Linux
  8. .Net Core2.1 秒杀项目一步步实现CI/CD(Centos7)系列二:k8s高可用集群搭建总结以及部署API到k8s...
  9. 微软宣布 Visual Studio 2019 将于4月2日正式发布
  10. 我心中的ASP.NET Core 新核心对象WebHost(一)