Moviepy音视频剪辑:视频添加雪花飘落特效

python --moviepy合成视频加转场效果(淡入淡出),FFmepg,取首帧 【代码】python --合并视频加转场效果(淡入淡出) 阅读详情
☞ ░ 老猿Python博文目录:https://blog.youkuaiyun.com/LaoYuanPython ░

一、背景和需求

在《https://blog.youkuaiyun.com/LaoYuanPython/article/details/115298737 OpenCV-Python图形图像处理:制作雪花飘落特效》介绍了使用OpenCV制作雪花飘落特效的图像播放的过程,如果要将该功能引入到视频中,在上面博文的基础上其实是非常容易的,下面我们就来介绍实现。

二、实现原理

要给视频加雪花特效,是基于以下原理来实现的:

  1. 每个视频都是由一个个视频帧构成,每个视频帧都是一副静态的图像,通过视频帧的连续显示形成动态视频;
  2. 实现视频雪花飘落,就是在视频的每帧图像中添加雪花,并在前后相连的视频帧中变化雪花的位置,形成雪花下飘带横向移动的效果;
  3. 雪花的图片本身是一个矩形,矩形内有黑色背景和白色的雪花,在将雪花图片添加到视频帧时,需要确保黑色部分不会遮盖帧图像的内容,只有白色的雪花前景色才可以遮挡帧图像内容。这就需要通过图像的阈值处理确得到雪花图像的二值图,用该二值图及其补图作为掩膜,二值图作为雪花原始图片与自身与运算的掩码来获取雪花图片的前景色,补图作为帧图片雪花对应位置的子图与子图自身与运算的掩膜来获取雪花黑色背景部分对应的帧图像作为背景色;
  4. 对视频帧调用雪花融合图像的函数进行动态融合雪花的处理
  5. Moviepy的fl_image是视频剪辑基类VideoClip的方法,该方法用于对视频的帧图像进行变换,其参数包括一个对帧图像进行变换的函数image_func,具体变换由应用实现对图像进行变换处理的一个函数,然后将该函数作为image_func的值参传入fl_image,Moviepy就会调用该函数完成对视频每帧图像的处理生成新的剪辑

三、具体实现

3.1、实现流程

在这里插入图片描述

3.2、关键实现

本文的大部分代码来源于《https://blog.youkuaiyun.com/LaoYuanPython/article/details/115298737 OpenCV-Python图形图像处理:制作雪花飘落特效》,小部分进行了调整,增加了视频生成相关代码:

3.2.1、将所有雪花对象融合到背景图像

上帧图像中的雪花在当前帧中需要随机下落一定位置,并在一定幅度内横向漂移,当有雪花落到图像底部之下时,需要释放对应对象以节省资源。

融合雪花到图片的函数addSnowEffectToImg本文进行了优化,主要是在融合前的生成一排新雪花对象的功能合并到本函数中:

def addSnowEffectToImg(img):
    """
    将所有snowObjects中的雪花对象融合放到图像img中,融合时y坐标随机下移一定高度,x坐标左右随机小范围内移动
    """
    global snowShapesList,snowObjects
    horizontalMaxDistance,verticalMaxDistance = 5,10 #水平方向左右漂移最大值和竖直方向下落最大值
    rows,cols = img.shape[:2]
    maxObjsPerRow = int(cols/100)
    snowObjects += generateOneRowSnows(cols, random.randint(0, maxObjsPerRow))
    snowObjectCount = len(snowObjects)
    rows,cols = img.shape[0:2]
    imgResult = np.array(img)
    for index in range(snowObjectCount-1,-1,-1):
        imgObj = snowObjects[index] #每个元素为(imgId,x,y)
        if imgObj[2]>rows: #如果雪花的起始纵坐标已经超出背景图像的高度(即到达背景图像底部),则该雪花对象需进行失效处理
            del(snowObjects[index])
        else:
            imgSnow = snowShapesList[imgObj[0]]
            x,y = imgObj[1:] #取该雪花上次的位置
            x = x+random.randint(-1*horizontalMaxDistance,horizontalMaxDistance) #横坐标随机左右移动一定范围
            y = y+random.randint(1,verticalMaxDistance) #纵坐标随机下落一定范围
            snowObjects[index] = (imgObj[0],x,y) #更新雪花对象信息
            imgResult = addImgToLargeImg(imgSnow,imgResult,(x,y),180) #将所有雪花对象图像按照其位置融合到背景图像中
    return imgResult #返回融合图像
