社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

教你用 Python 确保制作的短视频独一无二

机器学习算法与Python学习 • 3 年前 • 690 次点击  



点击 机器学习算 法与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,加入一些特殊的模板、片段片尾渐变动画来确保视频的原创性和唯一性

全部源码:https://github.com/xingag/tools_python/blob/master/%E8%A7%86%E9%A2%91%E7%89%B9%E6%AE%8A%E5%A4%84%E7%90%86.py

如果你觉得文章还不错,请大家点赞分享下。你的肯定是我最大的鼓励和支持。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/114315
 
690 次点击