保利威文档中心

幫助中心

批量建立頻道

更新時間:2023-04-04 09:31:23

介面說明

1、批量创建直播频道
2、(timestamp, appId)参与sign签名,并和sign一起通过url传递,请求体参数不参与签名,通过post请求体传递【请设置请求头contentType:application/json】
3、接口支持https协议

介面URL

http://api.polyv.net/live/v3/channel/basic/batch-create

請求方式

POST

介面限制

1、介面同時支援HTTP、HTTPS,建議使用HTTPS以確保介面安全,介面呼叫有頻率限制,詳細請查看

請求參數說明

參數名 必選 類型 說明
appId true String 帳號appId【詳見取得金鑰
timestamp true Long 目前13位毫秒級時間戳,3分鐘內有效
sign true String 簽名,為32位大寫的MD5值,產生簽名的appSecret金鑰作為通訊資料安全的關鍵資訊,嚴禁儲存在用戶端直接使用,所有API都必須透過客戶自己伺服器中轉呼叫POLYV伺服器取得回應資料【詳見簽名產生規則

請求體參數說明

參數名 必選 類型 說明
channels true Array 頻道列表,每次最多建立100個頻道【詳見channel欄位說明
channel參數說明
參數名 必選 類型 說明
name true String 頻道名稱
channelPasswd false String 頻道密碼
courseId false String 課程號
receive false String 是否為接收轉播頻道,不填或填其他值為發起轉播頻道(註:需開啟頻道轉播功能該參數才生效)
Y:表示是
N:表示否
autoPlay false Integer 是否自動播放,預設1 (注意,若該值為空,則該頻道會使用全域的「功能開關設定」。若非空,則會使用頻道的「功能開關設定」)
0:自動播放
1:手動播放
playerColor false String 播放器控制欄顏色,預設:#666666
scene false String 直播場景
alone:活動拍攝
ppt:三分屏
topclass:大班課
seminar:研討會
categoryId false Integer 新建頻道的所屬分類,若不提交,則為預設分類(分類ID可透過「查詢直播分類」介面取得)
subAccount false String 子帳號信箱,填寫時頻道會建立在該子帳號下(子帳號不能被刪除或停用),暫無法透過介面取得

範例

http://api.polyv.net/live/v3/channel/basic/batch-create?appId=frlr1zazn3&sign=1B76E8026C5F03B92E4725D6835DA57E&timestamp=1636707112481

請求體json參數:

{
    "channels": [
        {
            "name": "测试批量创建频道2(子账号)",
            "channelPasswd": "Hi826g",
            "subAccount": "test-dev@qq.com",
            "categoryId": 391352
        },
        {
            "name": "测试批量创建频道2(主账号)",
            "channelPasswd": "Hi826g",
            "autoPlay": 0,
            "playerColor": "#454545",
            "scene": "ppt",
            "categoryId": 391352
        }
    ]
}

回應參數說明