3.2.2、实现视频雪花飘落特效视频合成

下面的代码调用addSnowEffectToImg实现对《粉丝记事本》视频的雪花飘落特效:

from  moviepy.editor import *

def addVideoSnowEffect(videoFileName,resultFileName):
    clip = VideoFileClip(videoFileName)
    newclip = clip.fl_image(addSnowEffectToImg, apply_to=['mask'])
    newclip.write_videofile(resultFileName)

if __name__ == '__main__':
    addVideoSnowEffect(r'f:\video\fansNote.mp4',r'f:\video\fansNote_snow.mp4')
3.3、雪花飘落效果

粉丝记事本

四、小结

本文介绍了制作视频雪花飘落特效的原理、实现的思想以及流程,并利用Python+OpenCV+Moviepy提供了关键的实现代码,是一个供大家理解图像融合、Moviepy视频变换的完整案例。

更多相关moviepy知识的介绍请参考《https://blog.youkuaiyun.com/LaoYuanPython/article/details/108184832 Python音视频剪辑库MoviePy1.0.3中文教程导览及可执行工具下载》的导览式介绍。

写博不易,敬请支持:

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

关于老猿的付费专栏

  1. 付费专栏《https://blog.youkuaiyun.com/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.youkuaiyun.com/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
  2. 付费专栏《https://blog.youkuaiyun.com/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.youkuaiyun.com/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
  3. 付费专栏《https://blog.youkuaiyun.com/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.youkuaiyun.com/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.youkuaiyun.com/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录 》
  4. 付费专栏《https://blog.youkuaiyun.com/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取优快云文章信息、博主信息、给文章点赞、评论等实战内容。

前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.youkuaiyun.com/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.youkuaiyun.com/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

如果对文章内容存在疑问,可以在博客评论区留言,或关注:老猿Python 微信公号发消息咨询。
在这里插入图片描述

跟老猿学Python!

☞ ░ 前往老猿Python博文目录 https://blog.youkuaiyun.com/LaoYuanPython ░
用Python打造精彩动画与视频,4.2 特效和滤镜的使用 通过这些特效和滤镜,用户可以自由地为视频增添个性化的元素,使其更加生动和吸引人。在实际使用中,建议结合视频的主题和内容,合理选择和应用特效和滤镜,以达到最佳的视觉效果。 阅读详情

相关推荐

Python MoviePy——学习视频剪辑与创作

Python MoviePy是一个功能强大的Python库,提供了一系列音视频编辑的方法,而且语法简洁易懂、使用灵活。本教程导览将为大家介绍MoviePy的主要功能和使用方法,并提供一个可执行的音视频剪辑工具供下载,让大家可以体验到MoviePy的魅力。以上代码创建了一个长度为10秒的视频,其中前5秒为带有渐变色的背景,并居中显示标题文字“Python MoviePy 中文教程导览”,后面5秒则是一个静态画面。通过本篇文章和源代码的学习,相信大家也能够掌握MoviePy的基本用法,欢迎大家下载使用。

WELL_CODER的博客 618

python+moviepy音视频处理(三):视频特效方法-vfx模块

python+moviepy音视频处理(三):视频特效方法-vfx模块。

北冥有鱼的博客 6256

Moviepy实现视频雪花特效的完整教程.zip

