视频创作工具:AI 辅助视频批量生成系统
Python 视频批量创作系统,支持 AI 图像分析、动画配置、批量验证,实现视频内容的自动化生产。
AI 视频批量生成系统:从 PPT 到视频的全自动流水线
项目背景
这是一个将 PPT 或文案自动转化为视频的批处理工具。场景来源很实际:内容创作者需要将课程讲义、产品演示、知识科普等内容批量制作成视频发布到短视频平台。手动操作太慢——每做一个视频要配音、加字幕、配背景音乐、做转场——而配置驱动、一键批量生成才是解决方案。
处理流程
PPT/文案输入 → 解析结构 → 生成配音文案 → TTS 语音合成 → 对齐时长 → 加转场 + 背景音乐 → 拼接输出
1. 解析阶段
使用 python-pptx 库解析 PPT 文件:
from pptx import Presentation
def parse_pptx(path):
prs = Presentation(path)
slides = []
for slide in prs.slides:
slide_text = ""
for shape in slide.shapes:
if shape.has_text_frame:
for para in shape.text_frame.paragraphs:
slide_text += para.text + "\n"
slides.append(slide_text.strip())
return slides
踩坑:python-pptx 只支持 .pptx 格式,不支持旧的 .ppt。旧格式需要先用 LibreOffice 转换。
2. 配音生成
每页 PPT 的文案通过 LLM 生成配音脚本(保留关键信息、适配口语化表达),然后调用 TTS 接口合成语音。TTS 使用 Edge TTS(微软免费接口),质量高且延迟低。
不同页面长度 → LLM 生成配音 → 分配 TTS 配额 → 缓存已生成的音频避免重复 API 调用
3. 时长对齐与视频拼接
配音时长决定每页在视频中的停留时间。视频拼接使用 FFmpeg:
# 单张图片 + 配音 → 视频片段
ffmpeg -loop 1 -i slide.png -i audio.mp3 -c:v libx264 -tune stillimage -c:a aac -b:a 192k -pix_fmt yuv420p -t ${duration} output.mp4
注意码率控制:-b:v 设置视频码率,-crf 控制质量。初期未控制码率导致生成文件过大(500MB 的 5 分钟视频),加了 -crf 23 -b:v 2M 后控制在合理范围。
4. 字幕叠加
使用 FFmpeg 的 subtitles 滤镜或者用 Python 逐帧渲染字幕图片叠加。后者更灵活但速度慢。折中方案:先不加字幕生成视频,再用 ASS 字幕文件通过 FFmpeg 合成:
ffmpeg -i video.mp4 -vf "ass=subtitles.ass" output.mp4
配置驱动
整个工具的核心理念是不改代码改配置:
# config.yaml
output:
resolution: "1920x1080"
fps: 30
bitrate: "2M"
audio:
voice: "zh-CN-XiaoxiaoNeural"
rate: "+0%"
transitions:
type: "fade"
duration: 0.5
background_music:
path: "./bgm.mp3"
volume: 0.15
通过 YAML 配置文件控制输出质量、配音声线、转场风格、背景音乐等所有参数,需要调整时只改配置文件即可。
踩坑汇总
| 问题 | 表现 | 解决 |
|---|---|---|
| python-pptx 不支持 .ppt | 运行报错 | 先用 LibreOffice 转换 |
| 视频体积过大 | 5 分钟 500MB | 加 -crf 23 -b:v 2M |
| TTS 配额限制 | 批量调用被限流 | 预处理缓存 + 队列控制 |
| 中文字体缺失 | 字幕方块乱码 | 指定系统已安装的中文字体路径 |
总结
这个工具验证了"配置驱动 + 流水线编排"在视频批量生成场景的有效性。核心工作量不在编程而在打磨各个参数,一旦跑通,生成 10 个视频和生成 100 个视频的成本差异几乎为零。