python开源 视频处理小工具,给视频添加透明通道
项目开源地址:项目首页 – MP4视频添加透明通道工具:选择一张灰度图片,选择一个Mp4视频,一键转化为带透明通道的webm视频,适用于弹幕互动游戏的入场动效,配合AI生成视频可以做很多效果 – GitCode
MP4 to WebM Converter 🎬
一个基于Python和Streamlit的Web应用程序,用于将MP4视频转换为带透明通道的WebM格式视频。
视频加透明通道功能界面
✨ 功能特性
- 🎥 视频转换: 将MP4视频转换为带透明通道的WebM格式
- 🖼️ 透明通道: 使用灰度图片作为视频的透明通道
- 🚀 视频合并: 支持多个视频文件合并,可选统一尺寸和转场效果
- ⏱️ 视频倍速调整: 支持按倍速或目标时长调整视频播放速度
- 📱 Web界面: 现代化的Streamlit Web界面,操作简单直观
- 👀 实时预览: 支持上传文件的实时预览功能
- 🔄 智能重命名: 根据文件MD5值自动重命名,避免文件冲突
- 📁 文件管理: 支持图片、视频和WebM文件的增删改查和预览
- ⏰ 时间戳命名: 输出文件使用年月日时分秒格式命名
- 📥 下载功能: 处理完成后可直接下载结果文件
🚀 快速开始
环境要求
- Python 3.7+
- FFmpeg 7.0.2(已包含在项目中)
安装依赖
pip install -r requirements.txt
启动应用
python -m streamlit run app.py
应用将在 http://localhost:8501
启动。
打包为独立可执行程序
本项目支持打包为独立的Windows可执行程序(.exe),无需安装Python环境即可运行。
方法一:使用批处理文件(推荐)
- 双击运行项目根目录下的
build.bat
文件 - 等待打包完成,打包后的可执行文件将位于
dist
目录中
方法二:手动打包
- 安装必要的依赖:
pip install -r requirements.txt
- 运行打包脚本:
python build.py
- 打包完成后,可执行文件将位于
dist
目录中
使用打包后的应用
- 进入
dist
目录 - 双击运行
MP4转WebM工具.exe
- 应用将自动启动并在浏览器中打开界面
📖 使用说明
基本使用流程
- 启动应用: 运行上述命令启动Web界面
- 选择功能: 在顶部选项卡中选择需要的功能
- 视频合并: 合并多个视频文件
- 视频倍速调整: 调整视频播放速度
- 视频加透明通道: 将MP4视频转换为带透明通道的WebM格式
- 文件管理: 管理已上传的图片、视频和WebM文件
- 上传文件: 根据选择的功能上传相应文件
- 设置参数: 根据需要调整处理参数
- 执行操作: 点击相应的处理按钮
- 查看结果: 处理完成后可预览和下载结果文件
文件处理说明
- 输入文件: 上传的文件会根据MD5值重命名并保存到对应目录
- 视频文件保存到
video/
目录 - 图片文件保存到
image/
目录
- 视频文件保存到
- 输出文件: 处理后的文件保存到相应目录
- WebM文件保存到
webm/
目录 - 合并或调速后的视频保存到
video/
目录 - 文件名格式:
YYYYMMDDHHMMSS.xxx
(如:20250819180045.webm)
- WebM文件保存到
文件管理功能
文件管理功能界面
- 浏览文件: 查看已上传的图片、视频和WebM文件
- 预览文件: 支持图片预览和视频播放
- 下载文件: 一键下载已处理的文件
- 删除文件: 删除不需要的文件
- 文件信息: 显示视频文件的大小、时长和分辨率等信息
📁 项目结构
mp42webm/
├── app.py # 主程序文件
├── launcher.py # 启动器脚本(用于打包后的应用)
├── build.py # 打包脚本
├── build.bat # 打包批处理文件
├── requirements.txt # Python依赖包
├── README.md # 项目说明文档
├── ffmpeg7.0.2/ # FFmpeg工具
│ └── bin/
│ └── ffmpeg.exe # FFmpeg可执行文件
├── image/ # 图片文件存储目录
├── video/ # 视频文件存储目录
├── webm/ # 输出WebM文件目录
└── dist/ # 打包后的可执行文件目录(打包后生成)
└── MP4转WebM工具.exe # 打包后的可执行文件
🛠️ 技术实现
核心技术栈
- Streamlit: Web界面框架
- FFmpeg: 视频处理引擎
- Pillow: 图片处理库
- Python: 主要编程语言
转换原理
程序使用FFmpeg的alphamerge
滤镜将灰度图片作为alpha通道合并到视频中:
ffmpeg -i video.mp4 -i alpha.png -filter_complex "[0:v][1:v]alphamerge" -c:v libvpx-vp9 -pix_fmt yuva420p output.webm
关键功能实现
- MD5计算: 使用hashlib计算文件MD5值进行重命名
- 文件管理: 自动创建和管理目录结构,支持文件增删改查
- 视频转换: 集成FFmpeg进行高质量视频转换
- 视频合并: 使用FFmpeg的concat demuxer合并多个视频
- 视频倍速: 根据视频是否包含音频动态构建FFmpeg命令调整速度
- 错误处理: 完善的异常处理和用户反馈
🎯 使用场景
- 视频特效制作: 为视频添加透明效果
- 网页视频: 制作带透明背景的网页视频素材
- 动画制作: 创建透明背景的动画视频
- UI设计: 制作界面动效素材
- 视频编辑: 调整视频播放速度,制作快进或慢动作效果
- 视频合集: 将多个视频片段合并为单个文件
- 素材管理: 统一管理和预览项目中的媒体文件
📝 注意事项
- 图片格式: 建议使用灰度图片作为透明通道,白色区域为不透明,黑色区域为透明
- 视频质量: 转换过程会保持原视频的质量和帧率
- 文件大小: WebM格式通常比MP4文件稍大,但支持透明通道
- 浏览器兼容: WebM格式在现代浏览器中有良好支持
🔧 故障排除
常见问题
Q: 转换失败怎么办? A: 检查视频和图片文件格式是否正确,确保FFmpeg路径配置正确。
Q: 预览不显示怎么办? A: 确保上传的文件格式受支持,刷新页面重试。
Q: 转换速度慢怎么办? A: 转换速度取决于视频大小和计算机性能,大文件需要更长时间。
📄 许可证
本项目采用 MIT 许可证。
🤝 贡献
欢迎提交Issue和Pull Request来改进这个项目!
开发者: Trae AI Assistant
版本: 1.1.0
更新时间: 2025-08-25