创建时间: 2025-01-30 目的: 明确 Map 阶段的所有核心参数和逻辑
-
视觉效果:
- Head: 纯背景 + 正片淡入(背景在下,正片在上)
- Body: 纯正片(不涉及背景)
- Tail: 正片淡出,露出背景
-
背景逻辑:
- 背景是连续循环播放的
- Tail 淡出后露出的是"总拼接视频时长背景循环播放时该时间戳的背景画面"
-
输入视频:
- B站视频:已经是裁剪好的片段
- 本地视频:完整的原始视频文件
-
淡出时长:
- Tail 的淡出时长是 0.5 秒
Head 总共 4.3 秒,由两部分组成:
- 纯背景段(转场音频段)
- 正片淡入段
请填写以下参数:
const TRANSITION_AUDIO_DUR = ?; // 纯背景段时长(秒)
const FADE_IN_DUR = ?; // 正片淡入时长(秒)
// 约束:TRANSITION_AUDIO_DUR + FADE_IN_DUR = 4.3 秒示例(如果不确定,请告诉我哪个接近):
- A. 纯背景 3.8s,淡入 0.5s
- B. 纯背景 3.0s,淡入 1.3s
- C. 纯背景 4.0s,淡入 0.3s
- D. 其他(请说明)
纯背景长度=背景音频长度 淡入长度=生成时传出的淡入配置长度
在 Head 的正片淡入阶段,观众看到的是什么?
请选择:
-
[√ ] A. 当前 clip 的开头
例如 clip 是 30-35s 的片段 Head 的淡入阶段显示:clip 的第 0-0.5 秒(从 30s 开始淡入) Head 结构: - 纯背景:0-3.8s - 淡入正片:3.8-4.3s(显示 clip[0-0.5s],即 30-30.5s) - Body 正片:4.3-8.8s(显示 clip[0.5-5s],即 30.5-35s) -
B. 上一段 clip 的结尾
例如上一段 clip 是 20-25s,当前是 30-35s Head 的淡入阶段显示:上一段 clip 的最后 0.5 秒(24.5-25s) Head 结构: - 纯背景:0-3.8s - 淡入上一段结尾:3.8-4.3s(显示 clip[24.5-25s]) - Body 当前正片:4.3-8.8s(显示 clip[30-35s]) -
C. 当前 clip 的开头,但淡入完成后重新播放
Head 结构: - 纯背景:0-3.8s - 淡入正片:3.8-4.3s(显示 clip[0-0.5s],淡入到 100%) - Body 正片:4.3-8.8s(重新从 clip[0] 开始,即 30-35s) ⚠️ 注意:这意味着 clip[0-0.5s] 会被显示两次 -
D. 其他逻辑(请详细说明)
假设有 3 个 clip,每个 5 秒:
Clip 0: 用户标记 30-35s
Clip 1: 用户标记 20-25s
Clip 2: 用户标记 40-45s
Head 总长:4.3s
Body 长度:5s
Tail 长度:0.5s请填写下表(以 Block 0 为例):
| 时间区间 | 视觉效果 | 正片时间点 | 背景时间点 | 说明 |
|---|---|---|---|---|
| 0.0 - X 秒 | 纯背景 | 无 | 0-X | Head 的纯背景段 |
| X - 4.3 秒 | 背景 + 正片淡入 | ?-? | X-4.3 | Head 的淡入段 |
| 4.3 - 8.8 秒 | 纯正片 | ?-? | (无) | Body 段 |
| 8.8 - 9.3 秒 | 正片淡出到背景 | ?-? | 8.8-9.3 | Tail 段 |
请填写:
- X = 转场音频长度 (纯背景段的结束时间) 设传入的配置信息中淡入时长为a,淡出时长为b,clip时长为l
- 淡入段显示的正片时间点:从 0 秒到 a 秒(相对于 clip 开头)
- Body 段显示的正片时间点:从 a 秒到 l-b 秒(相对于 clip 开头)
- Tail 段显示的正片时间点:从 l-b 秒到 l 秒(相对于 clip 开头)
你说:"正片尝试完全填充,如果无法完全填充就继续在下层填充虚化正片"
请选择实现方式:
-
A. Letterbox(黑边)
scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2 // 效果:视频居中,四周黑边
-
[ √] B. 模糊背景
// 效果:视频居中,四周是模糊的视频内容 // 需要两路视频: // 1. 模糊版本(填充整个画面) // 2. 清晰版本(居中叠加)
-
C. 裁剪填充
scale=1920:1080:force_original_aspect_ratio=increase,crop=1920:1080 // 效果:视频填满画面,裁剪多余部分
-
D. 其他(请说明)
问题 5.1:转场音频是什么?
- [√ ] A. 一个独立的音效文件(如 whoosh.wav)
- B. 背景音乐的一部分
- C. 不使用转场音频
- D. 其他(请说明)
问题 5.2:转场音频在哪里播放?
- [√] A. 只在 Head 的纯背景段(0-X 秒)
- B. 整个 Head 期间(0-4.3 秒)
- C. 纯背景段 + 淡入段(0-4.3 秒,但音量和正片音频有混合)
- D. 其他(请说明)
Block 0(第一个 clip):
问题:第一个块需要 Head 吗?
[√] A. 需要,完整的 Head(纯背景 + 淡入)
[ ] B. 不需要,从 Body 开始直接播放
[ ] C. 需要简化的 Head(没有纯背景段,直接淡入)
[ ] D. 其他(请说明)
如果选择 B 或 C,请说明:
- Body 需要淡入吗?(从黑屏/透明淡入?)
- 淡入时长是多少?
Block N(最后一个 clip):
问题:最后一个块需要 Head 吗?
[ ] A. 不需要(因为没有下一个片段)
[ √] B. 需要(保持一致性)
问题:最后一个块的 Tail 淡出到什么?
[ ] A. 黑色背景
[√] B. 继续背景循环(累积时间 + blockDuration)
[ ] C. 其他(请说明)
假设 3 个 clip,每个 5 秒,选择你认为正确的拼接方案:
方案 A:
Block 0: [Head 4.3s][Body 5s][Tail 0.5s] = 9.3s
Block 1: [Head 4.3s][Body 5s][Tail 0.5s] = 9.3s
Block 2: [Body 5s][Tail 0.5s] = 5.5s
拼接后总时长:9.3 + 9.3 + 5.5 = 24.1s
方案 B:
Block 0: [Head 4.3s][Body 5s][Tail 0.5s] = 9.3s
Block 1: [Body 5s][Tail 0.5s] = 5.5s (无 Head)
Block 2: [Body 5s][Tail 0.5s] = 5.5s (无 Head)
拼接后总时长:9.3 + 5.5 + 5.5 = 20.3s
请选择:
- 方案 A(所有中间块都有 Head)
- 方案 B(只有第一个块有 Head)
- [√ ] 方案 C(其他逻辑,请说明)
Block 0: [Head 4.3s][Body 5s][Tail 0.5s] = 9.8s Block 1: [Head 4.3s][Body 5s][Tail 0.5s] = 9.8s Block 2: [Head 4.3s][Body 5s][Tail 0.5s] = 9.8s
拼接后总时长:9.8 + 9.8 + 9.8 = 29.4s
你说背景是"逻辑上总拼接视频时长背景循环播放"
请确认理解:
// 假设:
// - 背景视频长度:120 秒
// - 拼接后总时长:29.4 秒
// - Block 0 Tail 的背景时间点:9.8 秒
// 计算:
Block 0 的 Tail 淡出时,背景显示的是:
背景视频的第 (9.8 % 120) = 9.8 秒的画面
Block 1 的 Head 背景从:
背景视频的第 (9.8 % 120) = 9.8 秒开始
对吗?
对如果背景视频长度 < 总拼接时长,会自动循环吗?
- [√] 是,使用
-stream_loop -1 - 否,背景视频保证足够长
问题 10.1:正片音频
// 正片音频的处理:
[√] A. Body 段使用正片音频,淡入淡出和视频同步
[ ] B. 整个 clip 的音频(包括 Head/Tail 段)
[ ] C. 其他(请说明)问题 10.2:背景视频音频
// 背景视频有音频吗?
[ ] A. 有,在纯背景段播放
[ ] B. 有,始终作为背景音(和正片音频混合)
[C] C. 没有,背景视频是静音的
[ ] D. 其他(请说明)默认背景视频没有音频,如果有也不使用
请填写以下所有参数(这是最终实现所需的全部参数):
// ===== 视频参数 =====
const WIDTH = 1920;
const HEIGHT = 1080;
const FPS = 30;
支持配置30或60帧;
// ===== 时长参数 =====
const HEAD_DUR = 4.3; // Head 总时长
const TRANSITION_AUDIO_DUR = 转场音频长度; // 纯背景段时长
const FADE_IN_DUR = 传入的淡入配置; // 正片淡入时长
const FADE_OUT_DUR = 传入的淡出配置时长; // 正片淡出时长(已确认)
// 约束:TRANSITION_AUDIO_DUR + FADE_IN_DUR = HEAD_DUR
// ===== 缩放策略 =====
const BODY_SCALE_MODE = blur; // 'letterbox' | 'blur' | 'crop' | 'other'
// ===== 第一个块 =====
const FIRST_BLOCK_HAS_HEAD = true; // true | false
const FIRST_BLOCK_FADE_IN = true; // true | false(如果无 Head,Body 需要淡入吗?)
// ===== 最后一个块 =====
const LAST_BLOCK_HAS_HEAD = true; // true | false
const LAST_BLOCK_TAIL_TO = background; // 'black' | 'background' | 'other'
// ===== 音频 =====
const HAS_TRANSITION_AUDIO = true; // true | false
const BACKGROUND_HAS_AUDIO = false; // true | false假设:
- 2 个 clip,每个 5 秒
- Clip 0: 30-35s(舞蹈A)
- Clip 1: 20-25s(舞蹈B)
- TRANSITION_AUDIO_DUR = 3.8s
- FADE_IN_DUR = 0.5s
请确认这是否是你期望的效果:
| 时间 | 画面 | 正片内容 | 背景内容 |
|---|---|---|---|
| 0.0-3.8s | 纯背景 | 无 | 背景[0-3.8s] |
| 3.8-4.3s | 背景+正片淡入 | 舞蹈A[0-0.5s] 淡入 | 背景[3.8-4.3s] |
| 4.3-8.8s | 纯正片 | 舞蹈A[0.5-5s] | (无) |
| 8.8-9.3s | 正片淡出到背景 | 舞蹈A[4.5-5s] 淡出 | 背景[8.8-9.3s] |
| 时间 | 画面 | 正片内容 | 背景内容 |
|---|---|---|---|
| 9.3-13.1s | 纯背景 | 无 | 背景[9.3-13.1s] |
| 13.1-13.6s | 背景+正片淡入 | 舞蹈B[0-0.5s] 淡入 | 背景[13.1-13.6s] |
| 13.6-18.1s | 纯正片 | 舞蹈B[0.5-5s] | (无) |
| 18.1-18.6s | 正片淡出到背景 | 舞蹈B[4.5-5s] 淡出 | 背景[18.1-18.6s] |
这是否正确?
- [√] 是,这就是我想要的效果
- 否,需要修改(请说明哪里不对)
如果你时间有限,至少请回答这 5 个最关键的问题:
- **TRANSITION_AUDIO_DUR = 转场音频时长 **(纯背景段时长)
- FADE_IN_DUR = 配置的淡入时长 秒(正片淡入时长)
- Head 淡入显示的是?(A: 当前clip开头 / B: 上一段结尾 / C: 其他) 答案:A
- BODY_SCALE_MODE = ?(letterbox / blur / crop) 答案 blur
- 第一个块有 Head 吗?(是/否) 答案 是
文档创建时间: 2025-01-30 状态: ⏳ 等待核心参数确认