一站式自动化视频制作:搜索视频 → 读取内容 → 截图采样 → 生成脚本 → AI配音 → 添加字幕 → 合成输出
# 一键生成视频
python skills/video-auto-creator/create_video.py --url "https://www.bilibili.com/video/BV1xx" --output "my_video.mp4"
# 步骤1: 搜索并分析视频
python skills/video-auto-creator/analyze_video.py --url "https://www.bilibili.com/video/BV1xx"
# 步骤2: 截图采样
python skills/video-auto-creator/screenshot_video.py --url "https://www.bilibili.com/video/BV1xx" --count 10
# 步骤3: 生成脚本
python skills/video-auto-creator/generate_script.py --video-info video_info.json --output script.md
# 步骤4: 生成配音
python skills/video-auto-creator/generate_voiceover.py --script script.md --output voiceover.mp3
# 步骤5: 创建字幕
python skills/video-auto-creator/generate_subtitles.py --script script.md --output subtitles.srt
# 步骤6: 合成视频
python skills/video-auto-creator/compose_video.py --images screenshots/ --audio voiceover.mp3 --subtitles subtitles.srt --output final.mp4
功能:
输出示例:
{
"title": "大疆司空2 Copilot智能体",
"description": "一句话执飞急救任务...",
"duration": 149,
"author": "DJI大疆行业应用",
"tags": ["AI", "无人机", "大疆司空2"],
"platform": "bilibili",
"url": "https://www.bilibili.com/video/BV19P9TB3E3r"
}
功能:
参数:
--url: 视频URL--count: 截图数量(默认10)--interval: 截图间隔(秒)--output: 输出目录关键代码:
# 使用OpenClaw浏览器工具
from openclaw.browser import BrowserController
browser = BrowserController()
browser.navigate(video_url)
browser.wait_for_selector('.video-player')
for i, timestamp in enumerate(timestamps):
browser.seek_to(timestamp)
browser.wait(2) # 等待画面稳定
screenshot = browser.screenshot()
save_screenshot(screenshot, f"scene_{i+1}.png")
功能:
脚本结构:
# 视频标题
## 场景 1:开场(0-10秒)
### 画面描述
- 镜头1:全景镜头,展示主题
- 镜头2:特写镜头,突出细节
### AI视频提示词
场景1-1: Drone shot flying over forest, cinematic, 4K --ar 16:9
### 配音文案
> 这是配音内容...
### 字幕
关键词1 | 关键词2 | 关键词3
功能:
可用语音:
zh-CN-XiaoxiaoNeural - 晓晓(女声,温柔)zh-CN-YunxiNeural - 云希(男声,阳光)zh-CN-YunyangNeural - 云扬(男声,专业)zh-CN-XiaoyiNeural - 晓伊(女声,活泼)使用示例:
import edge_tts
text = "欢迎观看本期视频..."
communicate = edge_tts.Communicate(text, "zh-CN-XiaoxiaoNeural")
communicate.save_sync("voiceover.mp3")
功能:
FFmpeg命令模板:
# 图片序列转视频
ffmpeg -loop 1 -i image.png -t 10 -c:v libx264 -pix_fmt yuv420p video.mp4
# 添加配音
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -shortest with_audio.mp4
# 添加字幕
ffmpeg -i with_audio.mp4 -vf "subtitles=subtitles.srt" final.mp4
# 1. 分析视频
python analyze_video.py --url "https://www.bilibili.com/video/BV19P9TB3E3r"
# 输出: video_info.json
# 2. 截图10张
python screenshot_video.py --url "https://www.bilibili.com/video/BV19P9TB3E3r" --count 10
# 输出: screenshots/scene_1.png ~ scene_10.png
# 3. 生成脚本
python generate_script.py --video-info video_info.json --scenes 5
# 输出: video_script.md
# 4. 生成配音
python generate_voiceover.py --script video_script.md --voice zh-CN-XiaoxiaoNeural
# 输出: voiceover.mp3 (60秒)
# 5. 生成字幕
python generate_subtitles.py --script video_script.md --style professional
# 输出: subtitles.srt
# 6. 合成视频
python compose_video.py \
--images screenshots/ \
--audio voiceover.mp3 \
--subtitles subtitles.srt \
--resolution 1920x1080 \
--output "司空2_AI智能体_宣传视频.mp4"
问题: Windows环境下浏览器控制复杂
解决方案: 使用OpenClaw内置的浏览器管理
# 不推荐:手动启动Chrome
# chrome_path = "C:/Program Files/Google/Chrome/Application/chrome.exe"
# 推荐:使用OpenClaw浏览器工具
browser = BrowserController(profile="openclaw")
browser.navigate(url)
经验:
.bilibili-player-video元素加载问题: Windows默认GBK编码,中文输出报错
解决方案:
# 方法1: 设置环境变量
import os
os.environ['PYTHONIOENCODING'] = 'utf-8'
# 方法2: 指定编码写入文件
with open(file, 'w', encoding='utf-8') as f:
f.write(content)
# 方法3: FFmpeg输出重定向
result = subprocess.run(cmd, capture_output=True, encoding='utf-8', errors='ignore')
问题: 字幕路径包含中文和特殊字符导致失败
解决方案:
# 错误:直接使用路径
# vf = f"subtitles={srt_path}"
# 正确:转义路径
srt_escaped = str(srt_path).replace('\\', '\\\\').replace(':', '\\:')
vf = f"subtitles='{srt_escaped}'"
经验:
zh-CN-YunyangNeural(云扬)zh-CN-XiaoxiaoNeural(晓晓)zh-CN-YunxiNeural(云希)zh-CN-XiaoyiNeural(晓伊)性能:
edge-tts包公式:
# 配音时长决定视频时长
audio_duration = get_audio_duration(voiceover_path)
# 每个场景时长 = 总时长 / 场景数
scene_duration = audio_duration / len(scenes)
# 建议每个场景8-15秒,太快观众看不清
最佳实践:
# 创建独立输出目录
output_dir = Path("output") / video_id
output_dir.mkdir(parents=True, exist_ok=True)
# 分类存放
screenshots_dir = output_dir / "screenshots"
audio_dir = output_dir / "audio"
final_dir = output_dir / "final"
# 清理临时文件
for temp_file in temp_files:
if temp_file.exists():
temp_file.unlink()
# FFmpeg (已包含在OpenClaw环境中)
ffmpeg -version
# Python包
pip install edge-tts pillow requests
# 图像增强(可选)
pip install opencv-python
# 更好的音频处理(可选)
pip install pydub
解决方案:
1. 检查OpenClaw浏览器服务状态
2. 使用browser.status查看
3. 确保视频URL可访问
解决方案:
1. 检查网络连接(Edge TTS需要联网)
2. 确认edge-tts已安装: pip show edge-tts
3. 尝试其他语音角色
解决方案:
1. 检查PATH环境变量
2. 使用完整路径: H:\ffmpeg\bin\ffmpeg.exe
3. 或安装: winget install ffmpeg
解决方案:
1. 确保SRT文件UTF-8编码
2. FFmpeg指定字体: FontName=Microsoft YaHei
3. 避免使用特殊字符
# 从CSV读取多个视频URL
import pandas as pd
videos = pd.read_csv('videos.csv')
for url in videos['url']:
create_video(url)
# 使用Jinja2模板生成脚本
from jinja2 import Template
template = Template(open('template.md').read())
script = template.render(scenes=scenes, voiceover=text)
# 自动翻译配音文案
from translate import Translator
translator = Translator(to_lang="en")
english_text = translator.translate(chinese_text)
MIT License
共 1 个版本