python+ffmpeg实现视频伪原创处理代码

代码语言:python

所属分类:其他

代码描述:python+ffmpeg实现视频伪原创处理代码,python结合ffmpeg实现对一个视频进行分割一小段后,再对分割后的视频进行风格化滤镜、放大缩小、速率控制、旋转等操作后,再一起合并成一个新视频。实现伪原创。

代码标签: python ffmpeg 视频 伪原创 处理 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

import subprocess
import random
import os
import json

def execute_ffmpeg(command):
    subprocess.run(command, check=True)

def split_video(input_file, output_prefix, duration):
    command = [
        'ffmpeg', '-i', input_file,
        '-c', 'copy', '-f', 'segment',
        '-segment_time', str(duration),
        '-reset_timestamps', '1',
        f'{output_prefix}%03d.mp4'
    ]
    execute_ffmpeg(command)

def apply_effects(input_file, output_file):
    # 获取输入视频的信息
    probe = subprocess.check_output(['ffprobe', '-v', 'quiet', '-print_format', 'json', '-show_format', '-show_streams', input_file])
    video_info = json.loads(probe)
    width = int(video_info['streams'][0]['width'])
    height = int(video_info['streams'][0]['height'])

    # 缩放范围更小,避免过度放大或缩小
    scale_factor = random.uniform(0.95, 1.05)
    new_width = int(width * scale_factor)
    new_height = int(height * scale_factor)
    
    # 确保新的宽度和高度是偶数
    new_width = (new_width // 2) * 2
    new_height = (new_height // 2) * 2

    # 随机选择一个滤镜效果,但概率降低
    filters = [
        'colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131',  # 复古
        'hue=s=0',  # 黑白
        'eq=brightness=0.06:saturation=1.3',  # 轻微增强饱和度
        'unsharp=3:3:1',  # 轻微锐化
        '',  # 无效果
        '',  # 无效果
    ]
    filter_effect = random.choice(filters)
    
    # 速率变化更温和
    speed = random.uniform(0.9, 1.1)
    
    # 旋转角度更小
    rotate = random.uniform(-5, 5)

    filter_complex = f"[0:v]"

    # 随机决定是否应用每个效果
    if random.choice([True, False]):
        filter_complex += f"setpts={1/speed}*PTS,"
    
    if filter_effect:
        filter_complex += f"{filter_effect},"
    
    if random.choice([True, False]):
        filter_complex += f"scale={new_width}:{new_height},"
    
    if random.choice([True, False]):
        filter_complex += f"rotate={rotate}*PI/180:c=black@0"
    
    # 移除末尾的逗号(如果存在)
    filter_complex = filter_complex.rstrip(',')

    command = [
        'ffmpeg', '-i', input_file,
        '-filter_complex', filter_complex,
        '-c:a', 'aac',  # 使用 AAC 音频编码
        '-c:v', 'libx264',  # 使用 x264 视频编码器
        '-preset', 'medium',  # 编码器预设
        '-crf', '23',  # 恒定速率因子,控制质量
        '-pix_fmt', 'yuv420p',  # 使用更通用的像素格式
        '-movflags', �.........完整代码请登录后点击上方下载按钮下载查看

网友评论0