分頁查詢暫存影片大綱
更新時間: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
}
