Skip to content

灵感视频解构与多模态资产提取架构设计

本文档详细描述了如何将外部短视频(如抖音、快手)链接输入系统,并通过异步方式提取其“视频关键帧”与“原声台词(ASR)”,最终注入大模型生成高质量原创分镜脚本的完整工作流。

1. 业务背景

在创作短视频脚本时,用户经常会提供一个“爆款视频”作为灵感参考。然而,纯文本大模型无法直接“观看”或“聆听”视频链接中的内容。为了实现深度的解构与复刻,我们需要在调用大模型之前,通过后端能力将原视频解构成**视觉(关键帧)听觉(文本台词)**资产。

2. 核心工作流设计

整个过程采用PHP (ThinkPHP) + Python (PyBridge/Celery) 的跨语言异步架构:

2.1 步骤一:触发与初步保存 (PHP)

  1. 前端发送包含分享链接(如抖音分享口令)的请求。
  2. ApiInspiration 控制器调用 VideoExtractService,利用第三方接口解析出无水印的真实视频下载直链 (video_url)。
  3. 将基础信息存入数据库表 account_direction_reference_video,并将状态标记为 process_status = 1(处理中)。
  4. 通过 HTTP 异步向 Python 端(PyBridge)发送处理请求,并附带回调地址(Webhook)。

2.2 步骤二:媒体下载与资产剥离 (Python PyBridge)

由 Celery 任务 process_video_assets_task 执行:

  1. 下载媒体:将无水印视频下载至本地临时目录。
  2. 抽取关键帧:调用 DouyinCoverExtractor 在视频中均匀抽取 3 张关键帧图片。
  3. 提取音频:使用 FFmpeg (extract_mp3_from_mp4) 无损或转码提取出纯净的 .mp3 音频文件。
  4. 云端持久化:将提取的图片和音频上传至阿里云 OSS。
  5. 触发回调:清理本地缓存,并向 PHP 提供的 Webhook 地址发送 HTTP POST 回调,携带 OSS 链接。

2.3 步骤三:语音识别与落库 (PHP Webhook)

  1. WebhookController 接收到 PyBridge 的成功回调。
  2. 提取回调中的 audio_url,同步调用火山引擎开放平台(VolcCaption)的 ASR(自动语音识别)接口。
  3. 将返回的 utterances(句子片段)拼接成完整的原声台词文本。
  4. 将关键帧数据、音频链接、以及 ASR 文本更新至 account_direction_reference_video 表,状态标记为 process_status = 2(已完成)。

2.4 步骤四:大模型提示词注入 (Vue 3 前端)

  1. 用户在“账号方向”选择应用该灵感视频。
  2. 前端 Pinia Store (useStoryboardStore) 拦截该动作,检查是否存在 asr_text
  3. 将原始台词、视频标题、链接组装成强大的“灵感解构指令”:
    text
    参考视频标题:xxx
    参考视频链接:xxx
    参考视频原声台词(ASR转写):
    "..."
    请作为一位资深的短视频爆款导演...
  4. 将组装好的 Prompt 注入到 LLMGeneratePanel,大模型开始基于真实内容进行深度原创。

3. 数据库结构变更

account_direction_reference_video 增加了以下关键字段:

  • audio_url (varchar): 提取的音频 OSS 链接。
  • frames_data (text): 提取的关键帧 OSS 链接 JSON 数组。
  • asr_text (text): 语音识别出的完整台词文本。
  • process_status (tinyint): 异步处理状态(0=未处理, 1=处理中, 2=已完成, 3=失败)。

4. 后续演进计划

  • 多模态视觉注入:目前关键帧已提取并存入数据库,下一步可在调用大模型时,使用类似 Doubao-vision-pro 的多模态模型,将这些关键帧图片直接作为上下文传入,进一步提升对“运镜”和“视觉张力”的复刻能力。
  • 数字人资产结合:在解构脚本时,加入数字人设定,让 AI 直接生成符合指定数字人形象的口播词。