MoviePy介绍

news/2025/3/22 2:04:03

      MoivePy是一个用于视频编辑的Python库,可以:剪切、拼接、标题插入、视频合成、视频处理和创建自定义效果。它支持Windows、Linux、Mac,源码地址:https://github.com/Zulko/moviepy,最新发布版本v1.0.3,license为MIT。

      windows上安装MoivePy:
      (1).从https://imagemagick.org/script/download.php 下载ImageMagick-7.1.1-10-Q16-HDRI-x64-dll.exe进行默认安装,可通过cmd,执行"magick --version"验证是否安装成功;
      (2).安装moivepy,执行:pip install moviepy
      (3).执行测试代码时,如果报ImageMagick的错误,如"This error can be due to the fact that ImageMagick is not installed on your computer",安装ImageMagick时,已经加入到系统环境变量中了,但是还是报错,可通过修改Anaconda3/envs/OpenCV_Test/Lib/site-packages/moviepy目录下的config_defaults.py文件解决:

IMAGEMAGICK_BINARY = os.getenv('IMAGEMAGICK_BINARY', 'auto-detect') # 原语句
IMAGEMAGICK_BINARY = os.getenv('IMAGEMAGICK_BINARY', 'C:\Program Files\ImageMagick-7.1.1-Q16-HDRI\magick.exe') # 修改后

      测试代码,通过MoviePy给视频添加文本或图像:

import moviepy.editor as mp
import cv2def add_text(filename, text, font, fontsize, color, pos, result):clip = mp.VideoFileClip(filename)#clip = clip.subclip(10, 20) # 仅clip 10到20秒之间的视频#print(f"duration: {clip.duration} seconds") # 视频文件clip的持续时间txt_clip = (mp.TextClip(text, font=font, fontsize=fontsize, color=color).set_position(pos).set_duration(clip.duration))#print(f"color list:\n {mp.TextClip.list('color')}") # 支持的color列表#print(f"font list:\n {mp.TextClip.list('font')}") # 支持的font列表final = mp.CompositeVideoClip([clip, txt_clip]) # 将文本叠加在视频上final.write_videofile(result, fps=clip.fps, codec="libx264")def add_image(filename, image, pos, width, height, result):clip = mp.VideoFileClip(filename)#clip = clip.subclip(10, 20)mat = cv2.imread(image)mat = cv2.resize(mat, (width, height))#img_clip = (mp.ImageClip(image)img_clip = (mp.ImageClip(mat).set_position(pos).set_duration(clip.duration).set_opacity(0.5)) # 设置不透明度/透明度级别final = mp.CompositeVideoClip([clip, img_clip]) # 将图像叠加在视频上final.write_videofile(result, fps=clip.fps, codec="libx264")if __name__ == "__main__":filename = "../../test_images/123.mp4"pos = (100, 100) # 左上角坐标(x, y)#pos = ("left", "center") # center, right, left, bottom, toptext = "北京 fengbingchun"font = "Simhei" # "华文彩云" ...fontsize = 75color = "red" # green, black, blue, red ...result = "../../test_images/result_text.mp4"add_text(filename, text, font, fontsize, color, pos, result)image = "../../test_images/1.jpg"result = "../../test_images/result_image.mp4"width = 128height = 64add_image(filename, image, pos, width, height, result)print("test finish")

      执行结果如下图所示:也可同时将文本和图像添加到视频中,mp.CompositeVideoClip接收的参数是列表,调整为:mp.CompositeVideoClip([clip, txt_clip, img_clip])即可

      GitHub:http://github.com/fengbingchun/OpenCV_Test


https://dhexx.cn/news/show-4626918.html

相关文章

C++入门——关键字|命名空间|输入输出

前言: 今天我们又开启了一个崭新的大门——C面向对象编程语言,C是怎么来的呢?答案是:因为C语言的有很多不足,我们的祖师爷用着不爽,就不断更改,就改出来了一门新的语言,C。C语言兼容…

基于Springboot的社区论坛系统(源代码+数据库)055

部分代码地址 https://gitee.com/ynwynwyn/forum-public 基于Springboot的社区论坛系统(源代码数据库) 一、系统介绍 前台: 话题列表,搜索话题,发布话题通过标签筛选话题个人设置:修改个人信息,查看发布话题记录&a…

QT实现 WebsocketServer端与WebsocketClient 端通信

概 述 WebSockets 是一种通过单个 TCP 连接提供全双工通信信道的 web 技术。2011年,IETF 将 WebSocket 协议标准化为 RFC 6455 。Qt 提供的 QWebSocket 既可以用于客户端应用程序,也可以用于服务端应用程序,接口大部分和 QTcpSocket 一致。 …

《Apollo 智能驾驶进阶课程》

来自 : https://www.bilibili.com/video/BV1G341117NQ/ https://apollo.baidu.com/ 主要学习资源如下: Apollo社区公众号,直接有整个视频教程的微信推文教程:链接一个CSDN博主记录的笔记: https://blog.csdn.net/qq_45…

Python遍历网格中每个点

遍历网格中每个点 1. 问题描述2. Python实现2.1 网格参数初始化2.2 遍历赋值2.3 矩阵赋值1. 问题描述 最近需要实现一个对矩阵赋值并对矩阵表示的网格参数进行测试的任务,写了一段代码提供参考。 假设网格的长宽均为 2. Python实现 2.1 网格参数初始化 首先定义好需要划分…

【AI】Stable-Diffusion-WebUI使用指南

注:csdn对图片有审核,审核还很奇葩,线稿都能违规,为保证完整的阅读体验建议移步至个人博客阅读 最近AI绘画实现了真人照片级绘画水准,导致AI绘画大火,公司也让我研究研究,借此机会正好了解一下…

Vue- Treeselect组件使用(下拉框树形结构)

前言 最近在开发时遇到一个问题,是在输入框里面放一个树形组件。查看饿了吗之后发现都不太适合 最后在网上搜了一下,真的是有相关的组件Treeselect,确实有相关文章说明,但是比较乱。 在这里记录一下,Treeselect全局使…

深度学习应用篇-计算机视觉-图像增广[1]:数据增广、图像混叠、图像剪裁类变化类等详解

【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍:【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化…

基于卷神经网络VGG16的皮革瑕疵的识别检测(代码篇)

基于卷神经网络VGG16的皮革瑕疵的识别检测(代码篇) 文章目录 基于卷神经网络VGG16的皮革瑕疵的识别检测(代码篇)一、前言二、准备工作1、导入依赖项和数据集2、数据预处理3、可视化训练集中的图像样本三、创建VGG16网络模型四、模型训练1、定义损失函数和优化器2、训练模型…

【C++】【命名规范】你的代码风格是哪种?(驼峰命名法、下划线命名法、帕斯卡命名法、常量命名法等)

前言: 在 C/C 中,类名、接口名、变量名和函数名等的命名规则是比较自由的,开发者可以根据自己的喜好选择合适的命名方式。但是,为了保持代码的可读性和可维护性,我们通常遵守一些命名规则。 例如驼峰命名法、下划线命名…