两行Python代码调整视频的亮度
Posted LaoYuanPython
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两行Python代码调整视频的亮度相关的知识,希望对你有一定的参考价值。
☞ ░ 老猿Python博文目录 ░
一、引言
最近看到好几篇类似“n行Python代码…”的博文,看起来还挺不错,简洁、实用,传播了知识、带来了阅读量,撩动了老猿的心,决定跟风一把,推一个“n行Python代码系列”文章。
对于视频中的画面,有时出于特定需要希望调整视频的亮度。
本文介绍通过Python+Moviepy两行代码实现调整视频亮度的方法。更多“n行Python代码系列”文章请参考免费专栏《n行Python代码系列》。
二、实现视频亮度调整的案例
本次以老猿下载的《粉丝记事本》作为处理视频,下图是原视频10秒处的画面截图:
我们通过如下代码来进行视频亮度的调整:
from moviepy.editor import *
clip = VideoFileClip(r"F:\\video\\fansNote1M_crop.mp4")
clipColorx = clip.fx(vfx.colorx,0.8)
clipColorx.write_videofile (r"F:\\video\\fansNote1M_colorx.mp4")
上述四行代码实现Moviepy模块的加载、然后读入视频文件、对视频进行明亮度调整、输出调整后视频到结果视频文件。以上四行代码也可以精简为如下两行:
from moviepy.editor import *
VideoFileClip(r"F:\\video\\fansNote1M_crop.mp4").fx(vfx.colorx,0.8).write_videofile (r"F:\\video\\fansNote1M_colorx.mp4")
下面是明度调整为1.2倍的对应截图:
下面是明度调整为0.8倍的对应截图:
三、背景知识
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、colorx、write_videofile,其中:
- VideoFileClip实际上是一个类,用于从视频文件装载视频到内存
- fx函数是Moviepy剪辑基类Clip的方法,fx方法是用于执行参数指定的函数,并返回该参数对应函数的执行结果
- colorx用于调整剪辑的明度
- write_videofile用于将剪辑内容输出到视频文件
四、小结
本文介绍了使用Python+Moviepy 两行代码实现视频明亮度调整的方法,需要注意明度调整如果系数过高,会导致视频图像不正常,因此并不能无限调大,一般小于1.5比较好,当然要看原视频自身的亮度。并介绍了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博文目录 ░
以上是关于两行Python代码调整视频的亮度的主要内容,如果未能解决你的问题,请参考以下文章
n行Python代码系列:两行代码实现视频文件指定时刻画面输出
opencv中如何调整图像亮度和对比度,以及亮度和对比度调整的原理
opencv4opencv视频教程 C++ 7手动调整图像亮度与对比度 g(i, j) = αf(i, j) + β(点操作与邻域操作概念)