參數名 類型 說明
code Integer 回應狀態碼,200為成功返回,非200為失敗【詳見全域錯誤說明
status String 回應狀態文字資訊
message String 回應描述資訊,當code為400或500時,輔助描述錯誤原因
data Object 回應成功時返回批量頻道資訊【詳見data欄位說明
Data參數說明
參數名 類型 說明
channels Array 頻道內容列表陣列【詳見channel欄位說明
channel參數說明
參數名 類型 說明
channelId String 直播頻道號
userId String POLYV使用者ID,與保利威官網一致,取得路徑:官網->登入->直播(開發設定)
name String 直播頻道名稱
publisher String 主持人
description String 直播頻道描述
url String 直播推流地址
stream String 直播流名稱
logoImage String 播放器logo
logoOpacity Float Logo不透明度
1:表示完全不透明
0:表示完全透明
logoPosition String logo位置
tr1:左上
tr:右上
b1:左下
br:右下
logoHref String Logo的跳轉連結
coverImage String 播放前顯示的封面圖
coverHref String 封面圖的跳轉連結
waitImage String 等待推流時的顯示圖片
waitHref String 等待推流時顯示圖片的跳轉連結
cutoffImage String 切斷流時的顯示圖片
cutoffHref String 切斷流時顯示圖片的跳轉連結
advertType String 片頭廣告
NONE:無廣告
IMAGE:圖片
FLV:影片
advertDuration Integer 廣告時長(秒)
advertWidth Integer 廣告區域寬度(像素)
advertHeight Integer 廣告區域高度(像素)
advertImage String 圖片廣告
advertHref String 廣告的跳轉連結
advertFlvVid String 影片廣告ID
advertFlvUrl String 影片廣告連結
playerColor String 播放器控制欄顏色,例如 #666666
autoPlay Boolean 是否自動播放
warmUpFlv String 暖場影片連結
passwdRestrict Boolean 觀看密碼限制,需輸入觀看密碼才能播放流
passwdEncrypted String 觀看密碼加密後的密文
isOnlyAudio String Y:音訊模式
N:一般模式
isLowLatency String 低延遲
channelLogoImage String 頻道圖示
scene String 直播場景
alone:活動拍攝
ppt:三分屏
topclass:大班課
seminar:研討會
channelViewerPasswd String 參與者密碼
channelPasswd String 頻道密碼
linkMicLimit Integer 連麥人數,-1:使用帳號連麥分數,0-16:代表連麥人數
streamType String 直播方式
pureRtcEnabled String 是否為純rtc拉流
Y:是
N:否
type String 頻道類型
發起轉播:transmit
接收轉播:receive
一般頻道:normal
cnAndEnLiveEnabled String 中英文直播間開關
Y:開啟
N:關閉
pushEnUrl String 英文推流地址
currentTimeMillis Long 目前時間戳(毫秒)

Java請求範例

快速接入基礎代碼請下載相關依賴原始碼點擊下載原始碼 ,下載後加入到自己的原始碼工程中即可。測試用例中的HttpUtil.java 和 LiveSignUtil.java 都包含在下載檔案中。

強烈建議您使用直播Java SDK完成API的功能對接,直播Java SDK 對API呼叫邏輯、異常處理、資料簽名、HTTP請求執行緒池進行了統一封裝和最佳化。

private static final Logger log = LoggerFactory.getLogger(ChannelOperateTest.class);
/**
 * 批量创建频道
 * @throws IOException
 * @throws NoSuchAlgorithmException
 */
@Test
public void testBatchCreateChannels() 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/basic/batch-create";
    
    //http 调用逻辑
    Map<String, String> requestMap = new HashMap<>();
    requestMap.put("appId", appId);
    requestMap.put("timestamp", timestamp);
    requestMap.put("sign", LiveSignUtil.getSign(requestMap, appSecret));
    url = HttpUtil.appendUrl(url, requestMap);
    
    String password = getRandomString(6);
    String json = "{\"channels\":[{\"name\":\"测试批量创建频道2(子账号)\",\"channelPasswd\":\"%s\"," +
    "\"subAccount\":\"test-dev@qq.com\",\"categoryId\":391352},{\"name\":\"测试批量创建频道2(主账号)\"," +
    "\"channelPasswd\":\"%s\",\"autoPlay\":0,\"playerColor\":\"#454545\",\"scene\":\"ppt\"," +
    "\"categoryId\":391352}]}";
    json = String.format(json, password, password);
    String response = HttpUtil.postJsonBody(url, json, null);
    log.info("测试批量创建频道,返回值:{}", response);
    //do somethings
    
}

回應範例

系統全域錯誤說明詳見全域錯誤說明

成功範例

{
    "code": 200,
    "status": "success",
    "message": "",
    "data": {
        "channels": [
            {
                "channelId": 2671471,
                "userId": "1b448be323",
                "name": "测试批量创建频道2(子账号)",
                "publisher": "主持人",
                "description": "",
                "url": "rtmp://push-d1.videocc.net/recordf/1b448be3231636707115007c115?auth_key=1636708917-0-0-355f0b98f5f93ddc588fcd7770fe07fa",
                "stream": "1b448be3231636707115007c115",
                "logoImage": "https://liveimages.videocc.net/uploaded/images/2021/04/fy3ce1e8uh.png",
                "logoOpacity": 0.37,
                "logoPosition": "tr",
                "logoHref": "",
                "coverImage": "",
                "coverHref": "",
                "waitImage": "",
                "waitHref": "",
                "cutoffImage": "",
                "cutoffHref": "",
                "advertType": "NONE",
                "advertDuration": 0,
                "advertWidth": 0,
                "advertHeight": 0,
                "advertImage": "",
                "advertHref": "",
                "advertFlvVid": "",
                "advertFlvUrl": "",
                "playerColor": "#666666",
                "autoPlay": false,
                "warmUpFlv": "",
                "passwdRestrict": false,
                "passwdEncrypted": "",
                "isOnlyAudio": "N",
                "isLowLatency": "N",
                "m3u8Url": "http://pull-d1.videocc.net/recordf/1b448be3231636707115007c115.m3u8?auth_key=1636707117-0-0-3dc1259df0643a2dc9c61c40b9d17c44",
                "m3u8Url1": "",
                "m3u8Url2": "",
                "m3u8Url3": "",
                "channelLogoImage": "https://liveimages.videocc.net/assets/wimages/pc_images/logo.png",
                "scene": "alone",
                "channelViewerPasswd": null,
                "channelPasswd": "Hi826g",
                "linkMicLimit": 16,
                "streamType": "client",
                "pureRtcEnabled": "N",
                "type": "normal",
                "cnAndEnLiveEnabled": "N",
                "pushEnUrl": null,
                "closeDanmu": "N",
                "currentTimeMillis": 1636707119516
            },
            {
                "channelId": 2671472,
                "userId": "1b448be323",
                "name": "测试批量创建频道2(主账号)",
                "publisher": "主持人",
                "description": "",
                "url": "rtmp://push-d1.videocc.net/recordf/1b448be32316367071173751967?auth_key=1636708919-0-0-2b2602020d19528b19d6374b12fe9263",
                "stream": "1b448be32316367071173751967",
                "logoImage": "https://liveimages.videocc.net/uploaded/images/2021/04/fy3ce1e8uh.png",
                "logoOpacity": 0.37,
                "logoPosition": "tr",
                "logoHref": "",
                "coverImage": "",
                "coverHref": "",
                "waitImage": "",
                "waitHref": "",
                "cutoffImage": "",
                "cutoffHref": "",
                "advertType": "NONE",
                "advertDuration": 0,
                "advertWidth": 0,
                "advertHeight": 0,
                "advertImage": "",
                "advertHref": "",
                "advertFlvVid": "",
                "advertFlvUrl": "",
                "playerColor": "#666666",
                "autoPlay": false,
                "warmUpFlv": "",
                "passwdRestrict": false,
                "passwdEncrypted": "",
                "isOnlyAudio": "N",
                "isLowLatency": "N",
                "m3u8Url": "http://pull-d1.videocc.net/recordf/1b448be32316367071173751967.m3u8?auth_key=1636707119-0-0-19617586a7f61654216cce2c4827cebc",
                "m3u8Url1": "",
                "m3u8Url2": "",
                "m3u8Url3": "",
                "channelLogoImage": "https://liveimages.videocc.net/assets/wimages/pc_images/logo.png",
                "scene": "ppt",
                "channelViewerPasswd": null,
                "channelPasswd": "Hi826g",
                "linkMicLimit": 16,
                "streamType": "client",
                "pureRtcEnabled": "N",
                "type": "normal",
                "cnAndEnLiveEnabled": "N",
                "pushEnUrl": null,
                "closeDanmu": "N",
                "currentTimeMillis": 1636707119516
            }
        ]
    }
}

異常範例

{
    "code": 400,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}
联系客服,在线咨询