RunVideoAnalysis - 影视传媒视频理解

百炼轻应用-影视传媒视频理解。

接口说明

百炼轻应用-视频理解:基于这接口,可以传入一个视频,进行字幕提取、视频内容分析、视频总结、标题抽取、思维导图生成等任务,也可以通过自定义 prompt 来实现差异化的视频内容生成。

API-SDK 调用说明

可以通过 SDK 调用当前 API,因“调试”-OpenAPI 门户对 SSE 协议支持还不够完善,建议参考调用示例,详见 Saas 控制台轻应用-视频理解-API 页签下。

推荐Java(异步)、Python语言的 SDK,其中 Java(异步)依赖如下:

<dependency>
   <groupId>com.aliyun</groupId>
   <artifactId>alibabacloud-quanmiaolightapp20240801</artifactId>
   <version>取最新版本</version>
 </dependency>

权限说明

前置条件

  • 登录下百炼控制台,确认百炼是可以访问状态
  • 主账号调用:默认有所有 API 调用权限。
  • 子账号调用:子账号默认无权限(AccessForbid)调用当前 API,需要同时在 RAM 控制台百炼控制台中做授权。

RAM 控制台授权说明

RAM 控制台授权,具体 RAM 授权操作,参考 RAM 文档,步骤如下:

1、自定义授权策略:菜单“权限管理-权限策略”下,创建权限策略,脚本编辑方式录入如下任意一个方案中 json。

  • 方案一:授权子账号访问 quanmiaolightapp 下所有接口权限,包括视频理解 --建议
{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "quanmiaolightapp:*",
            "Resource": "*"
        }
    ]
}
  • 方案二:授权子子账号指定接口,比如视频理解“RunVideoAnalysis”
{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "quanmiaolightapp:RunVideoAnalysis",
            "Resource": "*"
        }
    ]
}

2、给子账号授权:菜单“身份管理-用户”下,找到对应用户,新增授权,切换自定义授权,添加上面自定义的授权策略。

百炼控制台授权说明

使用主账号或有百炼管理员权限的子账号,登录百炼控制台,在权限管理-用户管理页面添加子账号,并进行授权管理员权限。

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

授权信息

下表是API对应的授权信息,可以在RAM权限策略语句的Action元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下:

  • 操作:是指具体的权限点。
  • 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。
  • 资源类型:是指操作中支持授权的资源类型。具体说明如下:
    • 对于必选的资源类型,用背景高亮的方式表示。
    • 对于不支持资源级授权的操作,用全部资源表示。
  • 条件关键字:是指云产品自身定义的条件关键字。
  • 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。
操作访问级别资源类型条件关键字关联操作
quanmiaolightapp:RunVideoAnalysisnone
  • 全部资源
    *

请求语法

POST /{workspaceId}/quanmiao/lightapp/runVideoAnalysis HTTP/1.1

请求参数

名称类型必填描述示例值
workspaceIdstring

百炼业务空间唯一标识:获取 workspaceId

llm-xxx
videoUrlstring

视频链接

http://xxxx.mp4
videoModelIdstring

视频 vl 任务模型唯一标识,支持的模型:

  • qwen-vl-max
  • qwen-vl-plus
qwen-vl-max
videoModelCustomPromptTemplatestring

视频 vl 任务 prompt 模版:必须包含{videoAsrText}变量,{videoAsrText}是视频的 ASR 文本信息,不传默认取页面看到的默认值。

# 角色 你是一名视频分析师,擅长对各种视频片段进行理解。 # 任务描述 给你一个视频片段的多张关键帧图片,请你完成以下任务。 - 输出每张图片的画面信息,包括人物、物体、动作、文字、字幕、镜头语言等。 - 把每张图片的信息串联起来,生成视频的详细概述,还原该片段的剧情。 # 限制 - 分析范围严格限定于提供的视频子片段,不涉及视频之外的任何推测或背景信息。 - 总结时需严格依据视频内容,不可添加个人臆测或创意性内容。 - 保持对所有视频元素(尤其是文字和字幕)的高保真还原,避免信息遗漏或误解。 # 输入数据 ## 视频片段ASR信息 (如果输入为空则忽略ASR信息) {videoAsrText} # 输出格式 直接按照任务目标里即可,先输出每张图片的描述,再串联起来输出整个视频片段的剧情。
modelIdstring

视频总结依赖的大模型唯一标识,支持的模型

  • qwen-max
  • qwen-max-longcontext
  • qwen-plus
