分页查询暂存视频大纲
更新时间:2026-09-22 17:01:21
接口描述
1、分页查询指定频道下已创建的暂存视频大纲(AI看)任务,无需逐个提交暂存文件ID。
2、接口返回大纲和答题内容的 json 地址,内容需由调用方自行请求该地址获取。
3、接口仅查询已有结果,不会触发大纲生成。
4、接口支持 HTTPS 协议。
接口URL
https://api.polyv.net/live/v4/channel/record-file/subtitle/outline/list
请求方式
GET
接口约束
1、接口调用有频率限制,建议使用 HTTPS,详见调用限制。
2、请在服务端生成签名并调用接口,严禁在 Web、App、小程序等客户端保存或使用 appSecret。
3、只返回已创建过大纲任务的暂存文件;从未发起过大纲生成的暂存文件不会出现在结果中。
4、只返回当前账号有权限访问的频道数据。
请求参数描述
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| appId | true | String | 账号 appId,详见获取密钥 |
| timestamp | true | Long | 当前 13 位毫秒级时间戳,3 分钟内有效 |
| sign | true | String | 32 位大写 MD5 签名,详见签名生成规则 |
| channelId | true | Integer | 频道号 |
| fileId | false | String | 暂存文件 ID。不传则查询该频道下全部大纲任务;仅支持单个,不支持批量 |
| pageNumber | false | Integer | 分页页码,默认 1 |
| pageSize | false | Integer | 每页数据量,默认 10 |
请求示例
https://api.polyv.net/live/v4/channel/record-file/subtitle/outline/list?appId=yourAppId×tamp=1700000000000&sign=YOUR_SIGN&channelId=1234567&pageNumber=1&pageSize=10
响应参数描述
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | Integer | HTTP 语义状态码,200 表示请求成功 |
| status | String | 响应状态,成功为 success,失败为 error |
| success | Boolean | 是否成功响应 |
| requestId | String | 请求 ID;排查问题时请一并提供,不应作为业务字段保存 |
| error | Object | 请求失败时的错误信息,详见error 参数描述 |
| data | Object | 分页数据,详见data 参数描述 |
error参数描述
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | Integer | 错误码 |
| desc | String | 错误描述 |
data参数描述
| 参数名 | 类型 | 说明 |
|---|---|---|
| pageNumber | Integer | 当前页码 |
| pageSize | Integer | 每页数据量 |
| totalPages | Long | 总页数 |
| totalItems | Long | 总数据量 |
| contents | Array | 当前页大纲任务列表,详见contents 参数描述 |
contents参数描述
| 参数名 | 类型 | 说明 |
|---|---|---|
| fileId | String | 暂存文件 ID,与暂存列表、字幕列表的 fileId 一致 |
| status | String | 大纲生成状态:init 初始化、srt_processing 字幕生成中、outline_processing 大纲生成中、audit 待审核、success 完成、fail 生成失败 |
| outlineUrl | String | 大纲内容的 json 地址,需自行请求该地址获取内容;未生成完成时为空,结构详见大纲内容结构 |
| questionUrl | String | 答题内容的 json 地址,需自行请求该地址获取内容;未生成或未开启答题时为空,结构详见答题内容结构 |
| failReason | String | 生成失败原因,status 为 fail 时返回,其余为空 |
同一页中可能同时存在已完成、生成中、生成失败的记录,单个文件的生成状态不影响同页其他文件的返回。
大纲内容结构
请求 outlineUrl 得到的 json 结构如下:
| 参数名 | 类型 | 说明 |
|---|---|---|
| introduction | String | 整场内容简介 |
| outlineContent | Array | 大纲分段列表 |
| outlineContent[].title | String | 分段标题 |
| outlineContent[].startTime | String | 分段开始时间,格式 HH:mm:ss,SSS |
| outlineContent[].endTime | String | 分段结束时间,格式 HH:mm:ss,SSS |
| outlineContent[].startIndex | Integer | 分段对应字幕的开始序号 |
| outlineContent[].endIndex | Integer | 分段对应字幕的结束序号 |
| outlineContent[].summary | Array | 该分段的内容要点,字符串数组 |
| outlineContent[].keyword | Array | 该分段的关键词,字符串数组 |
{
"introduction": "本场直播的整体内容简介",
"outlineContent": [
{
"title": "分段标题",
"startTime": "00:00:00,020",
"endTime": "00:03:17,080",
"startIndex": 0,
"endIndex": 94,
"summary": [
"该分段的内容要点一",
"该分段的内容要点二"
],
"keyword": [
"关键词一",
"关键词二"
]
}
]
}
答题内容结构
请求 questionUrl 得到的 json 结构如下:
| 参数名 | 类型 | 说明 |
|---|---|---|
| questions | Array | 题目列表 |
| questions[].questionId | String | 题目 ID |
| questions[].summaryId | Integer | 题目关联的大纲分段序号 |
| questions[].question | String | 题干 |
| questions[].selectOptions | Array | 选项列表 |
| questions[].selectOptions[].option | String | 选项标识,如 A、B |
| questions[].selectOptions[].content | String | 选项内容 |
| questions[].answer | String | 正确答案,对应选项标识 |
| questions[].type | String | 题目类型:single 单选、multiple 多选 |
| questions[].videoReviewTime | Long | 视频回顾时间点,单位:秒 |
| questions[].questionTriggerTime | Long | 题目弹出时间点,单位:秒 |
| questions[].videoReviewTimeFormat | String | 视频回顾时间点,格式 HH:mm:ss,SSS |
| questions[].questionTriggerFormat | String | 题目弹出时间点,格式 HH:mm:ss,SSS |
{
"questions": [
{
"questionId": "示例题目ID",
"summaryId": 1,
"question": "题干内容",
"selectOptions": [
{
"option": "A",
"content": "选项A的内容"
},
{
"option": "B",
"content": "选项B的内容"
}
],
"answer": "A",
"type": "single",
"videoReviewTime": 120,
"questionTriggerTime": 180,
"videoReviewTimeFormat": "00:02:00,000",
"questionTriggerFormat": "00:03:00,000"
}
]
}
Java请求示例
快速接入基础代码请 下载相关依赖源码:点击下载源码,下载后加入到自己的源码工程中即可。测试用例中的 HttpUtil.java 和 LiveSignUtil.java 都包含在下载文件中。
强烈建议您使用直播Java SDK完成API的功能对接,直播Java SDK 对API调用逻辑、异常处理、数据签名、HTTP请求线程池进行了统一封装和优化。
private static final Logger log = LoggerFactory.getLogger(getClass());
/**
* 分页查询暂存视频大纲
* @throws IOException
* @throws NoSuchAlgorithmException
*/
@Test
public void pageRecordFileOutlineTest() throws IOException, NoSuchAlgorithmException {
//公共参数,填写自己的实际参数
String appId = super.appId;
String appSecret = super.appSecret;
String timestamp = String.valueOf(System.currentTimeMillis());
//业务参数
String url = "https://api.polyv.net/live/v4/channel/record-file/subtitle/outline/list";
String channelId = "1234567";
//http 调用逻辑
Map<String, String> requestMap = new HashMap<>();
requestMap.put("appId", appId);
requestMap.put("timestamp", timestamp);
requestMap.put("channelId", channelId);
requestMap.put("pageNumber", "1");
requestMap.put("pageSize", "10");
requestMap.put("sign", LiveSignUtil.getSign(requestMap, appSecret));
String response = HttpUtil.get(url, requestMap);
log.info("测试分页查询暂存视频大纲成功:{}", response);
//do somethings
}
响应示例
系统全局错误说明详见全局错误说明
成功示例:
{
"code": 200,
"status": "success",
"success": true,
"requestId": "示例请求ID",
"error": null,
"data": {
"pageNumber": 1,
"pageSize": 10,
"totalPages": 1,
"totalItems": 3,
"contents": [
{
"fileId": "示例暂存文件ID1",
"status": "success",
"outlineUrl": "https://liveimages.videocc.net/video-outline/xxxxxxxxxx/示例大纲文件.json",
"questionUrl": "https://liveimages.videocc.net/video-question/xxxxxxxxxx/示例答题文件.json",
"failReason": null
},
{
"fileId": "示例暂存文件ID2",
"status": "outline_processing",
"outlineUrl": null,
"questionUrl": null,
"failReason": null
},
{
"fileId": "示例暂存文件ID3",
"status": "fail",
"outlineUrl": null,
"questionUrl": null,
"failReason": "找不到暂存文件字幕"
}
]
}
}
异常示例:
{
"code": 400,
"status": "error",
"requestId": "示例请求ID",
"error": {
"code": 20001,
"desc": "application not found."
},
"success": false
}


