批量轉存暫存影片到雲端點播
更新時間:2023-10-13 10:34:04
介面說明
1、批量转存直播暂存录制视频文件到点播列表,接口转存过程为异步处理过程
2、接口支持https协议
介面URL
http://api.polyv.net/live/v3/channel/record/convert
請求方式
POST
介面限制
1、介面同時支援HTTP、HTTPS,建議使用HTTPS確保介面安全,介面呼叫有頻率限制,詳細請查看
請求參數說明
| 參數名 | 必選 | 類型 | 說明 |
|---|---|---|---|
| appId | true | String | 帳號appId【詳見取得金鑰】 |
| timestamp | true | Long | 目前13位毫秒級時間戳,3分鐘內有效 |
| sign | true | String | 簽名,為32位大寫的MD5值,產生簽名的appSecret金鑰作為通訊資料安全的關鍵資訊,嚴禁儲存在用戶端直接使用,所有API都必須透過客戶自己伺服器中轉呼叫POLYV伺服器取得回應資料【詳見簽名產生規則】 |
| channelId | true | String | 頻道號 |
| fileIds | true | String | 要轉存的錄製影片檔案ID,多個ID用英文逗號,分隔【fileId可透過查詢頻道錄製影片資訊取得】 |
| fileName | false | String | 轉存後的檔案名稱,目前暫不支援傳多個檔案名稱 |
| canRepeat | false | Integer | 點播影片回收站存在影片時是否回傳成功,預設值為1(註:參數為1時,介面回傳成功,實際不會重新轉存點播影片),建議傳0 1:回傳成功 0:回傳異常 |
| cataId | false | String | 轉存到點播的目錄ID,預設為點播的根目錄ID |
| callbackUrl | false | String | 轉存成功時回呼通知的url【詳見回呼說明】 |
範例
http://api.polyv.net/live/v3/channel/record/convert
表單參數:
fileName=%E6%B5%8B%E8%AF%95%E5%BC%82%E6%AD%A5%E8%BD%AC%E5%AD%98&fileIds=9a41298b5f032f3d5a8119b104c5dfcc%2C66fda01de2e11bf1d91e801ea7cbc431&appId=frlr1zazn3&sign=48F5D4ADC2A81256D906CCE715A2C267&cataId=1410431629027&callbackUrl=http%3A%2F%2Fabc.com&channelId=2191541×tamp=1621840957439
回應參數說明
| 參數名 | 類型 | 說明 |
|---|---|---|
| code | Integer | 回應狀態碼,200為成功回傳,非200為失敗【詳見全域錯誤說明】 |
| status | String | 回應狀態文字資訊 |
| message | String | 回應描述資訊,當code為400或500時,輔助描述錯誤原因 |
| data | String | 請求成功時回傳提交成功資訊 "submit success.":轉存任務提交成功 "processing.":轉存任務正在處理中 |
回呼說明
轉存結果即時資訊回呼,可以及時通知使用者轉存影片任務的結果。
原理
透過HTTP介面(設定的callbackUrl)向使用者伺服器發送GET請求,將轉存結果推送給使用者伺服器。
舉例說明
舉例如下:http://abc.com/test.do?channelId=123456&vid=e6b23c6f5134943a015bc117e2854eae_e&title=视频标题&duration=01:23:45&fileSize=123400×tamp=1557976774000&sign=xxxxxxxxxx&fileId=359a81ed8fd8cb83d88ddcd97d9e8a2b&videoId=b1c6f3ad2c&origin=auto&sessionIds=["20190703145126,4,fdqbopvtnv","20190703145126,8,fdqbopvtnv"]
轉存成功回呼參數
| 參數名 | 類型 | 說明 |
|---|---|---|
| status | String | 介面處理結果,成功為success,失敗為error |
| channelId | String | 頻道號 |
| vid | String | 轉存成功的影片id |
| title | String | 影片標題 |
| duration | String | 影片時長,格式為:HH:mm:ss |
| fileSize | Long | 影片檔案大小(單位:位元組) |
| timestamp | Long | 13位毫秒級時間戳 |
| sign | String | 校驗的加密字串,產生的規則md5(AppSecret+timestamp),AppSecret是直播系統的用金鑰 |
| sessionIds | String | 錄製的場次和時間對應的陣列字串,格式:["20190703145126,4,fdqbopvtnv","20190703145126,8,fdqbopvtnv"] ,其中:"20190703145126,4,fdqbopvtnv" 第一個欄位是開始時間,第二個欄位是直播的時長,第三個是對應的sessionId。 |
| fileId | String | 轉存對應的錄製檔案id |
| videoId | String | 轉存回放唯一的id |
| origin | String | 轉存的錄製來源 manual:雲端錄製 auto:自動錄製 merge:合併 clip:裁剪 |
| sessionId | String | 回放對應的單一場次id |
| userId | String | POLYV使用者ID,和保利威官網一致,取得路徑:官網->登入->直播(開發設定) |
轉存失敗回呼參數
| 參數名 | 類型 | 說明 |
|---|---|---|
| status | String | 介面處理結果,成功為success,失敗為error |
| code | String | 錯誤碼 userExpired:使用者已過期 spaceOverSize:點播空間不足 unknown:未知異常 |
| userId | String | POLYV使用者ID,和保利威官網一致,取得路徑:官網->登入->直播(開發設定) |
| channelId | String | 頻道號 |
| fileId | String | 轉存的檔案id |
| sign | String | 校驗的加密字串,產生的規則md5(AppSecret+timestamp),AppSecret是直播系統的用金鑰 |
| timestamp | Long | 目前13位毫秒級時間戳 |
Java請求範例
快速接入基礎程式碼請下載相關依賴原始碼, 點擊下載原始碼 ,下載後加入到自己的原始碼工程中即可。測試案例中的HttpUtil.java 和 LiveSignUtil.java 都包含在下載檔案中。
強烈建議您使用直播Java SDK完成API的功能對接,直播Java SDK 對API呼叫邏輯、異常處理、資料簽名、HTTP請求執行緒池進行了統一封裝和最佳化。
private static final Logger log = LoggerFactory.getLogger(ChannelPlayBackTest.class);
/**
* 异步批量转存录制文件到点播
* @throws IOException
* @throws NoSuchAlgorithmException
*/
@Test
public void testRecordConvert() throws IOException, NoSuchAlgorithmException {
//公共参数,填写自己的实际参数
String appId = super.appId;
String appSecret = super.appSecret;
String userId = super.userId;
String timestamp = String.valueOf(System.currentTimeMillis());
//业务参数
String url = "http://api.polyv.net/live/v3/channel/record/convert";
String channelId = "2139283";
String fileIds = "97e6b0ca2422069be036507218b7c2fb";
String fileName = "测试异步转存";
String cataId = "1410431629027";
String callbackUrl = "http://abc.com";
Map<String, String> requestMap = new HashMap<>();
requestMap.put("appId", appId);
requestMap.put("timestamp", timestamp);
requestMap.put("channelId", channelId);
requestMap.put("fileIds", fileIds);
requestMap.put("fileName", fileName);
requestMap.put("cataId", cataId);
requestMap.put("callbackUrl", callbackUrl);
requestMap.put("sign", LiveSignUtil.getSign(requestMap, appSecret));
String response = HttpUtil.postFormBody(url, requestMap);
log.info("测试异步批量转存录制文件到点播,返回值:{}", response);
//do somethings
}
回應範例
系統全域錯誤說明詳見全域錯誤說明
成功範例
{
"code":200,
"status":"success",
"message":"",
"data":"submit success."
}
異常範例
{
"code": 400,
"status": "error",
"message": "invalid signature.",
"data": ""
}
