视频批量裁剪工具

概述

本工具使用 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)
相关推荐
xcLeigh6 小时前
HTML5超酷响应式视频背景动画特效(六种风格,附源码)
前端·音视频·html5
韩曙亮8 小时前
【FFmpeg】FFmpeg 内存结构 ③ ( AVPacket 函数简介 | av_packet_ref 函数 | av_packet_clone 函数 )
ffmpeg·音视频·avpacket·av_packet_clone·av_packet_ref·ffmpeg内存结构
9527华安12 小时前
FPGA实现PCIE3.0视频采集转10G万兆UDP网络输出,基于XDMA+GTH架构,提供工程源码和技术支持
网络·fpga开发·udp·音视频·xdma·pcie3.0·万兆网
电子科技圈12 小时前
XMOS携手合作伙伴晓龙国际联合推出集成了ASRC等功能的多通道音频板
科技·嵌入式硬件·mcu·物联网·音视频·iot
码码哈哈0.012 小时前
免费的视频混剪综合处理工具介绍与下载
音视频
莫固执,朋友12 小时前
网络抓包工具tcpdump 在海思平台上的编译使用
网络·ffmpeg·音视频·tcpdump
深海呐13 小时前
Android 从本地选择视频,用APP播放或进行其他处理
android·音视频·从本地选择视频,用app播放·从本地选择视频,并拿到信息·跳转到本地视频列表
cuijiecheng201813 小时前
音视频入门基础:MPEG2-TS专题(6)——FFmpeg源码中,获取MPEG2-TS传输流每个transport packet长度的实现
ffmpeg·音视频
安静读书16 小时前
Java解析视频FPS(帧率)、分辨率信息
java·python·音视频
VisionX Lab18 小时前
数据脱敏工具:基于 FFmpeg 的视频批量裁剪
python·ffmpeg·音视频