视频摘要接口
更新时间:2024-12-27
提交视频摘要分析
视频摘要接口暂未对全量用户开放,如需开通,请与我们联系。
接口描述 用户提供视频路径,创建一次视频摘要分析。
- 视频路径支持BOS、HTTP(S) URL路径;
- 正在分析中的视频无法再次进行分析;判断相同视频的依据是视频路径source,和视频内容无关;
- 已经分析过的视频(FINISHED/ERROR)可以重新进行分析;
- 视频重新分析会覆盖上次分析结果;
- 视频摘要分析任务为异步处理模式,如果想要获取分析结果:可以设置回调参数notification,则分析完成之后会将分析结果自动回调通知notification关联的地址;也可以通过接口查询视频摘要分析结果来实时获取。
请求语法
PUT /v1/videoAbstract HTTP/1.1
host: vca.bj.baidubce.com
authorization: <bce-authorization-string>
content-type: application/json
{
"source":"xxx",
"videoType": "tv_show",
"enablePersonName": true,
"enableAbstractLayers": [0,1]
}
请求体
参数名称 | 类型 | 是否必选 | 描述 |
---|---|---|---|
source | String | 是 | 视频路径,不超过1024字符(分辨率需大于等于30*30且时长在6小时内) |
auth | String | 否 | 视频路径鉴权参数,仅URL视频使用 |
notification | String | 否 | 通知名称,使用方式见通知接口 |
priority | Integer | 否 | 优先级,默认为0,范围[0, 100],越大优先级越高;默认排队中的视频摘要分析会按照创建时间顺序进行处理,如果有热点视频需要高优得到处理,则可以为其设置较大的优先级参数。 |
videoType | String | 否,默认general | news(新闻)、tv_play(影视剧)、tv_show(综艺)、general(其他) |
enablePersonName | Boolean | 否,默认False | 是否将视频里的人称代词他、她、男人、女人等替换成角色名或人物真实名称。仅当视频类型选择“影视剧”或“综艺”时生效。 |
enableAbstractLayers | List |
否,默认(0,1,2) | 0:节目层摘要;1:片段层摘要;2 场景层摘要;3:镜头层摘要 |
摘要层级说明
- 节目层摘要:代表对整个视频文件的摘要
- 片段层摘要:根据不同段落的主题,一个视频文件会被切分成若干片段,每个片段会有一条对应的摘要。
- 场景层摘要:根据环境、空间等变化,一个片段会被切分成若干场景,每个场景会有一条对应的摘要。
- 镜头层摘要:一个场景由若干镜头组成,每个镜头会有一条对应的摘要。
source说明
- 对于 BOS 视频,
source="bos://<bos-bucket>/<bos-object>"
, 例如"bos://testbucket/dir/video.mp4",由客户保证 BOS 路径可访问。- 对于HTTP/HTTPS视频,
source="<http(s)-url>"
, 例如"http://domain/dir/video.mp4
",url中可以包含参数,例如"http://domain/dir/video?id=abc
"。另外,为了优化客户使用体验,MCA 支持将HTTP/HTTPS视频URL中的临时参数(主要是鉴权参数)通过auth="<key1>=<value1>&<key2>=<value2>"
和其它参数进行区分,auth中可以包含多个参数,用&
进行分割,例如"token=abcxyz×tamp=1514993900", MCA内部会使用?
或&
将source和auth拼接,得到完整的原视频URL并拉取进行分析。客户需保证实际拉取的URL可访问。客户仅需通过source
即可查询视频摘要分析结果,同时分析回调中也仅返回source
。
响应体
参数 | 类型 | 描述 |
---|---|---|
source | String | 视频路径 |
status | String | 分析状态 |
videoType | String | 视频类型 |
percent | Number | 分析进度,0 ~ 100整数 |
notification | String | 通知名称 |
createTime | Date | 创建时间 |
响应示例
示例一:分析 BOS 类型视频响应
HTTP/1.1 200 OK
{
"source": "bos://samplebucket/sample.mp4",
"status": "PROVISIONING",
"videoType": "news",
"percent": 0,
"createTime": "2018-10-09T08:05:58Z"
}
示例二:分析 URL 视频响应
HTTP/1.1 200 OK
{
"source": "https://vca-customer.baidu.com/media.mp4",
"status": "PROVISIONING",
"videoType": "news",
"percent": 0,
"notification": "customer_notification_name",
"createTime": "2018-10-09T08:05:58Z"
}
示例三:分析包含鉴权参数的 URL 视频响应
HTTP/1.1 200 OK
{
"source": "https://vca-customer.baidu.com/media.mp4",
"status": "PROVISIONING",
"videoType": "news",
"percent": 0,
"notification": "customer_notification_name",
"createTime": "2018-10-09T08:05:58Z"
}
查询视频摘要分析结果
根据视频路径查询分析结果。如果有重复分析,则返回最近一次分析的结果。(分析结果最长暂存30天,超过30天后会自动删除,无法查询)
请求语法
GET /v1/videoAbstract HTTP/1.1
host: vca.bj.baidubce.com
authorization: <bce-authorization-string>
content-type: application/json
请求参数
参数 | 类型 | 描述 | 是否必须 |
---|---|---|---|
source | String | 视频路径,需要对source进行urlEncode。 | 是 |
请求体
无
请求示例
示例一:查询 BOS 视频摘要分析结果
GET /v1/videoAbstract?source=bos%3a%2f%2ftestbucket%2fdir%2fvideo.mp4 HTTP/1.1
host: vca.bj.baidubce.com
content-type: application/json
authorization: <bce-authorization-string>
示例二:查询 URL 视频摘要分析结果
GET /v1/videoAbstract?source=http%3a%2f%2ftest.domain.com%2fdir%2fvideo.mp4 HTTP/1.1
host: vca.bj.baidubce.com
content-type: application/json
authorization: <bce-authorization-string>
说明:
注意:如前所述,对于 URL 视频,如果在提交分析时指定了
auth
参数,在查询分析结果时是不需要指定的。
响应头域
无
响应参数
参数 | 类型 | 描述 |
---|---|---|
source | String | 视频路径 |
durationInSecond | Number | 视频时长,仅当status!=PROVISIONING时存在 |
status | String | 视频摘要分析状态 |
percent | Number | 分析进度,0 ~ 100整数 |
notification | String | 通知名称 |
createTime | Date | 分析创建时间 |
startTime | Date | 分析开始时间,仅当status!=RPOVISIONING/CANCELLED时存在 |
publishTime | Date | 分析结束时间,仅当status=FINISHED/ERROR/CANCELLED时存在 |
clipResults | Array | 摘要分析结果列表 |
+ contentId | String | 片段ID |
+ level | Integer | 片段层级,对应请求中的enableAbstractLayers |
+ startTimeInMS | Integer | 片段开始时间(ms) |
+ endTimeInMS | Integer | 片段结束时间(ms) |
+ clipAbstract | String | 摘要内容 |
error | Object | 分析失败信息,仅当status=ERROR时存在 |
+ code | String | 错误码 |
+ message | String | 错误信息 |
视频摘要分析状态枚举如下:
分析状态 | 状态名称 | 描述 |
---|---|---|
PROVISIONING | 预处理 | 分析排队中 |
PROCESSING | 分析中 | 分析进行中 |
FINISHED | 分析结束 | 分析结束,可以查询分析结果 |
ERROR | 分析失败 | 分析失败,可以查询失败错误原因 |
CANCELLED | 分析取消 | 分析取消,视频排队时可以取消分析 |
错误码枚举如下:
错误码 | 错误信息 | 备注 |
---|---|---|
InvalidMedia | media duration/resolution exceeds limit | 视频时长/分辨率不满足MCA系统限制,请检查原视频 |
InvalidMedia | invalid audio or video | 视频元信息中音频或视频信息不合预期,请检查原视频 |
InvalidMedia | get media info failure | 无法获取视频元信息,请检查原视频 |
InternalError | service internal error, please retry | 系统内部错误,建议重试 |
TimeOut | analyze time out, please retry | 视频摘要分析超时,请先检查原视频,如视频正常则可以重试 |
其中当错误码为TimeOut时,根据视频时长不同,超时上限也不同:
视频时长 | 超时上限 |
---|---|
<3min | 15分钟 |
<10min | 30分钟 |
<30min | 1小时 |
其它 | 2小时 + 原始视频时长的一半 |
响应示例
示例一:视频摘要分析成功
HTTP/1.1 200 OK
{
"taskId": "qmjfg1w6yickyn8n1se",
"source": "https://xxx.mp4",
"description": "",
"status": "FINISHED",
"percent": 100,
"clipResults": [
{
"contentId": "qmjfgafxtz6caj6ki4y_0_0",
"level": 0,
"startTimeInMS": 0,
"endTimeInMS": 410800,
"clipAbstract": "该视频是关于和平共处五项原则发表70周年纪念大会的报道。"
},
{
"contentId": "qmjfgafxtz6caj6ki4y_1_0",
"level": 1,
"startTimeInMS": 0,
"endTimeInMS": 55400,
"clipAbstract": "该视频内容为一场纪念大会,主题为“和平共处五项原则发表70周年”。视频画面中,参会人员身着正装,坐在会议厅内,背景屏幕上显示着大会主题和相关内容。视频中还出现了“从和平共处五项原则到构建人类命运共同体,亚洲智慧的时代价值”的字样,表明了此次大会的议题和目的。"
}
],
"createTime": "2024-12-20T02:55:18Z",
"startTime": "2024-12-20T02:55:34Z",
"videoType": "general",
"durationInSecond": 411,
"publishTime": "2024-12-20T02:58:02Z"
}
取消视频摘要分析
只有状态处于预处理的视频可以进行取消。
请求语法
PUT /v1/videoAbstract?cancel&source={source} HTTP/1.1
host: vca.bj.baidubce.com
authorization: <bce-authorization-string>
content-type: application/json
支持v1
、v2
请求参数
参数 | 类型 | 描述 | 是否必须 |
---|---|---|---|
source | String | 视频路径,需要对source进行urlEncode。 | 是 |
cancel | String | 标志参数,不需要取值 | 是 |
请求体
无
请求示例
PUT /v1/videoAbstract?source=bos%3a%2f%2ftestbucket%2fdir%2fvideo.mp4&cancel HTTP/1.1
host: vca.bj.baidubce.com
content-type: application/json
authorization: <bce-authorization-string>
响应头域
无
响应体
无
响应示例
HTTP/1.1 200 OK