qwen-max
modelCustomPromptTemplateIdstring

视频总结依赖的大模型 prompt 模版唯一标识:

  • PlotDetail:剧情详解(默认);
  • Summary:内容概述;
  • ExtractVideoTag:提取标签;
  • ExplosivePointAnalysis:爆点分析;
  • MultiTask:多类任务;

如果 modelCustomPromptTemplate 未传,则会取模版唯一标识对应的默认 prompt,modelCustomPromptTemplate 优先级高于 modelCustomPromptTemplateId。

PlotDetail
modelCustomPromptTemplatestring

视频总结依赖的大模型 prompt 模版:必须同时包含{videoAsrText} 和 {videoAnalysisText}变量,{videoAsrText}是视频的 ASR 文本信息,{videoAnalysisText}是视频的各个子镜头的 VL 视觉信息,不传默认取页面看到的默认值。

# 角色 你是一个专业的视频标注专员,擅长结合视频镜头信息来分析处理各种视频任务。 # 任务目标 请你结合输入数据串联、还原出整个视频的详细剧情。 # 限制 1.如出现语法上错误,或逻辑不通,请直接修改 2.在视频分镜中,如果包含台词,可能会出现说话者与其所说内容不匹配的情况。因此,必须根据剧情的进展,准确判断每段台词的真实说话者 3.如果视频分镜中无台词,请根据视频音频文字为其匹配台词 4.修改后的故事请适当保留视频分镜中对人物、场景的描写 5.帮忙润色一下故事,使其更具逻辑性 6.结合视频分镜中的人物外观特点,如果有外观相近的人物是同一个角色。因此,需要将不同分镜中的人物角色统一。 # 输入数据 ## 资料一:视频分镜信息 (视频各镜头的视觉描述信息) {videoAnalysisText} ## 资料二:视频ASR转录信息 (未标注出说话者,可能有错误和遗漏,如果没有输入ASR,则忽略此信息) {videoAsrText} # 输出格式 直接输出视频剧情,不要输出其他信息。
generateOptionsarray

视频理解生成任务选项。

string

视频理解生成任务选项:

  • videoAnalysis:视频语言分析;
  • videoGenerate:视频总结(默认),包含 videoAnalysis;
  • videoTitleGenerate:视频标题生成,包含 videoAnalysis、videoGenerate;
  • videoMindMappingGenerate:视频思维导图生成,包含 videoAnalysis、videoGenerate;

包含的任务,会自动前置运行。

videoGenerate
taskIdstring

生成任务唯一标识:不传会默认生成

a3d1c2ac-f086-4a21-9069-f5631542f5a2
originalSessionIdstring

源任务唯一标识:如果要基于历史任务重跑某个子任务(generateOptions 字段指定的),可以传入历史任务 taskId+originalSessionId,后台会加载历史任务已生成数据,跳过前置步骤,提升生成效率,如果后台数据过久,比如超过 7 天,查询失败,会默认重跑前置依赖子任务。

a3d1c2ac-f086-4a21-9069-f5631542f5ax
videoExtraInfostring

自定义扩展文本素材:应用到生成中,需要手动调整 prompt 模版,增加{videoExtraInfo}变量

视频描述了:xx
snapshotIntervaldouble

抽帧间隔:X 秒一帧,取值范围[1, 10],间隔越大模型能提取到的信息越少,耗时越短,成本越低,分析结果的细腻度越底,默认已是最佳实践,一般无需修改,如果要修改,请根据视频时长来定,建议[1~3]。

2

返回参数

名称类型描述示例值
object

响应数据

headerobject

流式输出 header 头,包含返回通用信息

errorCodestring

异常错误码

InvalidParam
errorMessagestring

异常错误信息

Pop sign mismatch, please check log.
eventstring

事件类型

task-progress-start-generating
eventInfostring

事件描述

可空
sessionIdstring

一次生成唯一标识

xxx
taskIdstring

生成唯一标识

xxx
traceIdstring

链路 traceid

2150432017236011824686132ecdbc
payloadobject

生成结果数据

outputobject

输出内容对象

videoAnalysisResultobject

视频语言 vl 生成结果

generateFinishedboolean

当前任务是否已生成结束

true
textstring

生成内容

根据xxx
usageobject

Token 数量

inputTokenslong

输入 Token 数量

1
outputTokenslong

输出 Token 数量

1
totalTokenslong

总 Token 数量

2
videoShotAnalysisResultsarray<object>

视频分镜结果,暂不返回

