Skip to content

Latest commit

 

History

History
409 lines (278 loc) · 11 KB

File metadata and controls

409 lines (278 loc) · 11 KB

Map 阶段关键问题清单 v2

创建时间: 2025-01-30 目的: 明确 Map 阶段的所有核心参数和逻辑


基于已回答信息的理解总结

✅ 已明确的信息

  1. 视觉效果

    • Head: 纯背景 + 正片淡入(背景在下,正片在上)
    • Body: 纯正片(不涉及背景)
    • Tail: 正片淡出,露出背景
  2. 背景逻辑

    • 背景是连续循环播放的
    • Tail 淡出后露出的是"总拼接视频时长背景循环播放时该时间戳的背景画面"
  3. 输入视频

    • B站视频:已经是裁剪好的片段
    • 本地视频:完整的原始视频文件
  4. 淡出时长

    • Tail 的淡出时长是 0.5 秒

🎯 核心待回答问题

问题 1:Head 的时间结构(最关键!)

Head 总共 4.3 秒,由两部分组成:

  1. 纯背景段(转场音频段)
  2. 正片淡入段

请填写以下参数

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. 其他(请说明)

纯背景长度=背景音频长度 淡入长度=生成时传出的淡入配置长度


问题 2:正片淡入的内容

在 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:淡入淡出的完整流程

假设有 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 开头)

问题 4:Body 的缩放策略

你说:"正片尝试完全填充,如果无法完全填充就继续在下层填充虚化正片"

请选择实现方式

  • 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:转场音频的定义和播放

问题 5.1:转场音频是什么?

  • [√ ] A. 一个独立的音效文件(如 whoosh.wav)
  • B. 背景音乐的一部分
  • C. 不使用转场音频
  • D. 其他(请说明)

问题 5.2:转场音频在哪里播放?

  • [√] A. 只在 Head 的纯背景段(0-X 秒)
  • B. 整个 Head 期间(0-4.3 秒)
  • C. 纯背景段 + 淡入段(0-4.3 秒,但音量和正片音频有混合)
  • D. 其他(请说明)

问题 6:第一个块的特殊处理

Block 0(第一个 clip)

问题:第一个块需要 Head 吗?

[√] A. 需要,完整的 Head(纯背景 + 淡入)
[ ] B. 不需要,从 Body 开始直接播放
[ ] C. 需要简化的 Head(没有纯背景段,直接淡入)
[ ] D. 其他(请说明)

如果选择 B 或 C,请说明:

  • Body 需要淡入吗?(从黑屏/透明淡入?)
  • 淡入时长是多少?

问题 7:最后一个块的特殊处理

Block N(最后一个 clip)

问题:最后一个块需要 Head 吗?

[ ] A. 不需要(因为没有下一个片段)
[ √] B. 需要(保持一致性)

问题:最后一个块的 Tail 淡出到什么?

[ ] A. 黑色背景
[√] B. 继续背景循环(累积时间 + blockDuration)
[ ] C. 其他(请说明)

问题 8:拼接后的时间轴

假设 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


问题 9:背景视频的循环逻辑

你说背景是"逻辑上总拼接视频时长背景循环播放"

请确认理解

// 假设:
// - 背景视频长度: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:音频处理

问题 10.1:正片音频

// 正片音频的处理:
[] A. Body 段使用正片音频,淡入淡出和视频同步
[ ] B. 整个 clip 的音频(包括 Head/Tail 段)
[ ] C. 其他(请说明)

问题 10.2:背景视频音频

// 背景视频有音频吗?
[ ] A. 有,在纯背景段播放
[ ] B. 有,始终作为背景音(和正片音频混合)
[C] C. 没有,背景视频是静音的
[ ] D. 其他(请说明)

默认背景视频没有音频,如果有也不使用


问题 11:关键参数汇总

请填写以下所有参数(这是最终实现所需的全部参数):

// ===== 视频参数 =====
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

请确认这是否是你期望的效果

Block 0 (0-9.3s)

时间 画面 正片内容 背景内容
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]

Block 1 (9.3-14.8s)

时间 画面 正片内容 背景内容
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 个最关键的问题

  1. **TRANSITION_AUDIO_DUR = 转场音频时长 **(纯背景段时长)
  2. FADE_IN_DUR = 配置的淡入时长 秒(正片淡入时长)
  3. Head 淡入显示的是?(A: 当前clip开头 / B: 上一段结尾 / C: 其他) 答案:A
  4. BODY_SCALE_MODE = ?(letterbox / blur / crop) 答案 blur
  5. 第一个块有 Head 吗?(是/否) 答案 是

文档创建时间: 2025-01-30 状态: ⏳ 等待核心参数确认