Skip to content

pt21014/batch-video-transcoder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Batch Video Transcoder

批量视频转码工具 — Python + Tkinter 图形界面,底层驱动 ffmpeg。

本地批量转码视频后再上传,输出参数对齐腾讯云点播(Tencent Cloud VOD)的转码模板, 使云端流水线可以直接接收文件,从而免去服务端转码费用。界面面向非技术用户,ffmpeg 全程在 后台驱动,不对用户暴露。

转码预设

两种输出格式,均为 H.264 / MP4 / AAC,默认同时产出。定义在 src/presets.py

预设 id 码率 帧率 缩放
STD-H264-MP4-1080P 2500 Kbps 25 短边 = 1080,保持宽高比
STD-H264-MP4-720P 1800 Kbps 25 短边 = 720,保持宽高比

缩放规则(“等比例缩放 x N”):保持宽高比,将短边缩放到目标值,强制输出为偶数尺寸 (H.264 要求,通过 ffmpeg 的 -2 实现),并且绝不放大(短边不超过源视频短边)。 横屏 / 竖屏由 if(gt(iw,ih),...) 表达式统一处理。

环境要求

  • Windows
  • Python 3.10+(需包含 tkinter)
  • ffmpeg.exeffprobe.exe

运行时仅依赖 Python 标准库(tkinter、subprocess、threading、pathlib)。 PyInstaller 只在打包时需要。

准备 ffmpeg

出于体积和授权考虑,仓库不包含 ffmpeg 二进制。请从 gyan.dev(release essentials 即可)或 BtbN/FFmpeg-Builds 下载 Windows 构建, 将 ffmpeg.exeffprobe.exe 放入 vendor/ffmpeg/

程序会优先查找 vendor/ffmpeg/,找不到则回退到系统 PATH 上的 ffmpeg。

使用

# 从源码运行
python main.py

# 安装打包工具
pip install -r requirements.txt

# 构建独立 exe(会打包 vendor/ffmpeg/)-> dist/BatchVideoTranscoder.exe
pyinstaller build.spec

项目结构

main.py                  入口,调用 src.gui.app.main()
src/presets.py           Preset 数据类、两个预设、ffmpeg 参数与缩放滤镜构建(改转码参数在这里)
src/ffmpeg_locator.py    定位 ffmpeg/ffprobe:先 vendor/ffmpeg(打包后走 sys._MEIPASS),再 PATH
src/ffmpeg_runner.py     probe_duration() 与 transcode():-progress 解析进度、支持取消、失败清理
src/transcoder.py        BatchJob 展开(文件 × 预设)为任务并在工作线程串行执行
src/gui/app.py           Tkinter 窗口(文件列表、预设勾选、输出目录、进度、日志、开始/取消)
build.spec               PyInstaller 打包配置

分层设计使 ffmpeg / 线程逻辑独立于 GUI。批处理运行在后台线程,Tkinter 只在主线程访问 —— 工作线程的回调一律通过 root.after(0, ...) 转发到 UI。

编码器固定使用 CPU 的 libx264:跨客户端机器可移植,且与腾讯云模板画质表现一致。

许可证

MIT © neal

本项目不分发 ffmpeg。ffmpeg 有其自身的许可证(LGPL/GPL,取决于构建方式), 请自行下载并遵守相应条款。

About

批量视频转码工具 — Python + Tkinter GUI driving ffmpeg, outputs matching Tencent Cloud VOD templates

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages