拒绝降权!教你用 Python 确保制作的短视频独一无二
1. 场景
前段时间有人私信我,说自己辛辛苦苦剪辑的短视频,上传到某平台后,由于播放量太大,收到 降权 的通知,直接导致这个账号废掉了!
其实,各大视频平台都有自己的一套鉴别算法,针对视频的二次创作,如果直接搬运,都会面临着一些未知风险
本篇将带大家用 Python 对短视频做一些特殊处理,保证视频的 原创性 和 唯一性
2. 实现
下面将从 MD5、光线、色彩 3 个方面来进行说明
第 1 步,修改视频的 MD5 值
MD5 是一种密码散列函数,文件的 MD5 值可以判断文件是否被修改
使用 Python 自带的 hashlib 模块,分段读取文件,可以获取文件的 MD5 值
def get_file_md5(file_path):
"""
分段读取,获取文件的md5值
:param file_path:
:return:
"""
with open(file_path, 'rb') as file:
md5_obj = hashlib.md5()
while True:
buffer = file.read(8096)
if not buffer:
break
md5_obj.update(buffer)
hash_code = md5_obj.hexdigest()
md5 = str(hash_code).lower()
return md5
要修改文件的 MD5 值,只需要在文件尾部追加一段字符串即可
def modify_file_md5(file_path):
"""
修改文件的md5值
:param file_path:
:return:
"""
with open(file_path, 'a') as file:
file.write("####&&&&")
第 2 步,亮度调整
亮度调整,相当于调整整个视频的曝光度,增加或者降低视频的光线
首先,安装 moviepy 依赖库
# 安装依赖库
pip3 install moviepy
接着,增加画面亮度,这里有两种方式增加视频亮度
第一种方式,对视频的每一帧图片,做亮度值调整
def handle_frame(image_frame):
"""
处理图片帧
:param image_frame:图片帧
:return:
"""
image_frame_result = image_frame * 1.2
# 如果颜色值超过255,直接设置为255
image_frame_result[image_frame_result > 255] = 255
return image_frame_result
def increase_video_brightness(file_path):
"""
增加视频整体亮度
:param file_path:源视频路径
:return:
"""
video = VideoFileClip(file_path)
result = video.fl_image(handle_frame)
file_path_new = "/Users/xingag/Desktop/new.mp4"
result.write_videofile(file_path_new)
第二种方式,从文件中提取视频剪辑 VideoFileClip,使用 fx() 函数中的 vfx.colorx 参数,指定一个系数,直接对视频画面亮度进行调整
def increase_video_brightness2(file_path):
"""
增加视频整体亮度2
:param file_path:源视频路径
:return:
"""
# 调整系数值
coefficient_value = 1.2
video = VideoFileClip(file_path)
file_path_new = "/Users/xingag/Desktop/new.mp4"
video.fx(vfx.colorx, coefficient_value).write_videofile(file_path_new)
如果想降低视频整体的亮度,可以将上面的系数调整为小于 1 的数即可
第 3 步,色彩调整
色彩调整,具体包含:色相、色彩明亮度、饱和度等,这里以视频转为黑白效果为例
同样,使用 fx() 函数中的 vfx.blackwhite 参数,可以将彩色视频画面一键转为黑白视频
def change_video_bhd(file_path):
"""
黑白处理
:param file_path:
:return:
"""
video = VideoFileClip(file_path)
file_path_new = "/Users/xingag/Desktop/new.mp4"
video.fx(vfx.blackwhite).write_videofile(file_path_new)
3. 最后
除了上面的几种视频修改方式外,还可以借助 CV2 和 MoviePy,加入一些特殊的模板、片段片尾渐变动画来确保视频的原创性和唯一性
我已经将文中全部源码上传到公众号后台,关注公众号「 AirPython 」后回复「 ycdsp 」即可获得全部源码
如果你觉得文章还不错,请大家点赞分享下。你的肯定是我最大的鼓励和支持。

