合併直播錄製檔案並回呼 MP4 下載位址
更新時間:2023-12-26 12:00:28
新版介面位址合併直播錄製檔案並回呼 MP4 下載位址
舊版介面的 startTime 和 endTime 是根據建立時間篩選的,而直播後台和查詢介面都未回傳建立時間,使用較困難,建議使用新版介面
介面描述
1、合并直播录制mp4文件,接口合并过程为异步处理过程
2、接口支持https协议
介面 URL
http://api.polyv.net/live/v3/channel/record/merge-mp4
請求方式
POST
介面限制
1、介面同時支援 HTTP 與 HTTPS,建議使用 HTTPS 以確保介面安全,介面呼叫有頻率限制,詳細請查看
2、合併的錄製檔案開始與結束的間隔時間必須在 8 小時內
3、三分屏的錄製將自動經過重製課件後再合併 MP4
4、已合併回傳檔案位址(fileUrl)30 天內有效
請求參數描述
| 參數名 | 必選 | 類型 | 說明 |
|---|---|---|---|
| appId | true | String | 帳號 appId【詳見取得金鑰】 |
| timestamp | true | Long | 目前 13 位毫秒級時間戳,3 分鐘內有效 |
| sign | true | String | 簽名,為 32 位大寫的 MD5 值,產生簽名的 appSecret 金鑰作為通訊資料安全的關鍵資訊,嚴禁儲存在用戶端直接使用,所有 API 都必須透過客戶自己伺服器中轉呼叫 POLYV 伺服器取得回應資料【詳見簽名產生規則】 |
| channelId | true | String | 頻道號 |
| startTime | true | String | 錄製檔案建立時間最小值,與 endTime 最大不能超過 8 小時,為 13 位毫秒級時間戳 |
| endTime | true | String | 錄製檔案建立時間最大值,與 startTime 最大不能超過 8 小時,為 13 位毫秒級時間戳 |
| callbackUrl | false | String | 合併成功或失敗回呼的 URL【詳見回呼說明】 |
| fileName | false | String | 合併後的影片檔案名稱,長度不能超過 64 |
範例
http://api.polyv.net/live/v3/channel/record/merge-mp4
表單參數:
fileName=3-25%E6%B5%8B%E8%AF%95%E5%90%88%E5%B9%B6%E5%AF%BC%E5%87%BA%E5%90%8E%E6%96%87%E4%BB%B6%E5%90%8DMP4-1&appId=frlr1zazn3&sign=EE9979208A4B8FDBBFBBFFE381859C7F&startTime=1615452767000&endTime=1615461011000&channelId=2191541×tamp=1621842028633
回應參數描述
| 參數名 | 類型 | 說明 |
|---|---|---|
| code | Integer | 回應狀態碼,200 為成功回傳,非 200 為失敗【詳見全域錯誤說明】 |
| status | String | 回應狀態文字資訊 |
| message | String | 回應描述資訊,當 code 為 400 或 500 時,輔助描述錯誤原因 |
| data | String | 請求失敗時為空,請求成功時為相關資訊【詳見data 欄位描述】 |
data 欄位描述
| 參數名 | 類型 | 說明 |
|---|---|---|
| fileId | String | 檔案 ID |
| fileUrl | String | 合併中回傳空字串,已合併成功回傳 MP4 檔案位址 |
回呼說明
合併結果即時資訊回呼,可及時通知使用者合併任務的結果。
原理
透過 HTTP 介面(設定的 callbackUrl)向使用者伺服器發送 GET 請求,將合併結果推送給使用者伺服器。
舉例說明
舉例如下:http://abc.com/test.do?status=success×tamp=1603506240000&channelId=xxxx&fileIds=xxx,xxx&fileUrl=xxdxxxxx&fileName=urlxxxx
| 參數名 | 類型 | 說明 |
|---|---|---|
| status | String | 介面處理結果,成功為 success,失敗為 error |
| channelId | String | 頻道號 |
| timestamp | Long | 13 位毫秒級時間戳 |
| fileId | String | 合併後的檔案 ID |
| fileIds | String | 合併前的所有檔案 ID |
| fileUrl | String | 合併後的 MP4 位址 |
| fileName | String | 合併後的檔案名稱 |
Java 請求範例
快速接入基礎程式碼請下載相關依賴原始碼,點擊下載原始碼,下載後加入自己的原始碼工程中即可。測試案例中的 HttpUtil.java 和 LiveSignUtil.java 都包含在下載檔案中。
強烈建議您使用直播 Java SDK 完成 API 的功能對接,直播 Java SDK 對 API 呼叫邏輯、異常處理、資料簽名、HTTP 請求執行緒池進行了統一封裝和最佳化。
private static final Logger log = LoggerFactory.getLogger(ChannelPlayBackTest.class);
/**
* 异步合并录制文件并回调MP4
* @throws IOException
* @throws NoSuchAlgorithmException
*/
@Test
public void testRecordMergeMp4() 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/merge-mp4";
String channelId = "2191541";
String startTime = "1615452025000";
String endTime = "1615453127000";
String callbackUrl = "http://abc.com";
String fileName = "测试合并导出后文件名MP4";
Map<String, String> requestMap = new HashMap<>();
requestMap.put("appId", appId);
requestMap.put("timestamp", timestamp);
requestMap.put("channelId", channelId);
requestMap.put("startTime", startTime);
requestMap.put("endTime", endTime);
requestMap.put("callbackUrl", callbackUrl);
requestMap.put("fileName", fileName);
requestMap.put("sign", LiveSignUtil.getSign(requestMap, appSecret));
String response = HttpUtil.postFormBody(url, requestMap);
log.info("测试异步合并录制文件并回调MP4,返回值:{}", response);
//do somethings
}
回應範例
系統全域錯誤說明詳見全域錯誤說明
成功範例
1、提交的影片正在合併處理中
{
"code":200,
"status":"success",
"message":"",
"data":{
"fileUrl":"",
"fileId":"015748897d214bc0cad299c0ec43a706"
}
}
2、合併檔案已存在
{
"code":200,
"status":"success",
"message":"",
"data":{
"fileUrl":"https://oss-live-1.videocc.net/record/record/recordf/1b348be3231615362355920a774/recordmerge-20210315161450-3ca1a3.mp4",
"fileId":"015748897d214bc0cad299c0ec43a706"
}
}
異常範例
{
"code": 400,
"status": "error",
"message": "invalid signature.",
"data": ""
}