videoShotAnalysisResultsobject

视频分镜结果,暂不返回

endTimelong

结束时间,单位毫秒

10000
startTimelong

开始时间,单位毫秒

1000
textstring

分镜对应生成内容

根据xxx
videoCaptionResultobject

视频字幕结果

generateFinishedboolean

当前任务是否已生成结束

true
videoCaptionsarray<object>

视频字幕列表

videoCaptionsobject

视频字幕

endTimelong

策略失效时间。

1710432000000
endTimeFormatstring

结束时间,格式化结果:00:01

00:01
startTimelong

开始时间,单位毫秒

0
startTimeFormatstring

开始时间,格式化结果:00:01

00:01
textstring

字幕内容

xxx
videoGenerateResultobject

视频总结结果

generateFinishedboolean

当前任务是否已生成结束

true
textstring

视频总结内容

根据xxx
usageobject

Token 数量

inputTokenslong

输入 Token 数量

1
outputTokenslong

输出 Token 数量

1
totalTokenslong

总 Token 数量

2
videoMindMappingGenerateResultobject

视频思维导图结果

generateFinishedboolean

当前任务是否已生成结束

true
textstring

生成原始内容

根据xxx
usageobject

Token 数量

inputTokenslong

输入 Token 数量

1
outputTokenslong

输出 Token 数量

1
totalTokenslong

总 Token 数量

2
videoMindMappingsarray<object>

思维导图

videoMindMappingsobject

思维导图

childNodesarray<object>

子节点

childNodesobject

子节点

childNodesarray<object>

子节点

childNodesobject

子节点

namestring

节点描述

三级
namestring

节点描述

二级
namestring

节点描述

一级
videoTitleGenerateResultobject

视频标题结果

generateFinishedboolean

当前任务是否已生成结束

true
textstring

生成内容

标题
usageobject

Token 数量

inputTokenslong

输入 Token 数量

1
outputTokenslong

输出 Token 数量

1
totalTokenslong

总 Token 数量

2
usageobject

Token 数量

inputTokenslong

输入 Token 数量

1
outputTokenslong

输出 Token 数量

1
totalTokenslong

总 Token 数量

2
requestIdstring

请求唯一标识

117F5ABE-CF02-5502-9A3F-E56BC9081A64

示例

正常返回示例

JSON格式

{
  "header": {
    "errorCode": "InvalidParam",
    "errorMessage": "Pop sign mismatch, please check log.",
    "event": "task-progress-start-generating",
    "eventInfo": "可空",
    "sessionId": "xxx",
    "taskId": "xxx",
    "traceId": "2150432017236011824686132ecdbc"
  },
  "payload": {
    "output": {
      "videoAnalysisResult": {
        "generateFinished": true,
        "text": "根据xxx",
        "usage": {
          "inputTokens": 1,
          "outputTokens": 1,
          "totalTokens": 2
        },
        "videoShotAnalysisResults": [
          {
            "endTime": 10000,
            "startTime": 1000,
            "text": "根据xxx"
          }
        ]
      },
      "videoCaptionResult": {
        "generateFinished": true,
        "videoCaptions": [
          {
            "endTime": 1710432000000,
            "endTimeFormat": "00:01",
            "startTime": 0,
            "startTimeFormat": "00:01",
            "text": "xxx"
          }
        ]
      },
      "videoGenerateResult": {
        "generateFinished": true,
        "text": "根据xxx",
        "usage": {
          "inputTokens": 1,
          "outputTokens": 1,
          "totalTokens": 2
        }
      },
      "videoMindMappingGenerateResult": {
        "generateFinished": true,
        "text": "根据xxx",
        "usage": {
          "inputTokens": 1,
          "outputTokens": 1,
          "totalTokens": 2
        },
        "videoMindMappings": [
          {
            "childNodes": [
              {
                "childNodes": [
                  {
                    "name": "三级"
                  }
                ],
                "name": "二级"
              }
            ],
            "name": "一级"
          }
        ]
      },
      "videoTitleGenerateResult": {
        "generateFinished": true,
        "text": "标题",
        "usage": {
          "inputTokens": 1,
          "outputTokens": 1,
          "totalTokens": 2
        }
      }
    },
    "usage": {
      "inputTokens": 1,
      "outputTokens": 1,
      "totalTokens": 2
    }
  },
  "requestId": "117F5ABE-CF02-5502-9A3F-E56BC9081A64"
}

错误码

访问错误中心查看更多错误码。