灵感视频解构与多模态资产提取架构设计
本文档详细描述了如何将外部短视频(如抖音、快手)链接输入系统,并通过异步方式提取其“视频关键帧”与“原声台词(ASR)”,最终注入大模型生成高质量原创分镜脚本的完整工作流。
1. 业务背景
在创作短视频脚本时,用户经常会提供一个“爆款视频”作为灵感参考。然而,纯文本大模型无法直接“观看”或“聆听”视频链接中的内容。为了实现深度的解构与复刻,我们需要在调用大模型之前,通过后端能力将原视频解构成**视觉(关键帧)和听觉(文本台词)**资产。
2. 核心工作流设计
整个过程采用PHP (ThinkPHP) + Python (PyBridge/Celery) 的跨语言异步架构:
2.1 步骤一:触发与初步保存 (PHP)
- 前端发送包含分享链接(如抖音分享口令)的请求。
ApiInspiration控制器调用VideoExtractService,利用第三方接口解析出无水印的真实视频下载直链 (video_url)。- 将基础信息存入数据库表
account_direction_reference_video,并将状态标记为process_status = 1(处理中)。 - 通过 HTTP 异步向 Python 端(PyBridge)发送处理请求,并附带回调地址(Webhook)。
2.2 步骤二:媒体下载与资产剥离 (Python PyBridge)
由 Celery 任务 process_video_assets_task 执行:
- 下载媒体:将无水印视频下载至本地临时目录。
- 抽取关键帧:调用
DouyinCoverExtractor在视频中均匀抽取 3 张关键帧图片。 - 提取音频:使用
FFmpeg(extract_mp3_from_mp4) 无损或转码提取出纯净的.mp3音频文件。 - 云端持久化:将提取的图片和音频上传至阿里云 OSS。
- 触发回调:清理本地缓存,并向 PHP 提供的 Webhook 地址发送 HTTP POST 回调,携带 OSS 链接。
2.3 步骤三:语音识别与落库 (PHP Webhook)
WebhookController接收到 PyBridge 的成功回调。- 提取回调中的
audio_url,同步调用火山引擎开放平台(VolcCaption)的 ASR(自动语音识别)接口。 - 将返回的
utterances(句子片段)拼接成完整的原声台词文本。 - 将关键帧数据、音频链接、以及 ASR 文本更新至
account_direction_reference_video表,状态标记为process_status = 2(已完成)。
2.4 步骤四:大模型提示词注入 (Vue 3 前端)
- 用户在“账号方向”选择应用该灵感视频。
- 前端 Pinia Store (
useStoryboardStore) 拦截该动作,检查是否存在asr_text。 - 将原始台词、视频标题、链接组装成强大的“灵感解构指令”:text
参考视频标题:xxx 参考视频链接:xxx 参考视频原声台词(ASR转写): "..." 请作为一位资深的短视频爆款导演... - 将组装好的 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 直接生成符合指定数字人形象的口播词。