当前位置 博文首页 > 老猿Python:两行Python代码实现视频的淡入淡出处理

    老猿Python:两行Python代码实现视频的淡入淡出处理

    作者:[db:作者] 时间:2021-07-27 08:46

    ? ? 老猿Python博文目录 ?
    在这里插入图片描述

    一、引言

    最近看到好几篇类似“n行Python代码…”的博文,看起来还挺不错,简洁、实用,传播了知识、带来了阅读量,撩动了老猿的心,决定跟风一把,推一个“n行Python代码系列”文章。

    对于视频中的画面,在视频开始和结尾使用淡入淡出处理会营造一种让人比较适应的氛围,淡入就是将视频开始到某时刻逐步由暗变亮的过程,淡出是从某时刻开始到视频结尾由亮变暗的过程。

    本文介绍通过Python+Moviepy两行代码实现视频淡入淡出处理的方法。更多“n行Python代码系列”文章请参考免费专栏《n行Python代码系列》。

    二、实现视频淡入淡出处理的案例

    本次以老猿下载的《粉丝记事本》作为处理视频,我们通过如下代码来进行视频淡入处理:

    from moviepy.editor import *

    clip = VideoFileClip(r"F:\video\fansNote1M_crop.mp4")
    clipColorx = clip.fx(vfx.fadein,15)
    clipColorx.write_videofile (r"F:\video\fansNote1M_fadein.mp4")

    上述四行代码实现Moviepy模块的加载、然后读入视频文件、对视频前15秒进行淡入处理、输出调整后视频到结果视频文件。以上四行代码也可以精简为如下两行:

    from moviepy.editor import *

    VideoFileClip(r"F:\video\fansNote1M_crop.mp4").fx(vfx.fadein,15).write_videofile (r"F:\video\fansNote1M_fadein.mp4")

    淡出处理类似,只要把函数fadein改成fadeout,并调整时间参数即可。

    下面看看效果:

    三、背景知识

    3.1、moviepy介绍

    要实现视频剪辑,老猿使用了moviepy库。MoviePy是一个用于视频编辑的Python模块,可用于进行视频的基本操作(如剪切、连接、标题插入)、视频合成(也称非线性编辑)、视频处理或创建高级效果。它可以读写最常见的视频格式,包括GIF。MoviePy能处理的视频是ffmpeg格式的,老猿理解支持的文件类型至少包括:*.mp4 *.wmv *.rm *.avi *.flv *.webm *.wav *rmvb。

    MoviePy使用ffmpeg读取、导出视频和音频文件,使用ImageMagick生成文本和输出GIF文件。Python的快速数字库Numpy保证了不同媒体的处理。高级效果和增强使用了Python的许多图像处理库(PIL、Scikit-image、scipy等)。

    moviepy的核心对象是剪辑(clips),包括AudioClips 和VideoClips。它们可以修改(剪切、减速、变暗…)或与剪辑混合以形成新剪辑,可以使用PyGame或IPython Notebook预览,并可以输出到对应类型的文件(如MP4、GIF、 MP3等)。例如,VideoClips可以从视频文件、图像、文本或自定义动画创建。VideoClips可以有一个音频轨道(这是一个AudioClip)和一个mask(一个特殊的VideoClip,指示当剪辑与其他剪辑混合时要隐藏哪些部分)。

    MoviePy安装非常简单,使用pip安装时,请将站点指向国内的镜像站点,否则下载很慢或者下载不下来,老猿使用清华的镜像,指令是:

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple moviepy

    3.2、代码使用相关函数介绍

    上述代码涉及到的相关函数包括VideoFileClip、fx、fadein、write_videofile,其中:

    VideoFileClip实际上是一个类,用于从视频文件装载视频到内存

    fx函数是Moviepy剪辑基类Clip的方法,fx方法是用于执行参数指定的函数,并返回该参数对应函数的执行结果

    fadein用于调整剪辑的淡入,对应的要进行淡出处理使用fadeout,注意时间参数t的含义是淡入处理是从开头到t时刻的视频进行淡入处理,淡出是从t时刻开始到结尾进行淡出处理

    write_videofile用于将剪辑内容输出到视频文件

    四、小结

    本文介绍了使用Python+Moviepy 两行代码实现视频淡入淡出的方法,并介绍了moviepy的功能及安装以及相关处理的关键函数功能。

    写博不易,敬请支持:

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

    如对文章内容存在疑问,可在博客评论区留言,或关注:老猿Python 微信公号发消息咨询。

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

    关于老猿的付费专栏

    付费专栏《 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 使用PyQt开发图形界面Python应用专栏目录》;

    付费专栏《 moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《moviepy音视频开发专栏文章目录》;

    付费专栏《 OpenCV-Python初学者疑难问题集》为《 OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《 OpenCV-Python初学者疑难问题集专栏目录 》

    付费专栏《Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。

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

    对于缺乏Python基础的同仁,可以通过老猿的免费专栏《 专栏:Python基础教程目录》从零开始学习Python。

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

    如对文章内容存在疑问,可在博客评论区留言,或关注:老猿Python 微信公号发消息咨询。

    老猿Python,跟老猿学Python!

    ? ? 前往老猿Python博文目录 ?

    cs