当前位置: 首页 > news >正文

视频批量裁剪工具

概述

本工具使用 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 变量,设置为所需的裁剪区域坐标。
import os
import subprocessdef 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)

http://www.mrgr.cn/news/63239.html

相关文章:

  • 计算机毕业设计——ssm基于JAVA的求职招聘网站的设计与实现演示录像 2021
  • NVR批量管理软件/平台EasyNVR多个NVR同时管理支持对接阿里云、腾讯云、天翼云、亚马逊S3云存储
  • nfc碰一碰支付系统私有化部署大揭秘!如何实现收益最大化?
  • WSL2打开x11应用报错Error: Can‘t open display: :0
  • 力扣227:基本计算器II
  • qt QFormLayout详解
  • 探索智能投顾:正大金融数据分析如何优化市场策略
  • 【自动化测试】APP UI 自动化(安卓手机)-本地环境搭建
  • SSID,即Service Set Identifier(服务设置的表示符号)
  • CBAM填报攻略:关键点解析与实操案例分享
  • 台式电脑如何改ip地址:全面解析与实操指南
  • 成功解决:notepad++搜索结果窗口不见了,怎么找回?
  • 【无人机设计与控制】四旋翼无人机飞行姿态(ADRC)自抗扰控制Matlab仿真
  • msys2更换国内源(多个文件(不是3个文件的版本!))
  • 2024年重磅综述:探索深度多模态数据融合的学术前沿动态!
  • STM32滴答时钟是否每次计时1ms都要中断一下,更新ms数
  • 【测试工具篇一】全网最强保姆级教程抓包工具Fiddler(1)
  • VB中的日志记录(Logging)机制及其重要性
  • Vatee万腾平台:企业数字化之旅的全能助手与伙伴
  • FemtoMega阵列同步采集示例
  • 十五、mysql锁
  • 【C++动态规划 分组背包】1981. 最小化目标值与所选元素的差|2009
  • PLC数据采集案例分享
  • 配电室智能巡检机器人 挂轨简易 24小时 无人值守
  • Linux---硬盘管理
  • idea 导入Spring源码遇到的坑并解决