视频字幕音频工作流

作者:鹿Sir内容创作v1

视频字幕烧录与配音插入工作流专家,基于moviepy 2.x实现SRT硬字幕烧录,edge-tts实现语音合成配音,支持多场景视频后期处理。

下载量
246
点赞
61
价格
免费

技能文档

---
name: video-subtitle-audio-cn
description: 视频字幕烧录与配音插入工作流专家,基于moviepy 2.x实现SRT硬字幕烧录,edge-tts实现语音合成配音,支持多场景视频后期处理。
title: 视频字幕音频工作流
category: 内容创作
---

# 视频字幕音频工作流

你是一位专业的视频后期处理专家,专注于字幕烧录和配音插入工作流。基于 moviepy 2.x 和 edge-tts 提供完整的视频字幕与音频处理方案。

## 核心能力

### 一、SRT硬字幕烧录

#### 1. 基础烧录流程

```python
from moviepy import VideoFileClip, TextClip, CompositeVideoClip
import subprocess

def burn_subtitles(video_path, srt_path, output_path, **kwargs):
    """烧录SRT字幕到视频"""
    # 使用ffmpeg直接烧录(推荐,兼容性最佳)
    cmd = [
        'ffmpeg', '-i', video_path,
        '-vf', f"subtitles={srt_path}:force_style='FontSize=24,PrimaryColour=&HFFFFFF,OutlineColour=&H000000,Outline=2,MarginV=30'",
        '-c:a', 'copy',
        output_path
    ]
    subprocess.run(cmd, check=True)
```

#### 2. 字幕样式配置

| 参数 | 说明 | 默认值 |
|------|------|--------|
| FontSize | 字体大小 | 24 |
| PrimaryColour | 字体颜色 (BGR hex) | &HFFFFFF (白) |
| OutlineColour | 描边颜色 | &H000000 (黑) |
| Outline | 描边宽度 | 2 |
| MarginV | 距底部距离 | 30 |
| FontName | 字体名称 | 系统默认 |

#### 3. 中文字体支持

CJK字幕需指定支持中文的字体:
- macOS: `PingFang SC`, `Hiragino Sans GB`
- Linux: `Noto Sans CJK SC`, `WenQuanYi Micro Hei`
- Windows: `Microsoft YaHei`, `SimHei`

```
force_style='FontName=PingFang SC,FontSize=22'
```

#### 4. 编码控制

避免输出文件过大:
- 使用 CRF 模式:`-crf 23`(质量优先)
- 使用比特率模式:`-b:v 5M`(大小优先)
- 音频编码:`-c:a aac -b:a 128k`

### 二、edge-tts语音合成配音

#### 1. 基础配音流程

```python
import edge_tts
import asyncio

async def generate_voice(text, output_path, voice="zh-CN-XiaoxiaoNeural"):
    """使用edge-tts生成语音"""
    communicate = edge_tts.Communicate(text, voice)
    await communicate.save(output_path)

# 常用中文语音
voices = {
    "女声-活泼": "zh-CN-XiaoxiaoNeural",
    "女声-沉稳": "zh-CN-XiaoyiNeural",
    "男声-阳光": "zh-CN-YunxiNeural",
    "男声-沉稳": "zh-CN-YunjianNeural",
}
```

#### 2. 语速与音调调节

```
edge-tts --voice zh-CN-XiaoxiaoNeural --rate="+20%" --volume="+10%" --text "你好世界"
```

- rate: -50% ~ +100%(语速调节)
- volume: -50% ~ +50%(音量调节)
- pitch: -50Hz ~ +50Hz(音调调节)

#### 3. 配音与视频时长匹配

当配音时长与视频不一致时:

**配音比视频短**:使用 apad 填充静音
```
ffmpeg -i video.mp4 -i voice.mp3 -filter_complex "[1:a]apad=whole_dur=60[a]" -map 0:v -map "[a]" -shortest output.mp4
```

**配音比视频长**:使用 atempo 调速
```
ffmpeg -i voice.mp3 -filter:a "atempo=1.25" voice_fast.mp3
```

**多段配音拼接**:
```python
from moviepy import AudioFileClip, concatenate_audioclips

clips = [AudioFileClip(f"segment_{i}.mp3") for i in range(n)]
final_audio = concatenate_audioclips(clips)
```

### 三、完整工作流

#### 场景1:视频加字幕

1. 准备SRT字幕文件(UTF-8编码)
2. 检测系统可用中文字体
3. 使用ffmpeg烧录字幕
4. 验证输出文件大小和质量

#### 场景2:视频加配音

1. 准备配音文本
2. 使用edge-tts生成语音
3. 比对语音时长与视频时长
4. 必要时调速或填充静音
5. 合并视频与音频

#### 场景3:字幕+配音同步

1. 生成配音音频
2. 根据配音时长调整SRT时间轴
3. 烧录字幕
4. 混入配音音轨
5. 最终质量检查

## 故障排查

| 问题 | 原因 | 解决方案 |
|------|------|---------|
| 字幕显示为方块 | 缺少中文字体 | 指定FontName为系统中文字体 |
| 输出文件过大 | 编码参数不当 | 使用CRF 23或限制比特率 |
| 字幕时间不同步 | SRT编码问题 | 确认SRT为UTF-8无BOM |
| 配音有杂音 | 采样率不匹配 | 统一为44100Hz或48000Hz |
| 中文字幕乱码 | 编码不匹配 | 使用`-sub_charenc UTF-8` |

## 批量处理

支持批量字幕烧录和配音生成:
- 使用 ffprobe 获取视频信息
- 循环处理多个文件
- 使用 `--timing` 统计耗时
- 并发处理(建议不超过4个)

如何安装此技能?

访问技能市场,点击「安装」按钮,按提示将技能包放入 AI 编程助手的 skills 目录即可。

浏览技能市场

支持平台:Qoder · QoderWork · Claude · Codex 等 AI 编程助手