指定影片時間點截圖
更新時間:2025-01-14 16:05:48
介面說明
1、通过视频id添加单个视频指定时间点截图任务
2、接口URL中的{userid}为点播账号userid,具体参考菜单【使用须知】->【获取密钥】
3、接口支持https协议
介面URL
http://api.polyv.net/v2/video/snapshot/{userid}/addTask
請求方式
POST
介面限制
1、介面同時支援HTTP、HTTPS,建議使用HTTPS確保介面安全,介面呼叫有頻率限制,詳細請查看
請求參數說明
| 參數名 | 必選 | 類型 | 說明 |
|---|---|---|---|
| ptime | true | Long | 當前時間的毫秒級時間戳,3分鐘內有效 |
| sign | true | String | 簽名,為40位大寫的SHA1值,產生簽名的secretkey金鑰作為通訊資料安全的關鍵資訊,嚴禁儲存在用戶端直接使用,所有API都必須透過客戶自己伺服器中轉呼叫POLYV伺服器取得回應資料【詳見簽名產生規則】 |
| vid | true | String | 影片id |
| offsetTimes | true | String | 截圖時間點,每個任務最多20個,多個時間點以英文逗號分隔,如:5,10,15,20 |
| width | false | String | 截圖的寬度,預設為原影片寬 |
| height | false | String | 截圖的高度,預設為原影片高 |
| callbackUrl | false | String | 截圖完成後的回呼地址,截圖任務完成會透過post請求發送結果資訊到回呼地址【詳見回呼說明】 |
範例
http://api.polyv.net/v2/video/snapshot/1b448be323/addTask
表單參數:
vid=1b448be32303e4922a8f70d6b48220ae_1&offsetTimes=5,10,15,20&width=300&sign=4FEC87EC6841211C36EC51A072A6D64DF72E1AF4&ptime=1617700224540&height=300
回應參數說明
| 參數名 | 類型 | 說明 |
|---|---|---|
| code | Integer | 回應狀態碼,200為成功返回,非200為失敗【詳見全域錯誤說明】 |
| status | String | 回應狀態文字資訊 |
| message | String | 回應描述資訊,當code為400或500時,輔助描述錯誤原因 |
| data | Integer | 任務id |
回呼說明
截圖任務完成結果資訊回呼,可以及時通知使用者截圖任務的結果
原理
透過HTTP協定,向callbackUrl(回呼地址)發送POST請求,將任務結果通知到使用者設定的回呼地址
舉例說明
截圖任務完成後,polyv會回呼該介面,並帶上簽名資訊,開發者可以透過簽名資訊來校驗呼叫是否為polyv的合法呼叫,具體的簽名規則:md5("snapshot" + vid + secretKey)。如vid="e6b23c6f51350f106556806a576b1942_e",secretKey="testKey",那麼sign="3adb60893894d422d00ed2efae8c41f3" (小寫md5)。
最終回呼的url為http://example.polyv.net/snapshot-callback.do?sign=3adb60893894d422d00ed2efae8c41f3
任務成功回呼資訊
{
"taskId": 123,
"vid": "e6b23c6f51350f106556806a576b1942_e",
"status": "success",
"snapshots": [
{
"offsetTime": 12,
"imageUrl": "http://vod-assets.videocc.net/snapshot/e6b23c6f51/e6b23c6f519df1d317cca208edd448cb/12.jpg"
},
{
"offsetTime": 78,
"imageUrl": "http://vod-assets.videocc.net/snapshot/e6b23c6f51/e6b23c6f519df1d317cca208edd448cb/78.jpg"
}
]
}
任務失敗回呼資訊
{
"taskId": 123,
"vid": "e6b23c6f51350f106556806a576b1942_e",
"status": "fail",
"snapshots": []
}
回呼欄位說明
| 參數名 | 類型 | 說明 |
|---|---|---|
| taskId | Integer | 任務id |
| vid | String | 影片id |
| status | String | 任務狀態,成功為success,失敗為fail |
| snapshots | Array | 任務成功為截圖資訊陣列,失敗為空陣列【詳見snapshots參數說明】 |
snapshots參數說明
| 欄位 | 類型 | 說明 |
|---|---|---|
| offsetTime | Integer | 截圖時間點 |
| imageUrl | String | 截圖的url地址 |
Java請求範例
快速接入基礎程式碼請下載相關依賴原始碼, 點擊下載原始碼,下載後加入到自己的原始碼工程中即可。測試案例中的HttpUtil.java 和 VodSignUtil.java 都包含在下載檔案中。
強烈建議您使用點播Java SDK完成API的功能對接,點播Java SDK 對API呼叫邏輯、異常處理、資料簽名、HTTP請求執行緒池進行了統一封裝和最佳化。
private static final Logger log = LoggerFactory.getLogger(VodSnapshotTest.class);
/**
* 指定视频时间点截图
* @throws Exception
* @throws NoSuchAlgorithmException
*/
@Test
public void testAddSnapshotTask() throws Exception, NoSuchAlgorithmException {
//公共参数,填写自己的实际参数
String secretKey = super.secretKey;
String userId = super.userId;
String ptime = String.valueOf(System.currentTimeMillis());
//业务参数
String url = String.format("http://api.polyv.net/v2/video/snapshot/%s/addTask", userId);
String vid = "1b448be32303e4922a8f70d6b48220ae_1";
String offsetTimes = "5,10,15,20";
String width = "300";
String height = "300";
String callbackUrl = "http://example.polyv.net/snapshot-callback.do";
Map<String, String> requestMap = new HashMap<>();
requestMap.put("ptime", ptime);
requestMap.put("vid", vid);
requestMap.put("offsetTimes", offsetTimes);
requestMap.put("width", width);
requestMap.put("height", height);
requestMap.put("callbackUrl", callbackUrl);
requestMap.put("sign", VodSignUtil.getSign(requestMap, secretKey));
String response = HttpUtil.postFormBody(url, requestMap);
log.debug("测试指定视频时间点截图,{}", response);
//do somethings
}
回應範例
系統全域錯誤說明詳見全域錯誤說明
成功範例
{
"code": 200,
"status": "success",
"message": "success",
"data": 2036
}
異常範例
簽名不正確
{
"code": 400,
"status": "error",
"message": "the sign is not right",
"data": ""
}