图像处理库通常包含了一系列的工具和函数,用于图像的加载、保存、编辑、转换、增强和分析等。在生成雪花图像时,这些库能够帮助我们实现更快的开发效率和更丰富的图像效果。在众多图像处理库中,Pillow(PIL的一个分支)是一个广泛使用的库。Pillow提供了丰富的图像处理功能,包括但不限于画布、绘图、颜色转换、形状绘制等。另一个库OpenCV也是一个强大的计算机视觉库,虽然它更多地被用于图像识别和分析,但在处理图像方面也有其独特的优势。# 以下是使用Pillow创建一个简单的白色雪花图像的示例代码。

weixin_42128315的博客 946

moviepy,一个超酷的 Python 视频处理库!

在今天的数字时代,视频内容变得越来越流行,从社交媒体到在线教育。Python MoviePy是一个强大的Python库,专门用于视频编辑和处理。它可以帮助大家剪辑、合并、转换、添加效果和文字,以及进行各种视频处理操作。

m0_67847535的博客 3931

python实现雪花飘落效果实例讲解

在本篇文章里小编给大家整理了关于python实现雪花飘落效果的相关实例内容,以及代码写法,需要的朋友们参考下。

QGroundControl或者华科尔地面站安装完打不开问题解决

QGroundControl 华科尔 打不开

wv112406的博客 4886

OpenCV-Python+Moviepy 结合进行视频特效处理

本文介绍了制作视频雪花飘落特效和灯光秀的原理、实现的思想以及流程,并利用 Python+OpenCV+Moviepy 提供了关键的实现代码,可以供大家理解图像融合、图像制作视频、Moviepy 视频变换的完整案例。

老猿Python 1万+

利用腾讯云轻量服务器快速搭建网站CDN

腾讯云的轻量最近在主机和站长中间可谓是占尽来风头,优秀的线路,低廉的价格使得越来越多的人开始使用腾讯云的轻量级服务器来部署应用。由于腾讯云轻量服务器的海外服务器电信走的是CN2GIA线路带宽30m挺适合做CDN的,我就记录一下如何利用腾讯云香港的轻量服务器搭建一个CDN。 购买服务器 首先选购服务器,最近腾讯云在做活动,力度很大国内备案用户可以选用国内的服务器最低128元/年,未备案的可以选用香港或者新加坡的服务器。 购买链接 服务器系统选Debian、Ubuntu、centos都可以 一键脚

demo_top的博客 2562

PyQt+moviepy音视频剪辑实战文章目录

本专栏为moviepy音视频开发的免费专栏,基于老猿阅读moviepy1.03版本的源代码以及大量测试验证的基础上,介绍moviepy主要音视频剪辑相关类的方法、以及一些音视频剪辑合成处理的场景化支撑能力和部分剪辑合成实现的案例或工具开发。

老猿Python 7330

西门子博图指令(定时器操作三)

西门子博图定时器中复位定时器功能指令介绍

yue008的博客 8871

BIM模型轻量化避坑指南:Revit导出GLTF常见问题及解决方案

本文深入探讨了BIM模型轻量化过程中,从Revit导出GLTF格式时遇到的常见问题与解决方案。针对文件体积膨胀、材质丢失、属性信息缺失等核心痛点,提供了从数据预处理、Draco几何压缩、纹理优化到Web端性能调优的全流程实战指南,帮助工程师高效实现BIM模型在WebGL环境中的流畅展示与交互。

wdx012345的博客 171

Moviepy+OpenCV-python 结合进行音视频剪辑处理的一种建议模式

本文简单介绍了 Moviepy 库和 OpenCV-python 库,并讨论了 Moviepy 结合 OpenCV-python 进行视频剪辑的适用的一些场景,同时给出了这种剪辑处理模式的推荐实现方案,对使用 Python 进行视频剪辑处理感兴趣的同仁可以按照该模式去进行尝试。

老猿Python 3850

ComfyUI 的 LoRA 训练:素材打标签与调优全攻略

