跳到主要内容

自动化脚本使用说明

一、环境准备

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:

  1. FFmpeg官网 下载
  2. 解压到指定目录
  3. 将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_namepriceproduct_imagesubtitlecta_text
iPhone 15 Pro7999/path/to/image.jpg全新设计立即购买
AirPods Pro1899/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输出目录
--workers5并发渲染数量
--sheetNoneExcel工作表名称

数据文件格式

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

联系支持


更新记录

  • 2025-01-08: 初始版本,完成基础脚本和文档