[Python MoviePy 音视频开发零基础到实战] 一、用6条代码为你的视频裁剪以及添加水印
一、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条代码为你的视频裁剪以及添加水印相关推荐
- 视频教程-Python开发零基础入门-计算机基础-Python
Python开发零基础入门-计算机基础 马哥教育Python金牌讲师,国内知名Python技术专家,在Python全栈.Python运维开发.Python数据挖掘.爬虫.人工智能等领域有深入研究,有1 ...
- Android 音视频开发之基础篇 使用 SurfaceView绘制一张图片
Android 音视频开发 上一篇文章:使用 imageview绘制一张图片 任务一 SurfaceView绘制一张图片 文章目录 Android 音视频开发 前言 一.surfaceview是什么? ...
- 音视频开发入门基础知识(视频入门篇)
RTSP实时音视频开发实战课程:<RTSP实时音视频开发实战> 音视频开发入门基础知识(音频入门篇) 目录 一.前言 二.视频采集和显示 三.视频常见的格式 四.RGB转YUV和YUV转R ...
- Android音视频开发---0基础入门准备篇
文章目录 0,题记 1,学习路线 2,学习目标 任务列表 基础知识 FFmpeg 3,开始音视频开发必备的技能 1,C语言. 2,Linux. 3,基本的Linux编译执行命令,以及vim操作. 4, ...
- 音视频开发入门基础知识(音频入门篇)
RTSP实时音视频开发实战课程:<RTSP实时音视频开发实战> 音视频开发入门基础知识(音频入门篇) 目录 前言 音频的采集和播放 音频常见的格式 音频的编码 前言 在音视频开发入门基础知 ...
- 零基础可以学python吗-Python编程语言好学吗?零基础转行能学Python吗?
Python编程语言好学吗?零基础转行能学Python吗?人工智能时代的来临催生了很多新兴行业,Python是最具代表性也是比较热门的技术之一.有人看好Python入门简单.功能强大的特性,选择转行从 ...
- 0基础学python做什么工作好-零基础自学python到什么程度才有机会去小公司实习?...
谢邀.小公司的要求不是很高.但是基本的做项目,解决问题的思路还是要有的.对算法,底层框架源码可能没有过多地要求 必须要掌握的技能有: 一.基础语法 1 变量 2 逻辑判断 3 循环 4 函数 /> ...
- python零基础能学吗-Python编程语言好学吗?零基础转行能学Python吗?
Python编程语言好学吗?零基础转行能学Python吗?人工智能时代的来临催生了很多新兴行业,Python是最具代表性也是比较热门的技术之一.有人看好Python入门简单.功能强大的特性,选择转行从 ...
- Python编程语言好学吗? 零基础转行能学Python吗?
Python编程语言好学吗?零基础转行能学Python吗?人工智能时代的来临催生了很多新兴行业,Python是最具代表性也是比较热门的技术之一.有人看好Python入门简单.功能强大的特性,选择转行从 ...
最新文章
- 计算机管理损坏的图像,损坏的图像(打开软件出现)解决方法
- python爬虫提取人名_python爬虫—爬取英文名以及正则表达式的介绍
- 【Linux】32. shell脚本 定时删除 过时 的某类文件
- c++:MFC _cstring.h库常用函数
- java vote_vote投票系统java jsp mysql
- 建立Win32 Console Project时会出“error LNK1123” 错误
- Linux下Birt、JTreeChart中文乱码问题解决办法
- POJ 2115C Looooops[一元线性同余方程]
- JS取得RadioButtonList的Value,Text及选中值等信息
- 260.只出现一次的数字III
- Winform开发技术详解 - 应用环境 相关技术介绍
- Hash表素数大集合
- DBV命令行工具检测坏块
- 胃肠道微生物与癌症有关
- 2. 一元函数微分学
- linux实验二文件与文件夹操作
- 89c52流水灯c语言程序,【学习之路】STC89C52RC流水灯程序
- gsoap参数老是记不住,岁月不饶人
- Tello SDK 开发避坑指南(持续更新)
- UEFI BIOS setup菜单之页面隐藏的方法
热门文章
- 记一次 .NET 某HIS系统后端服务 内存泄漏分析
- 龙芯3A5000完成流片 同主频性能追平AMD Zen1
- 快来参加学习.NET 挑战赛
- 内存不够用还要速度快,终于找到可以基于 File 的 Cache 了
- 带你深入探究云原生时代的分布式操作系统 Kubernetes
- 微软备战 RPA 市场,Power Platform,Ready GO!
- 微软想将新版Edge浏览器引入Linux
- .Net Core2.1 秒杀项目一步步实现CI/CD(Centos7)系列二:k8s高可用集群搭建总结以及部署API到k8s...
- 微软宣布 Visual Studio 2019 将于4月2日正式发布
- 我心中的ASP.NET Core 新核心对象WebHost(一)