# Video Cutter **Repository Path**: eianiao/video-cutter ## Basic Information - **Project Name**: Video Cutter - **Description**: 批量将指定目录的所有视频按照规则时长进行切割成指定时长的工具 - **Primary Language**: Unknown - **License**: Unlicense - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-05 - **Last Updated**: 2026-05-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 视频批量切割工具 基于 ffmpeg 流复制(-c copy)无损切割的批量视频处理工具。 ## 功能特性 - 批量扫描目录中的视频文件 - 自动按阈值判断是否需要切割 - ffmpeg 流复制无损切割(不重新编码) - 自定义命名规则(支持 {name}, {index}, {index3}, {total} 占位符) - 分页浏览扫描结果,支持全选/取消全选 - 一键去除已切割视频 - Catppuccin 四色主题切换(Mocha / Latte / Macchiato / Frappé) - 日志字体大小自定义 - 配置持久化(主题、字体大小等) - 全屏日志窗口 - 递归子目录扫描 ## 环境要求 - Python 3.8+ - ffmpeg / ffprobe(需在 PATH 中或放在 exe 同目录下) ## 安装 ```bash # 开发模式安装 pip install -e . # 或直接运行 python -m video_cutter.main ``` ## 使用 ### 命令行启动 ```bash video-cutter ``` 或: ```bash python -m video_cutter.main ``` ### 打包为 exe ```bash pip install pyinstaller pyinstaller --onefile --windowed --name 视频批量切割工具 video_cutter/main.py ``` ## 项目结构 ``` video-cutter/ ├── video_cutter/ │ ├── __init__.py # 包初始化,版本号 │ ├── main.py # 入口点 │ ├── constants.py # 常量定义 + Catppuccin 主题 │ ├── config.py # 配置管理(加载/保存/主题获取) │ ├── utils.py # 工具函数(ffmpeg路径、时长获取、文件收集等) │ ├── core.py # 视频处理核心逻辑(扫描、切割) │ └── gui.py # GUI 界面(App 主窗口 + FullScreenLog) ├── pyproject.toml # 项目配置 ├── requirements.txt # 依赖 └── README.md # 说明文档 ``` ### 模块职责 | 模块 | 职责 | 依赖 | |------|------|------| | `constants.py` | 常量、主题定义、配置路径 | 无 | | `config.py` | 配置文件读写 | constants | | `utils.py` | ffmpeg 调用、文件处理、格式化 | constants | | `core.py` | 视频扫描与切割业务逻辑 | constants, utils | | `gui.py` | tkinter GUI 界面 | constants, config, utils, core | | `main.py` | 程序入口 | gui | ## 配置文件 配置文件存储在 `~/.split_videos_gui/config.json`,包含: - `theme`: 主题名称(mocha / latte / macchiato / frappe) - `log_font_size`: 日志字体大小 ## License MIT