自动化脚本使用说明
一、环境准备
1. 系统要求
- 操作系统: Windows 10+, macOS 10.14+, Ubuntu 18.04+
- Python: 3.8+
- FFmpeg: 4.4+
- 内存: 建议8GB+
- 硬盘: 建议100GB+可用空间
2. 安装依赖
安装FFmpeg
macOS:
brew install ffmpeg
Ubuntu:
sudo apt-get update
sudo apt-get install ffmpeg
Windows:
- 从 FFmpeg官网 下载
- 解压到指定目录
- 将FFmpeg的bin目录添加到系统PATH
安装Python依赖
# 创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # macOS/Linux
# 或
venv\Scripts\activate # Windows
# 安装依赖包
pip install pandas openpyxl ffmpeg-python moviepy pillow
requirements.txt:
pandas\>=2.0.0
openpyxl\>=3.1.0
ffmpeg-python\>=0.2.0
moviepy\>=1.0.3
Pillow\>=10.0.0
requests\>=2.31.0
安装:
pip install -r requirements.txt
二、快速开始
1. 准备数据文件
创建Excel文件(例如 products.xlsx):
| product_name | price | product_image | subtitle | cta_text |
|---|---|---|---|---|
| iPhone 15 Pro | 7999 | /path/to/image.jpg | 全新设计 | 立即购买 |
| AirPods Pro | 1899 | /path/to/image2.jpg | 降噪体验 | 抢先购买 |
或使用CSV文件(products.csv):
product_name,price,product_image,subtitle,cta_text
iPhone 15 Pro,7999,/path/to/image.jpg,全新设计,立即购买
AirPods Pro,1899,/path/to/image2.jpg,降噪体验,抢先购买
2. 运行脚本
基础用法:
python batch_video_generator.py \
--template template.json \
--data products.xlsx \
--output ./output
完整参数:
python batch_video_generator.py \
--template template.json \ # 模板文件路径
--data products.xlsx \ # 数据文件路径
--output ./videos \ # 输出目录
--workers 10 \ # 并发数
--sheet Sheet1 # Excel工作表名称(可选)
3. 查看结果
生成的文件结构:
output/
├── video_0001.mp4
├── video_0002.mp4
├── video_0003.mp4
├── ...
├── generation_report.json
└── video_generation.log
generation_report.json 示例:
{
"total": 10,
"success": 9,
"failed": 1,
"failed_items": [
{
"index": 5,
"data": {...},
"error": "Invalid image URL"
}
]
}
三、脚本参数详解
命令行参数
| 参数 | 必填 | 默认值 | 说明 |
|---|---|---|---|
--template | 是 | - | 模板JSON文件路径 |
--data | 是 | - | 数据文件路径(Excel/CSV/JSON) |
--output | 否 | ./output | 输出目录 |
--workers | 否 | 5 | 并发渲染数量 |
--sheet | 否 | None | Excel工作表名称 |
数据文件格式
Excel (.xlsx, .xls)
- 第一行为列名(对应模板变量名)
- 从第二行开始为数据
- 支持多个工作表
CSV (.csv)
- 第一行为列名
- UTF-8编码
- 逗号分隔
JSON (.json)
[
{
"product_name": "iPhone 15",
"price": 7999,
"product_image": "/path/to/image.jpg"
},
{
"product_name": "AirPods",
"price": 1899,
"product_image": "/path/to/image2.jpg"
}
]
四、高级用法
1. 自定义模板
创建自己的模板JSON文件,参考模板设计规范。
2. 并发优化
调整并发数:
# CPU密集型任务
python batch_video_generator.py \
--workers 4 # 设置为CPU核心数
# IO密集型任务(下载图片等)
python batch_video_generator.py \
--workers 20 # 可以设置更高
根据系统资源动态调整:
import os
# 获取CPU核心数
cpu_count = os.cpu_count()
workers = cpu_count * 2 # 通常设置为2倍核心数
3. 批量处理策略
分批处理:
# 将1000条数据分成10批,每批100条
python split_data.py --input large_data.xlsx --batch-size 100
# 逐批生成
for i in {1..10}; do
python batch_video_generator.py \
--template template.json \
--data batch_${i}.xlsx \
--output ./output/batch_${i}
done
4. 错误重试
创建 retry.py 脚本:
import json
# 读取失败报告
with open('output/generation_report.json', 'r') as f:
report = json.load(f)
# 提取失败项
failed_data = [item['data'] for item in report['failed_items']]
# 保存为新的数据文件
import pandas as pd
df = pd.DataFrame(failed_data)
df.to_excel('retry_data.xlsx', index=False)
print(f"已保存 {len(failed_data)} 条失败数据到 retry_data.xlsx")
运行:
python retry.py
# 重新生成失败的视频
python batch_video_generator.py \
--template template.json \
--data retry_data.xlsx \
--output ./output_retry
五、常见问题
1. FFmpeg未找到
错误信息:
FileNotFoundError: [Errno 2] No such file or directory: 'ffmpeg'
解决方法:
- 确认FFmpeg已正确安装
- 将FFmpeg添加到系统PATH
- 或在代码中指定FFmpeg路径:
os.environ["FFMPEG_BINARY"] = "/usr/local/bin/ffmpeg"
2. 内存不足
错误信息:
MemoryError: Unable to allocate array
解决方法:
- 减少并发数:
--workers 2 - 分批处理数据
- 增加系统内存
- 优化视频分辨率
3. 图片加载失败
错误信息:
PIL.UnidentifiedImageError: cannot identify image file
解决方法:
- 检查图片URL是否有效
- 确认图片格式支持(JPG、PNG、WEBP)
- 检查网络连接
- 本地图片路径是否正确
4. 渲染速度慢
优化方法:
- 使用GPU加速(如果支持)
- 降低视频分辨率
- 减少特效复杂度
- 使用更快的编码器
- 增加并发数
5. 字符编码问题
错误信息:
UnicodeDecodeError: 'utf-8' codec can't decode byte
解决方法:
# 读取CSV时指定编码
df = pd.read_csv('data.csv', encoding='utf-8-sig') # 或 'gbk'
# 读取Excel时
df = pd.read_excel('data.xlsx', engine='openpyxl')
六、性能优化建议
1. 硬件优化
- CPU: 多核处理器,提高并发能力
- 内存: 16GB+,支持同时处理多个视频
- 硬盘: SSD,提升读写速度
- GPU: 支持硬件加速,提升渲染速度
2. 软件优化
使用GPU加速:
# 安装GPU版本的库
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# 启用FFmpeg GPU加速
ffmpeg -hwaccel cuda -i input.mp4 output.mp4
缓存优化:
# 缓存已下载的素材
import functools
@functools.lru_cache(maxsize=100)
def download_image(url):
# 下载逻辑
pass
批量优化:
# 合并多个小任务
def batch_process(items, batch_size=100):
for i in range(0, len(items), batch_size):
batch = items[i:i+batch_size]
# 处理批次
yield batch
七、最佳实践
1. 数据准备
✅ 推荐做法:
- 使用高质量图片(最小800x800)
- 图片使用CDN加速
- 提前验证数据完整性
- 文本长度控制在规定范围
❌ 避免做法:
- 图片分辨率过低
- 使用未经压缩的大图
- 数据包含非法字符
- 缺少必填字段
2. 渲染设置
✅ 推荐做法:
- 根据平台选择合适分辨率
- 使用H.264编码(兼容性好)
- 比特率设置为5-8Mbps
- 帧率设置为30fps
❌ 避免做法:
- 过高的分辨率(4K+)
- 使用未压缩格式
- 过高的比特率(浪费空间)
3. 批量处理
✅ 推荐做法:
- 分批处理大量数据
- 使用进度监控
- 保存中间结果
- 实现错误重试机制
❌ 避免做法:
- 一次性处理过多数据
- 忽略错误处理
- 没有日志记录
八、示例:完整工作流
1. 准备工作
# 创建项目目录
mkdir video_project
cd video_project
# 创建虚拟环境
python -m venv venv
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt
# 目录结构
video_project/
├── templates/
│ └── product_showcase.json
├── data/
│ └── products.xlsx
├── scripts/
│ └── batch_video_generator.py
└── output/
2. 执行生成
# 运行脚本
python scripts/batch_video_generator.py \
--template templates/product_showcase.json \
--data data/products.xlsx \
--output output \
--workers 8
# 查看日志
tail -f video_generation.log
# 查看进度
watch -n 1 'ls output/*.mp4 | wc -l'
3. 后处理
# 压缩视频(可选)
for file in output/*.mp4; do
ffmpeg -i "$file" -c:v libx264 -crf 28 "${file%.mp4}_compressed.mp4"
done
# 批量上传到OSS(可选)
python upload_to_oss.py --dir output
九、获取帮助
查看帮助信息
python batch_video_generator.py --help
查看日志
cat video_generation.log
联系支持
- 文档: [完整文档链接]
- GitHub: [项目地址]
- 邮箱: support@videomatic.com
更新记录
- 2025-01-08: 初始版本,完成基础脚本和文档