标签是 LoRA 训练的"地基"——地基打不牢,后续调参再精细也难出好效果。记住:标签要"少而精",聚焦独特点,用触发词控效果。下一篇我们将讲解参数设置,让你的优质标签发挥最大价值~

2301_78150483的博客 3098

老猿Python博文汇总目录--按标题排序

☞ ░ 前往老猿Python博文目录 ░ 本部分为老猿优快云全部博文的汇总(含转载部分),所有文章在此未进行归类,仅按文章标题排序。 BloomFilte布隆过滤器简介 优快云-markdown编辑器使用方法 HTTP请求头和响应头详解【转】 HTTP响应报文应答状态码及含义 IT人的5G网络架构视点:从网络架构演进的前世今生详解5G各NF网络功能体 Model/View开发小结 PyCharm中怎么将非当前工程文件的目录的文件加到当前工程中 PyQt Designer中带参数的信号为什么匹配不到带参

老猿Python 5001

ZW3D 二次开发-制作插件

1.Windows 7 SP1 或 Windows 10 或 Windows 11(推荐 Windows 11)2.Visual studio 2017-2022 (或 C/C++的任何其他集成开发环境)(推荐 Visual studio 2022)3.ZW3D 2023 或以上版本(建议使用与 ZW3D 一致的 API 的版本)4.Qt5.9.7(for Windows)博主学习使用环境的是:Windows 11 Version 24H2 + Visual studio 2022 + Qt5.9.7(fo

fhqiwmc的博客 809

vue2/3 - [超详细] 实现企业微信扫码登录完整流程及代码,vue项目接入企业微信扫码登录功能教程,支持新跳页显示二维码或div容器里内嵌登录二维码(详细代码注释,一键复制开箱即用)

vue企业微信扫码登录,vue网页网站企业微信扫码登录教程,vue如何实现企业微信扫码登录功能,vue详细企业微信扫码登录功能实现,vue2实现企业微信扫码登录,前端vue企业微信扫码登录教程,vue pc电脑端企业微信扫码登录详细教程,vue项目中怎么做企业微信扫码注册登录,vue实现网站接入企业微信扫码登录,vue2做企业微信扫码登录的优质文章教程,vue网站对接企业微信扫码登录,vue企业微信扫码登录如何新开一页全屏显示登录二维码,vue企业微信登录二维码 内嵌在div容器里/跳页显示登录二维码,vu

✅ 精选推荐文章 5700

OpenCV-Python图形图像处理专栏文章目录

OpenCV-Python setMouseCallback回调函数中图像变量img的传递方法解析 OpenCV-Python图像乘法运算cv2.multiply函数详解及像素值溢出归一化处理 OpenCV-Python图像位与运算bitwise_and函数详解 OpenCV-Python图像的减法运算cv2.subtract函数详解以及和矩阵减法的差异对比 OpenCV-Python图像的加法运算cv2.add函数详解 OpenCV-Python图像融合cv2.addWeighted权重加法函数详解 Op

老猿Python 6717

ArcMap|使用模型构建器将kml文件批量转图层

参考:https://www.jianshu.com/p/6de18f846024 第一步:打开模型构建器,拖入kml转图层工具 第二步:插入文件迭代器 第三步:双击“迭代文件”,选择kml所在文件夹 第四步:将“File.kml”与“KML转图层”连接,点击“输入KML文件” 第五步:双击“KML转图层”,更改输出位置,输出数据名称改为%名称% 第六步:运行模型 得到结果: ...

个人学习笔记 3600

MoviePy - 中文文档-3-效果展示

回到目录 这里都是一些moviepy的实现,包括视频特效、Gif动画、3D特效果等等很炫的例子。 传送门:MoviePy画廊 有一些是youtube的视频链接,需要科学上网,还有一些youtube链接失效了。 这边放几个炫酷的例子吊吊胃口! gif动画,是不是很Q 超cool的动画效果     一起交流,一起进步,群内提问答疑 QQ群:MoviePy中文 :8197...

ucsheep-You see sheep! 4873

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

python moviepy 特效编辑

from moviepy.editor import * video = VideoFileClip('/home/chenyang/PycharmProjects/python_ocr/test_name.avi') audio = video.audio shape_data=audio.reader.buffer.shape #这里可以根据shape_data,设计声音的数组 audio.w...

东方佑 12万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

详解Python视频剪辑第三方库Moviepy的使用

Moviepy是一个用于处理视频的Python第三方库。它提供了简单易用的接口,可以进行视频剪辑、合并、转码以及添加各种效果等操作。本文将介绍如何使用Moviepy库来进行视频剪辑的基本操作。通过Moviepy库,我们可以方便地进行视频剪辑、添加文字和音乐等操作。本文介绍了Moviepy库的基本使用方法,希望对你在Python中处理视频有所帮助。你可以根据实际需求,进一步探索Moviepy库的其他功能和特性。

子午的博客 4816

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

MoviePy视频剪辑修改与特效应用指南

MoviePy作为Python视频编辑库,提供了多种方式来修改和增强视频剪辑。理解这些修改机制的工作原理对于高效使用该库至关重要。 ### 修改机制的本质 MoviePy采用**非破坏性编辑**原则,所有修改操作都会返回一个新的剪辑对象,原始剪辑保持不变。这种设计模式类似于函数式编程中的不可变数据结构理念。 ```python # 示例:非破坏性编辑演示 original_clip = Vi...

gitblog_00389的博客 594

moviepy音视频剪辑:使用concatenate_videoclips和clips_array将多个视频合成一个顺序播放或同屏播放的视频

专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一、视频合成概述 视频合成,也称为非线性编辑,实际上是在一个新剪辑中播放几个剪辑。 请注意视频剪辑通常带有音频和遮罩,它们也是剪辑。当您将这些剪辑组合在一起时,通过将剪辑的原声和遮罩组合在一起,将自动生成最终剪辑的原声和遮罩。所以大多数时候你不需要担心混音和面具。 两种简单的剪辑合成方法是将它们拼接起来(在一个长剪辑中一个接一个地播放它们)或将它们堆叠起来.

老猿Python 8404

Python音视频剪辑库MoviePy1.0.3中文教程导览及可执行工具下载

关于moviepy的两个专栏是老猿阅读moviepy库当前最新版本1.0.3的文档、源代码以及大量测试的基础上总结的MoviePy学习教程,本文将两个专栏的核心知识点,包括重要类的相关方法及作用、视频音频剪辑变换方法、场景式的支撑能力进行了导览式介绍,并给出了相关知识点教程的原文链接。 同时介绍了使用PyQt+moviepy实现的图形化视频剪辑工具的开发过程,并提供多视频合成(含顺序拼接和同屏播放)、从视频中选择多时间段范围的视频拼接、将视频转动画或图片文件的工具的win7和win10版本可执行文件下载。

老猿Python 1万+

moviepy简介及使用教程

MoviePy是一个用于视频编辑的Python库,使用户能够处理、编辑和操作视频文件。这个库允许你剪辑视频、添加文本、合并视频剪辑,以及应用各种效果和转换。它建立在和Decorator等库的基础上,使得在处理视频时能够更加高效。下面是一些MoviePy的主要功能和特点:剪辑和合并视频:MoviePy允许你从现有视频中选择特定的片段,然后将它们合并成一个新的视频文件。添加文本和图形: 你可以在视频中添加文本、图形和其他元素,以创建字幕、水印或其他视觉效果。视频效果:MoviePy。

Cachel Wood的博客 1615
上一篇: n行Python代码系列:两行代码实现视频文件转成系列图片输出
下一篇: n行Python代码系列专栏文章目录
LaoYuanPython
LaoYuanPython 2020年博客之星Top3 2020年博客之星Top3 领域专家: Python技术领域 领域专家: Python技术领域
博客等级 码龄8年 15万+粉丝 1324原创
评论 24
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LaoYuanPython

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值