视频批量裁剪工具

概述

本工具使用 Python 和 FFmpeg 实现视频批量裁剪功能,并将裁剪后的视频保存为 MP4 格式。用户可以指定输入文件夹和输出文件夹,以及裁剪区域的坐标。

功能

批量处理:支持批量处理指定文件夹中的多个视频文件。

裁剪区域:用户可以自定义裁剪区域的坐标。

输出格式:裁剪后的视频统一保存为 MP4 格式。

安装与配置 环境要求

Python:3.6 或更高版本。

FFmpeg:确保 FFmpeg 已安装并配置在系统路径中,或者指定 FFmpeg 的完整路径。

安装 FFmpeg

访问 FFmpeg 官方网站 下载适用于您操作系统的 FFmpeg 版本。

解压下载的文件,并将 FFmpeg 的可执行文件路径添加到系统环境变量中,或者在代码中指定 FFmpeg 的完整路径。

代码配置

  1. L修改 input_folder 和 output_folder 变量,分别设置为输入视频文件夹和输出视频文件夹的路径。
  2. 修改 x1, y1, x2, y2 变量,设置为所需的裁剪区域坐标。
python 复制代码
import os
import subprocess

def crop_video(input_file, output_file, x1, y1, x2, y2):
    # FFmpeg 可执行文件的完整路径
    ffmpeg_path = r'C:\Users\Administrator\anaconda3\envs\opencv\Lib\site-packages\imageio_ffmpeg\binaries\ffmpeg-win64-v4.2.2.exe'

    # 构建 FFmpeg 命令
    command = [
        ffmpeg_path,
        '-i', input_file,  # 输入文件
        '-vf', f'crop={x2 - x1}:{y2 - y1}:{x1}:{y1}',  # 裁剪参数
        '-c:v', 'libx264',  # 使用 H.264 编码器
        '-crf', '18',  # 设置 CRF 值
        '-preset', 'slow',  # 设置编码速度/质量权衡
        '-b:v', '5000k',  # 设置视频比特率
        '-c:a', 'copy',  # 复制音频流
        output_file  # 输出文件
    ]

    # 执行命令
    try:
        subprocess.run(command, check=True)
    except subprocess.CalledProcessError as e:
        print(f"Error executing FFmpeg: {e}")
    except FileNotFoundError as e:
        print(f"FFmpeg not found: {e}")

def batch_crop_videos(input_folder, output_folder, x1, y1, x2, y2):
    # 确保输出文件夹存在
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    # 遍历输入文件夹中的所有文件
    for filename in os.listdir(input_folder):
        if filename.endswith(('.wmv', '.mp4', '.avi', '.mkv')):  # 支持的视频格式
            input_file = os.path.join(input_folder, filename)
            # 生成输出文件路径,统一为 .mp4 格式
            output_filename = os.path.splitext(filename)[0] + '.mp4'
            output_file = os.path.join(output_folder, output_filename)
            print(f"Cropping {input_file} to {output_file}")
            crop_video(input_file, output_file, x1, y1, x2, y2)

if __name__ == "__main__":
    input_folder = "input"  # 输入视频文件夹
    output_folder = "cropped_videos"  # 输出视频文件夹

    # 设置裁剪区域坐标
    x1 = 250  # 左上角 X 坐标
    y1 = 137  # 左上角 Y 坐标
    x2 = 1030  # 右下角 X 坐标
    y2 = 820  # 右下角 Y 坐标

    batch_crop_videos(input_folder, output_folder, x1, y1, x2, y2)
相关推荐
hflmwl814 分钟前
Wise Data Recovery找回误删的文档照片音乐和视频
音视频·datarecovery·找回误删的文档照片音乐和视频·找回误删的文档照片音乐视频
技灵AI43 分钟前
AI 视频转场提示词怎么写?让前后画面衔接更自然
人工智能·prompt·aigc·音视频
youandyouyou3 小时前
跨区培训的屏幕共享怎么做才稳?同屏同步与弱网优化实践
音视频·网络通信
开开心心就好3 小时前
课堂随机点名工具,绿色版免安装双击即用
java·服务器·前端·ffmpeg·音视频·perl·symfony
美狐美颜SDK开放平台3 小时前
直播APP集成美颜SDK,如何梳理第三方组件的数据权限?
开发语言·人工智能·深度学习·音视频·第三方美颜sdk
l14372332674 小时前
批量视频硬字幕擦除多少钱?影响报价的关键因素全解析
音视频
重生六道5 小时前
B站视频时长统计:一段JS脚本搞定分P/合集总时长(附倍速计算)
开发语言·javascript·音视频
音视频牛哥5 小时前
不换摄像机,也能接入 WebRTC?SmartMediaKit RTSP/RTMP 转 WHIP 技术实践
音视频·webrtc·smartmediakit·rtsp转whip·rtmp转whip·whip推流·rtsp转webrtc播放
lll23526917795 小时前
Android APP短视频音频提取,主流工具怎么选
ffmpeg·音视频
乐橙开放平台7 小时前
门店监控想集中看?乐橙含光支持多品牌摄像头跨店管理
网络·笔记·物联网·自动化·音视频·智能家居