推荐阅读
拒绝降权!教你用 Python 确保制作的短视频独一无二的更多相关文章
- Python爬取某短视频热点
写在前面的一些话: 随着短视频的大火,不仅可以给人们带来娱乐,还有热点新闻时事以及各种知识,刷短视频也逐渐成为了日常生活的一部分.本文以一个简单的小例子,简述如何通过Pyhton依托Selenium来 ...
- 手把手教你用python打造网易公开课视频下载软件5-python生成exe程序
python程序生成exe文件,使用的是py2exe扩展包,下面写下具体的步骤: 第一步:新建conver2exe.py,内容如下: #coding:utf-8 from distutils.core ...
- 手把手教你用python打造网易公开课视频下载软件4-图形化界面
上一篇讲解完函数:def getdownLoadInfo (url): 传入公开课的url地址,就可以提取课程的信息,这一篇讲解一下如何编写图像化界面.大概思考一下图像化界面需要的内容: (1)一个标 ...
- 手把手教你用python打造网易公开课视频下载软件2-编码相关说明
函数getdownLoadInfo(url)主要实现核心功能:根据url地址,获取课程信息:课程名(courseTitle),课程数目(courseCount),可下载视频数目(videoCount) ...
- 手把手教你用python打造网易公开课视频下载软件1-总述
写作前面的话:最近准备重温一下算法导论,感谢大网易把MIT算法导论课程全部贴出来,地址为:http://v.163.com/special/opencourse/algorithms.html,在线看 ...
- 手把手教你用python打造网易公开课视频下载软件3-对抓取的数据进行处理
上篇讲到抓取的数据保存到rawhtml变量中,然后通过编码最终保存到html变量当中,那么html变量还会有什么问题吗?当然会有了,例如可能html变量中的保存的抓取的页面源代码可能有些标签没有关闭标 ...
- 视频剪辑什么鬼?Python 带你高效创作短视频
阅读文本大概需要 10 分钟. 近两年,抖音.快手将短视频推到风口浪尖上,要生产出高质量的视频,离不开视频剪辑这一环节:在全民剪片浪潮中,大众使用最多的剪辑软件如:Pr.FCPX.剪印.Vue 等. ...
- Python 带你一键生成朋友圈超火的九宫格短视频
1. 场景 如果你经常刷抖音和微信朋友圈,一定发现了最近九宫格短视频很火! 从朋友圈九宫格图片,到九宫格视频,相比传统的图片视频,前者似乎更有个性和逼格 除了传统的剪辑软件可以实现,是否有其他更加快 ...
- 12岁的少年教你用Python做小游戏
首页 资讯 文章 频道 资源 小组 相亲 登录 注册 首页 最新文章 经典回顾 开发 设计 IT技术 职场 业界 极客 创业 访谈 在国外 - 导航条 - 首页 最新文章 经典回顾 开发 ...
随机推荐
- 【网络安全】【02】Windows系统如何屏蔽自动更新
一.win键 + r ==> 输入 services.msc 二. win键 + r ==> 输入 gpedit.msc PS:我的电脑基本两年没有更新过了 -_-
- 【Java_Eclipse】Eclipse插件如何卸载?
本博客我们讲一下对于Eclipse的插件卸载 1.Eclipse中:Window——Install New SoftWare 2.找到相应插件卸载即可
- protected和private的区别
1. protected和private在没有继承关系的类A和类B之间其作用都可以视为式一样的--表示私有--每个类中的protected字段/属性都不能被访问到: 2. 当类与类之间存在继承关系时候 ...
- 5.Linux的启动过程和系统指令
1.Linux的启动过程 作为一台计算机,启动它的第一步是加电自检,也就是给电脑用电然后按电源按钮开机.加电之后的运行步骤:(1)加载bios,然后检查硬盘信息 (2)读取MBR的配置(MBR就是硬盘 ...
- [翔哥高手无敌之路]0-002.如何提取apk中的信息?
面对一款apk软件,我们如何去获取它的信息,如何获取它的版本号,包名,或者ID,用户权限,这些信息都隐藏在apk包中的AndroidManifest.xml文件中,解开它我们就能获取任何想要的信息.但 ...
- C#线程 并行线程
第五部分 并行线程 在本节中,我们将介绍Framework 4.0新增的利用多核处理器的多线程API: 并行LINQ或PLINQ Parallel 类 任务并行性构造 并发集合 自旋锁和自旋等待 ...
- 高性能可扩展mysql 笔记(二)用户模型设计、用户实体表结构设计、设计范式
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.用户模型设计 电商羡慕中用户模型的设计涉及以下几个部分: 以电商平台京东的登录.注册页面作为例: ...
- Java实现 LeetCode 307 区域和检索 - 数组可修改
307. 区域和检索 - 数组可修改 给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点. update(i, val) 函数可以通过将下标 ...
- Java实现 LeetCode 232 用栈实现队列
232. 用栈实现队列 使用栈实现队列的下列操作: push(x) – 将一个元素放入队列的尾部. pop() – 从队列首部移除元素. peek() – 返回队列首部的元素. empty() – 返 ...
- Java实现 LeetCode 206 反转链表
206. 反转链表 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL ...