查询频道的历史并发人数

接口URL

https://api.polyv.net/live/v3/channel/statistics/concurrence

接口说明

1、接口用于获取频道在某个日期区间并发人数(按照时间升序排序)
2、接口支持https

支持格式

JSON

请求方式

GET

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp long 当前13位毫秒级时间戳,3分钟内有效
sign string 签名,为32位大写的MD5值
channelId int 频道号
startDate string 开始日期格式,yyyy-MM-dd
endDate string 结束日期格式,yyyy-MM-dd

备注:开始日期和结束日期的时间跨度:最多查两个月内的数据

响应成功JSON示例:

{
    "code": 200,
    "status": "success",
    "message": "",
    "data": [{
        "day": "2019-04-10",
        "minute": "10:30",
        "viewers": 2
    }, {
        "day": "2019-04-16",
        "minute": "19:06",
        "viewers": 2
    }]
}

响应失败JSON示例:

未输入appId

{
    "code": 400,
    "status": "error",
    "message": "appId is required.",
    "data": ""
}

appId不正确

{
    "code": 400,
    "status": "error",
    "message": "application not found.",
    "data": ""
}

时间戳错误

{
    "code": 400,
    "status": "error",
    "message": "invalid timestamp.",
    "data": ""
}

签名错误

{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}

频道号格式错误

{
  "code": 400, 
  "status": "error", 
  "message": "param is not digit: dsadasd", 
  "data": ""
}

日期范围错误

{
  "code": 400, 
  "status": "error", 
  "message": "startDate can not great endDater", 
  "data": ""
}

字段说明

参数名 说明
code 响应代码,成功为200,失败为400,签名错误为401,异常错误500
status 成功为success,失败为error
message 错误时为错误提示消息
data 日期区间内的历史并发人数

php请求示例

<?php
//引用config.php
include 'config.php';

$params = array(
  'appId' => $appId,
  'timestamp' => $timestamp,
  'channelId' => 195770,
  'startDate' => 2019-04-01,
  'endDate' => 2019-05-01
);

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法
$params['sign'] = $sign;

$url = "http://api.polyv.net/live/v3/channel/statistics/concurrence?".http_build_query($params);

$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 0);
$res = curl_exec($curl);
curl_close($curl);

echo $res;
?>

签名规则(config.php文件代码查看)

http://dev.polyv.net/2018/liveproduct/l-api/rule/sign/

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

获取频道文档转换状态

接口URL

http://api.polyv.net/live/v3/channel/document/status/get

接口说明

1、提供ppt文档转换状态接口
2、支持https

支持格式

JSON

请求方式

GET

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp string 当前时间的秒级时间戳(13位)
sign string 签名,为32位大写的MD5值
channelId int 频道号
fileId string 文件ID,(如果有多个,可以用英文逗号隔开拼接成字符串)

操作成功响应示例

{
  "code": "",
  "message": "text",
  "status": "",
  "data": [
    {
      "totalPage": 1,
      "smallImages": [
        "http://www.polyv.net/1.png"
      ],
      "imageCount": 1,
      "images": [
        "http://www.polyv.net/2.png"
      ],
      "errorMsg": "",
      "htmlUrl": "http://www.polyv.net/1.html",
      "convertStatus": "normal",
      "fileId": "xxxxxx"
    },
    {
      "totalPage": 1,
      "smallImages": [
        "http://www.polyv.net/1.png"
      ],
      "imageCount": 1,
      "images": [
        "http://www.polyv.net/2.png"
      ],
      "errorMsg": "",
      "htmlUrl": "http://www.polyv.net/1.html",
      "convertStatus": "normal",
      "fileId": "xxxxxx"
    }
  ]
}

操作失败响应示例

签名错误

{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}

缺少参数 channelId

{
    "code": 400,
    "status": "error"
    "message": "param should not be empty: channelId",
    "data": ""
}

响应字段说明

名称 类型 说明
code string 响应代码,成功为200,失败为400,签名错误为403,异常错误500
status string 成功为success,失败为error
message string 错误时为错误提示消息
data string 成功响应数组
data[0].convertStatus string 转换状态. (“normal”:正常。”failUpload“: 上传失败。“waitConvert”: 转换PPT中。“failConvert”: 转换失败,失败原因会返回在data[0].errorMsg字段中展示)
data[0].errorMsg string 错误信息(转换失败原因,data[0].convertStatus=“waitConvert” 返回)
data[0].totalPage int 总页数(data[0].convertStatus=“normal” 返回)
data[0].images string[] 大图地址数组,(data[0].convertStatus=“normal” 返回)
data[0].smallImages string[] 小图地址数组,(data[0].convertStatus=“normal” 返回)
data[0].imageCount int 大图图片数量,(data[0].convertStatus=“normal” 返回)
data[0].htmlUrl string 动画PPT地址,(data[0].convertStatus=“normal” 返回)
data[0].fileId string 文件ID
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

直接(独立)授权

一、功能路径

我的直播 --> 频道设置-->观看条件设置-->直接授权

二、功能介绍

打开直播观看页的时候URL需带上指定的参数,经过直播系统验证请求合法后,直接进入直播观看页,同时将用户所传参数作为观看页的观众信息进行设置,要求接口返回的观众账号具有唯一性,即同一个账号不能在两个地方同时登录,较早登录的账号会被踢出。

直接授权

  1. Secretkey:用于校验签名的生成。

三、直接授权流程详解

1. 将频道设置为直接授权后,通过后台或者api接口获取到用户直接授权观看条件的secretkey

2. 在请求保利威直播观看页时需带上相关参数,如
https://live.polyv.cn/watch/125527?userid=6b3a43&ts=1498547407000&sign=dd9dc9e42ad7c0204398e925a4ee0f46&nickname=viewerTests&avatar=http://livestatic.videocc.net/assets/wimages/missing_face.png

3.  直播系统会对用户提交的sign参数的值做比较判断是否合法,一次成功请求后,该链接将失效(sign只能成功使用一次)
如果合法,直播系统将使用nickname、userid、avatar,进入到保利威视直播观看页
聊天区将显示学员的昵称和头像。如果验证失败,则显示错误页面。

四、参数说明

参数 类型 必填 说明
userid string(仅支持英文大小写、数字和下划线) 观众ID,需要保证唯一性
ts long 13位毫秒级时间戳
sign string 用于校验的签名,生成规则是secretkey + userid + secretkey + ts进行MD5加密
nickname string 观众昵称,需要进行url安全的base64编码
avatar string 观众头像的url地址
param4 string 统计观众观看日志的自定义参数,需要先进行base64加密后再进行urlencode
param5 string 统计观众观看日志的自定义参数,需要先进行base64加密后再进行urlencode

五、代码示例(PHP)

<?php
$secretkey = "qwertyui"; //后台secretKey
$userid = "test" . rand(0, 5); //直播的用户ID
$ts = time() * 1000; //当前时间
$sign = md5($secretkey . $userid . $secretkey . $ts); //用于校验的sign
$nickname = urlencode(base64_encode("保利威")); //学员的昵称
$avatar = "http://live.polyv.net/assets/images/avatars/9avatar.jpg"; //学员的头像
$url = "https://live.polyv.cn/watch/108008";
$callbackUrl = $url . "?userid=" . $userid . "&nickname=" . $nickname . "&avatar=" . $avatar . "&ts=" . $ts . "&sign=" . $sign;
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>login</title>
</head>
<body>
<div id="btn">
<input type="button" onclick="openurl()" value="独立授权观看" class="btn" >
</div>
<script>
function openurl(){
location.href="<?php
echo $callbackUrl ?>";
};
</script>
</form>
</body>
</html>

六、展示效果

http://demo.polyv.net/wfy/directAuth.php

七、注意事项

  1. .要保证提交的userid的唯一性,当多个观众使用同一个userid进入观看页时,较早登录的观众会被后面登录的观众踢出,观看页会提示 "帐号在另外的地方登录,您将被退出观看。"如下图:
    被踢
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

获取频道直播场次信息

接口URL

https://api.polyv.net/live/v3/channel/session/list

接口说明

1、接口用于获取频道直播场次信息
2、接口支持https

支持格式

JSON

请求方式

GET

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 管理员的appId
timestamp long 13位当前时间戳
sign string 签名值
channelId string 频道ID
startDate String 开始日期,格式YYYY-MM-DD
endDate String 结束日期,格式YYYY-MM-DD
page int 第一页 第几页
pageSize int 每页显示几条(默认20条)

响应成功JSON示例:

{
    "code": 200,
    "status": "success",
    "message": "",
    "data": {
        "pageNumber": 1,
        "limit": 20,
        "totalItems": 123,
        "contents":[{
            "channelId": 10001,
            "sessionId": "dadadadkjkdf",
            "startTime": "2019-01-02 00:00:00",
            "endTime": "2019-01-02 01:03:49"
        }]
    }
}

响应失败JSON示例:

// 未输入appId
{
    "code": 400,
    "status": "error",
    "message": "appId is required.",
    "data": ""
}
// appId不正确
{
    "code": 400,
    "status": "error",
    "message": "application not found.",
    "data": ""
}
// 时间戳错误
{
    "code": 400,
    "status": "error",
    "message": "invalid timestamp.",
    "data": ""
}
// 签名错误
{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}

字段说明

参数名 说明
code 响应代码,成功为200,失败为400,签名错误为401,异常错误500
status 成功为success,失败为error
message 错误时为错误提示消息
data 成功响应时为相关的信息
data.contents[0].channelId 频道ID
data.contents[0].sessionId 场次ID
data.contents[0].startTime 直播开始时间
data.contents[0].endTime 直播结束时间
data.totalItems 记录总数
data.limit 每页记录数
data.pageNumber 页数

php请求示例

<?php
//引用config.php
include 'config.php';

$channelId="183950";

$params = array(
  'appId' => $appId,
  'channelId' => $channelId,
  'timestamp' => $timestamp
);

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法

$url = "http://api.polyv.net/live/v3/channel/session/list?appId=".$appId."&channelId=".$channelId."&timestamp=".$timestamp."&sign=".$sign;

echo file_get_contents($url);

?>

签名规则(config.php文件代码查看)

http://dev.polyv.net/2018/liveproduct/l-api/rule/sign/

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

创建账号下直播分类

接口URL

http://api.polyv.net/live/v3/user/category/create

接口说明

1、创建账号下频道分类
2、接口支持https协议

支持格式

JSON

请求方式

 POST

请求参数

参数名 必选 类型 说明
categoryName string 分类名称
appId string 从API设置中获取,在直播系统登记的appId
sign string 签名,为32位大写的MD5值
timestamp string 当前13位毫秒级时间戳,3分钟内有效

响应成功JSON示例:

{
    "code": 200,
    "status": "success",
    "message": "",
    "data": {
        "categoryId": 185382,
        "categoryName": "888",
        "userId": "ee7fe7fbda",
        "rank": 2
    }
}

响应异常JSON示例:

{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}

字段说明

参数名 说明
code 请求状态响应码
status 请求状态
message 错误信息
data

php请求示例

<?php
//引用config.php
include 'config.php';

$params = array(
  'appId' => $appId,
  'timestamp' => $timestamp,
  'categoryName' => '一级目录',
);

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法
$params['sign'] = $sign;

$url = "http://api.polyv.net/live/v3/user/category/create?".http_build_query($params);

$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 0);
$res = curl_exec($curl);
curl_close($curl);

echo $res;
?>

签名规则(config.php文件代码查看)

http://dev.polyv.net/2018/liveproduct/l-api/rule/sign/

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

查询账号下所有频道详细信息

接口URL

http://api.polyv.net/live/v3/channel/management/list-detail

接口说明

1、获取账号下所有的频道详细信息列表
2、接口支持https协议

支持格式

JSON

请求方式

 POST

请求参数

参数名 必选 类型 说明
page int 页数默认为1
pageSize int 每页显示的数据条数,默认每页显示20条数据
appId string 从API设置中获取,在直播系统登记的appId
sign string 签名,为32位大写的MD5值
timestamp string 当前13位毫秒级时间戳,3分钟内有效
categoryId int 所属分类id
watchStatus string 观看页状态筛选,live-直播中,playback-回放中,end-已结束,waiting-未开始
keyword string 频道名称,模糊查询

响应成功JSON示例:

{
    "code": 200,
    "status": "success",
    "message": "",
    "data": {
        "pageSize": 20,
        "pageNumber": 1,
        "totalItems": 5,
        "contents": [{
            "channelId": 329298,
            "name": "Java课程",
            "channelPasswd": "123456",
            "categoryId": "177474",
            "scene": "topclass",
            "watchStatus": "waiting",
            "watchStatusText": "未开始",
            "sceneText": "大班课",
            "watchUrl": "https://live.polyv.cn/watch/329298",
            "content": "<p>开始了缴费解放路水电费;发送第三方数据fs</p><p><br></p><p><br></p><p><br></p><p>f伺服电机三方洛索洛芬</p>",
            "startTime": 0,
            "authSetting": [{
                "channelId": 329298,
                "rank": 1,
                "userId": "ee7fe7fbda",
                "globalSettingEnabled": "N",
                "enabled": "Y",
                "authType": "pay",
                "authTips": "欢迎观看本次直播",
                "payAuthTips": "欢迎观看本次直播",
                "codeAuthTips": "欢迎观看本次直播",
                "infoAuthTips": "欢迎观看本次直播",
                "authCode": null,
                "qcodeTips": null,
                "qcodeImg": null,
                "price": 0.10,
                "watchEndTime": null,
                "validTimePeriod": null,
                "customKey": "qydFTAaARY",
                "customUri": null,
                "externalKey": "qydFTAaARY",
                "externalUri": null,
                "externalRedirectUri": null,
                "directKey": null,
                "trialWatchEnabled": "N",
                "trialWatchTime": 1,
                "trialWatchEndTime": null
            }, {
                "channelId": 329298,
                "rank": 2,
                "userId": "ee7fe7fbda",
                "globalSettingEnabled": "N",
                "enabled": "N",
                "authType": "none",
                "authTips": "欢迎观看本次直播",
                "payAuthTips": "欢迎观看本次直播",
                "codeAuthTips": "欢迎观看本次直播",
                "infoAuthTips": "欢迎观看本次直播",
                "authCode": null,
                "qcodeTips": null,
                "qcodeImg": null,
                "price": 0.00,
                "watchEndTime": null,
                "validTimePeriod": null,
                "customKey": "qydFTAaARY",
                "customUri": null,
                "externalKey": "qydFTAaARY",
                "externalUri": null,
                "externalRedirectUri": null,
                "directKey": null,
                "trialWatchEnabled": "N",
                "trialWatchTime": null,
                "trialWatchEndTime": null
            }]
        }, {
            "channelId": 314392,
            "name": "云直播测试",
            "channelPasswd": "702036",
            "categoryId": "177474",
            "scene": "ppt",
            "watchStatus": "waiting",
            "watchStatusText": "未开始",
            "sceneText": "三分屏",
            "watchUrl": "https://live.polyv.cn/watch/314392",
            "content": "",
            "startTime": 0,
            "authSetting": [{
                "userId": "ee7fe7fbda",
                "rank": 1,
                "enabled": "N",
                "authType": "none",
                "authTips": "欢迎观看本次直播",
                "payAuthTips": "欢迎观看本次直播",
                "codeAuthTips": "欢迎观看本次直播",
                "infoAuthTips": "欢迎观看本次直播",
                "authCode": null,
                "qcodeTips": null,
                "qcodeImg": null,
                "price": 0.00,
                "watchEndTime": null,
                "validTimePeriod": null,
                "customKey": null,
                "customUri": null,
                "externalKey": null,
                "externalUri": null,
                "externalRedirectUri": null,
                "directKey": null,
                "trialWatchEnabled": "N",
                "trialWatchTime": null,
                "trialWatchEndTime": null
            }, {
                "userId": "ee7fe7fbda",
                "rank": 2,
                "enabled": "N",
                "authType": "none",
                "authTips": "欢迎观看本次直播",
                "payAuthTips": "欢迎观看本次直播",
                "codeAuthTips": "欢迎观看本次直播",
                "infoAuthTips": "欢迎观看本次直播",
                "authCode": null,
                "qcodeTips": null,
                "qcodeImg": null,
                "price": 0.00,
                "watchEndTime": null,
                "validTimePeriod": null,
                "customKey": null,
                "customUri": null,
                "externalKey": null,
                "externalUri": null,
                "externalRedirectUri": null,
                "directKey": null,
                "trialWatchEnabled": "N",
                "trialWatchTime": null,
                "trialWatchEndTime": null
            }]
        }],
        "startRow": 1,
        "firstPage": true,
        "lastPage": true,
        "nextPageNumber": 1,
        "prePageNumber": 1,
        "limit": 2,
        "totalPages": 1,
        "endRow": 2,
        "offset": 0
    }
}

响应异常JSON示例:

{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}

字段说明

参数名 说明
code 请求状态响应码
status 请求状态
message 错误信息
pageNumber 当前页
totalItems 记录的总数
channelId 频道号
name 频道名称
channelPasswd 频道密码
categoryId 分类ID
scene 场景,alone-活动直播,ppt-三分屏,topclass-大班课
sceneText 场景描述
watchStatus 观看页状态,live-直播中,playback-回放中,end-已结束,waiting-未开始
watchStatusText 观看页状态描述,直播中,回放中,已结束,未开始
watchUrl 观看页链接
content 直播介绍
startTime 直播开始时间
userId 用户ID
rank 用于实现一个频道设置两个观看条件,为1或2(1为主要条件,2为次要条件)
globalSettingEnabled 是否开启全局设置(Y/N)
enabled 是否开启观看条件(Y/N)
authType 观看条件类型(1. 无限制 none 2. 验证码观看 code 3. 付费观看 pay 4. 白名单观看 phone 5. 登记观看 info 6. 分享观看 wxshare 7. 自定义授权观看 custom 8. 外部授权观看 external)
authTips 白名单观看提示信息
payAuthTips 付费观看提示信息
authCode 验证码观看的验证码
qcodeTips 验证码观看的二维码提示
qcodeImg 验证码观看的二维码图片
price 付费观看的价格
watchEndTime 付费观看,截止时间,为null表示:一次付费,永久有效
validTimePeriod 付费观看的截止时长 (天)
customKey 自定义授权观看的key
customUri 自定义授权观看的接口地址
externalKey 外部授权观看的key
externalUri 外部授权观看的接口地址
externalRedirectUri 外部授权观看,用户直接访问观看页时的跳转地址
firstPage 是否为第一页,值为:true/false
lastPage 是否为最后一页,值为:true/false
nextPageNumber 下一页编号
prePageNumber 上一页编号
totalPages 总页数
startRow 当前页第一条记录在总记录中的位置
endRow 当前页最后一个记录在总记录中的位置
limit 当前页纪录数
offset 当前页第一条记录在总记录中的位置

php请求示例

<?php
//引用config.php
include 'config.php';

$params = array(
  'appId' => $appId,
  'timestamp' => $timestamp,
  'pageSize' => '5',
  'categoryId' => 89380
);

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法
$params['sign'] = $sign;

$url = "http://api.polyv.net/live/v3/channel/management/list-detail?".http_build_query($params);

$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 0);
$res = curl_exec($curl);
curl_close($curl);

echo $res;
?>

签名规则(config.php文件代码查看)

http://dev.polyv.net/2018/liveproduct/l-api/rule/sign/

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

获取频道的详细设置信息

接口URL

http://api.polyv.net/live/v3/channel/basic/get

接口说明

1、接口用于获取频道的详细设置信息
2、接口支持https

支持格式

JSON

请求方式

GET

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp long 13位当前时间戳
sign string 签名值
channelId int 频道号

响应成功JSON示例:

{
    "code": 200,
    "status": "success",
    "message": "",
    "data": {
        "channelId": 108888,
        "name": "test111",
        "channelPasswd": "1234",
        "publisher": "主持人",
        "startTime": 0,
        "pageView": 111,
        "likes": 66,
        "coverImg": "//livestatic.videocc.net/uploaded/images/2019/05/fcowsdnzx8.png",
        "splashImg": "//livestatic.videocc.net/uploaded/images/2019/05/fcowsdrak0.png",
        "splashEnabled": "Y",
        "desc": "你好,这个是直播介绍11111",
        "consultingMenuEnabled": "N",
        "maxViewerRestrict": "N",
        "maxViewer": 123,
        "watchStatus": "playback",
        "watchStatusText": "回放中",
        "userCategory": {
            "categoryId": 155224,
            "categoryName": "新建分类测试",
            "userId": "edvf2fpec9",
            "rank": 3
        },
        "authSettings": [
            {
                "channelId": 108888,
                "rank": 1,
                "userId": "edvf2fpec9",
                "globalSettingEnabled": "N",
                "enabled": "Y",
                "authType": "code",
                "authTips": "欢迎观看本直播",
                "payAuthTips": "欢迎观看本次直播",
                "codeAuthTips": "欢迎观看本次直播",
                "infoAuthTips": "欢迎观看本次直播",
                "authCode": "1",
                "qcodeTips": "扫码关注XXX,获得观看码扫码关注XXX",
                "qcodeImg": "",
                "price": 999999.00,
                "watchEndTime": null,
                "validTimePeriod": null,
                "customKey": "c130221c6b",
                "customUri": null,
                "externalKey": "94c7e79aff",
                "externalUri": null,
                "externalRedirectUri": null,
                "directKey": null,
                "trialWatchEnabled": "Y",
                "trialWatchTime": 1,
                "trialWatchEndTime": null
            },
            {
                "channelId": 108888,
                "rank": 2,
                "userId": "edvf2fpec9",
                "globalSettingEnabled": "N",
                "enabled": "Y",
                "authType": "pay",
                "authTips": "欢迎观看本次直播",
                "payAuthTips": "欢迎观看本直播",
                "codeAuthTips": "验证码是1",
                "infoAuthTips": null,
                "authCode": "1",
                "qcodeTips": "",
                "qcodeImg": "",
                "price": 1.00,
                "watchEndTime": null,
                "validTimePeriod": null,
                "customKey": "17040194f4",
                "customUri": null,
                "externalKey": "693d8a540c",
                "externalUri": null,
                "externalRedirectUri": null,
                "directKey": null,
                "trialWatchEnabled": "N",
                "trialWatchTime": 1,
                "trialWatchEndTime": null
            }
        ]
    }
}

响应字段说明

参数名 类型 说明
code int 状态状态码,请求成功时为200
status string 状态值
message string 请求失败时返回的错误值
data ChannelDetailSettingModel 请求失败时为空,请求成功时为频道的详细设置信息

ChannelDetailSettingModel字段说明

参数名 类型 说明
channelId int 频道号
name string 频道名称
channelPasswd string 频道密码
publisher string 主持人名称
startTime long 直播开始时间,关闭时为0,开启时为13位毫秒级时间戳
pageView int 页面累计观看数
likes int 观看页点赞数
coverImg string 频道图标url
splashImg string 频道引导图url
splashEnabled string(取值为Y/N) 引导页开关
desc string 直播介绍
consultingMenuEnabled string(取值为Y/N) 咨询提问开关
maxViewerRestrict string(取值为Y/N) 限制最大在线观看人数开关
maxViewer int 最大在线观看人数
watchStatus string 频道的观看页状态,取值为: 频道状态,取值:live(直播中)、end(直播结束)、playback(回放中)、waiting(等待直播)
watchStatusDesc string 观看页状态描述,直播中,回放中,已结束,未开始
userCategory object 频道所属分类的信息
userCategory.categoryId int 分类ID
userCategory.categoryName string 分类名称
userCategory.rank int 分类的排序值
authSettings List 直播观看条件列表

关于ChannelAuthSetting 的参数说明请参考该接口的成功返回结果:查询直播频道观看条件

响应失败JSON示例:

参数错误

{
    "code": 400,
    "status": "error",
    "message": "param validate error",
    "data": 400
}

未输入appId

{
    "code": 400,
    "status": "error",
    "message": "appId is required.",
    "data": ""
}

appId不正确

{
    "code": 400,
    "status": "error",
    "message": "application not found.",
    "data": ""
}

时间戳错误

{
    "code": 400,
    "status": "error",
    "message": "invalid timestamp.",
    "data": ""
}

签名错误

{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}

php请求示例

<?php
//引用config.php
include 'config.php';

$channelId="183950";

$params = array(
  'appId' => $appId,
  'channelId' => $channelId,
  'timestamp' => $timestamp
);

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法

$url = "http://api.polyv.net/live/v3/channel/basic/get?appId=".$appId."&channelId=".$channelId."&timestamp=".$timestamp."&sign=".$sign;

echo file_get_contents($url);

?>

签名规则(config.php文件代码查看)

http://dev.polyv.net/2018/liveproduct/l-api/rule/sign/

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

创建并初始化频道

接口URL

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

接口说明

1、接口用于创建频道并进行相关设置
2、接口支持https

支持格式

JSON

请求方式

POST

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp long 13位当前时间戳
sign string 签名值
basicSetting json 基础设置
authSettings json 观看条件设置

注:这里的appId,timestamp,sign必须通过url传参,json数据通过请求体传参,如:
http://api.polyv.net/live/v3/channel/basic/create?appId={{appId}}&timestamp={{timestamp}}&sign={{sign}}

请求体json示例

{
    "basicSetting": {
        "name": "测试", 
        "channelPasswd": "10086", 
        "maxViewer": 20, 
        "startTime": 1557888134000
    }, 
    "authSettings": [
        {
            "rank": 1, 
            "enabled": "Y", 
            "authType": "external", 
            "externalKey": "L0EjokKI4O", 
            "externalUri": "http://demo.polyv.net/chenwb/live-validate.php"
        }
    ]
}

basicSetting详细说明

参数名 必选 类型 说明
name string 频道名称
channelPasswd string 频道密码,长度不能超过16位
autoPlay int 是否自动播放,0/1,默认1
playerColor string 播放器控制栏颜色,默认:#666666
scene string 直播场景:
alone 活动拍摄
ppt 三分屏
topclass 大班课
categoryId int 新建频道的所属分类,如果不提交,则为默认分类(分类ID可通过“获取直播分类”接口得到)
maxViewer int 最大同时在线人数
startTime long 直播开始时间,13位时间戳
desc string 直播介绍的内容
publisher string 主持人

authSettings详细说明

详细的数据参数,参考 更新观看条件 的请求参数部分

响应成功JSON示例:

{
    "code": 200, 
    "status": "success", 
    "message": "", 
    "data": {
        "channelId": 323158, 
        "userId": "b0f7041324", 
        "name": "测试", 
        "publisher": null, 
        "description": "", 
        "url": "rtmp://push-c1.videocc.net/recordf/b0f704132420190515115309303", 
        "stream": "b0f704132420190515115309303", 
        "logoImage": "", 
        "logoOpacity": 1, 
        "logoPosition": "tr", 
        "logoHref": "", 
        "coverImage": "", 
        "coverHref": "", 
        "waitImage": "", 
        "waitHref": "", 
        "cutoffImage": "", 
        "cutoffHref": "", 
        "advertType": "NONE", 
        "advertDuration": 0, 
        "advertWidth": 0, 
        "advertHeight": 0, 
        "advertImage": "", 
        "advertHref": "", 
        "advertFlvVid": "", 
        "advertFlvUrl": "", 
        "playerColor": "#FFFFFF", 
        "autoPlay": false, 
        "warmUpFlv": "", 
        "passwdRestrict": false, 
        "passwdEncrypted": "", 
        "isOnlyAudio": "N", 
        "isLowLatency": "N", 
        "m3u8Url": "http://pull-c1.videocc.net/recordf/b0f704132420190515115309303.m3u8?auth_key=1557892389-0-0-d1cab3b24dc910dc22e3ab60915f682b", 
        "m3u8Url1": "", 
        "m3u8Url2": "", 
        "m3u8Url3": "", 
        "channelLogoImage": null, 
        "scene": "topclass", 
        "currentTimeMillis": 1557892389591
    }
}

响应字段说明

参数名 类型 说明
status string 状态值
result object 响应的结果
channelId string 直播频道ID
userId string 直播用户ID
name string 直播频道名称
description string 直播频道描述
url string 直播推流地址
stream string 直播流名称
logoImage string 播放器logo
logoOpacity float Logo不透明度,1表示完全不透明
logoPosition string Logo位置
logoHref string Logo的跳转链接
coverImage string 播放前显示的封面图
coverHref string 封面图的跳转链接
waitImage string 等待推流时的显示图片
waitHref string 等待推流时显示图片的跳转链接
cutoffImage string 切断流时的显示图片
cutoffHref string 切断流时显示图片的跳转链接
advertType string 广告类型
advertDuration string 广告时长
advertWidth string 广告区域宽度
advertHeight string 广告区域高度
advertImage string 图片广告
advertHref string 广告的跳转链接
advertFlvVid string 视频广告ID
advertFlvUrl string 视频广告链接
playerColor string 播放器控制栏颜色
autoPlay boolean 自动播放
warmUpFlv string 一开始的暖场视频
passwdRestrict boolean 观看密码限制,需要输入观看密码才能播放流
passwdEncrypted string 观看密码加密后的密文
isOnlyAudio string 仅推音频流
isLowLatency string 低延迟
m3u8Url string 直播拉流(播放)m3u8地址
m3u8Url1 string 直播拉流(播放)m3u8地址1
m3u8Url2 string 直播拉流(播放)m3u8地址2
m3u8Url3 string 直播拉流(播放)m3u8地址3
currentTimeMillis timestamp 服务器返回的时间戳(毫秒)

响应失败JSON示例:

参数错误

{
    "code": 400,
    "status": "error",
    "message": "param validate error",
    "data": 400
}

未输入appId

{
    "code": 400,
    "status": "error",
    "message": "appId is required.",
    "data": ""
}

appId不正确

{
    "code": 400,
    "status": "error",
    "message": "application not found.",
    "data": ""
}

时间戳错误

{
    "code": 400,
    "status": "error",
    "message": "invalid timestamp.",
    "data": ""
}

签名错误

{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}

Json格式错误或字段类型不对

{
    "code": 400,
    "status": "error",
    "message": "json format error",
    "data": 400
}

字段说明

参数名 说明
code 状态码,成功为200,签名失败为403,参数错误为400,服务端错误为500
status 成功为success,错误时为error
message 成功为"",错误时为错误描述信息
data 成功时为true,错误时为""

php请求示例

<?php
//引用config.php
include '/srv/http/live/config.php';
$params = array(
  'appId' => $appId,
  'timestamp' => $timestamp
);

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法

$json = '{"basicSetting":{"name":"测试","channelPasswd":"10086","maxViewer":20},"authSettings":[{"rank":1,"enabled":"Y","authType":"external","externalKey":"L0EjokKI4O","externalUri":"http://demo.polyv.net/chenwb/live-validate.php"}]}';

$params["sign"] = $sign;
$url="http://api.polyv.net/live/v3/channel/basic/create?".http_build_query($params);

function post($url, $post_data = '', $timeout = 5){
   $ch = curl_init();
   curl_setopt ($ch, CURLOPT_URL, $url);
   curl_setopt ($ch, CURLOPT_POST, 1);
   if($post_data != ''){
      curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
   }

   curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
   curl_setopt($ch, CURLOPT_HEADER, false);
   curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . strlen($post_data)));
   $file_contents = curl_exec($ch);
   curl_close($ch);
   return $file_contents;
}

echo post($url,$json);
?>

Java请求示例

import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import com.live.util.EncryptionUtils;

public class Demo {

    private static RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(15000).setConnectTimeout(15000)
            .setConnectionRequestTimeout(15000).build();

    public static void main(String[] args) {

        String url = "http://api.polyv.net/live/v3/channel/basic/create";
        String appId = "appId";
        String key = "appSecret";
        Map<String, String> map = new HashMap<>();
        String timestamp = Long.toString(System.currentTimeMillis());
        map.put("appId", appId);
        map.put("timestamp", timestamp);

        String sign = getSign(map, key);
        map.put("sign", sign);

        String body = "{\"basicSetting\":{\"name\":\"测试\",\"channelPasswd\":\"10086\",\"maxViewer\":20," +
                "\"startTime\":\"1\"},\"authSettings\":[{\"rank\":1,\"enabled\":\"Y\",\"authType\":\"external\"," +
                "\"externalKey\":\"L0EjokKI4O\",\"externalUri\":\"http://demo.polyv.net/chenwb/live-validate.php\"}]}";
        String content = sendHttpPost(url, map, body);
        System.out.println(content);

    }

    /**
     * 发送 post请求
     * @param httpUrl 地址
     * @param maps 参数
     */
    public static String sendHttpPost(String httpUrl, Map<String, String> maps, String body) {
        StringBuilder url = new StringBuilder();
        url.append(httpUrl).append("?");
        for (Map.Entry<String, String> map : maps.entrySet()) {
            url.append(map.getKey()).append("=").append(map.getValue()).append("&");
        }
        String urlStr = url.toString().substring(0, url.length() - 1);

        System.out.println(urlStr);
        // 创建httpPost
        HttpPost httpPost = new HttpPost(urlStr);
        try {
            StringEntity entity = new StringEntity(body, Charset.forName("UTF-8"));
            httpPost.setEntity(entity);
        } catch (Exception e) {
            // ...
        }
        return sendHttpPost(httpPost);
    }

    /**
     * 发送Post请求
     * @param httpPost
     * @return
     */
    private static String sendHttpPost(HttpPost httpPost) {
        CloseableHttpClient httpClient = null;
        CloseableHttpResponse response = null;
        HttpEntity entity;
        String responseContent = null;
        try {
            // 创建默认的httpClient实例.
            httpClient = HttpClients.createDefault();
            httpPost.setConfig(requestConfig);
            // 执行请求
            response = httpClient.execute(httpPost);
            entity = response.getEntity();
            responseContent = EntityUtils.toString(entity, "UTF-8");
        } catch (Exception e) {
            // ...
        } finally {
            try {
                // 关闭连接,释放资源
                if (response != null) {
                    response.close();
                }
                if (null != httpPost) {
                    httpPost.releaseConnection();
                }
                if (httpClient != null) {
                    httpClient.close();
                }
            } catch (IOException e) {
                // ...
            }
        }
        return responseContent;
    }

    /**
     * 根据map里的参数构建加密串
     * @param map
     * @param secretKey
     * @return
     */
    protected static String getSign(Map<String, String> map, String secretKey) {
        Map<String, String> params = paraFilter(map);
        // 处理参数,计算MD5哈希值
        String concatedStr = concatParams(params);
        String plain = secretKey + concatedStr + secretKey;
        String encrypted = EncryptionUtils.md5Hex(plain);

        // 32位大写MD5值
        return encrypted.toUpperCase();
    }

    /**
     * 对params根据key来排序并且以key1=value1&key2=value2的形式拼接起来
     * @param params
     * @return
     */
    private static String concatParams(Map<String, String> params) {
        List<String> keys = new ArrayList<>(params.keySet());
        Collections.sort(keys);

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < keys.size(); i++) {
            String key = keys.get(i);
            String value = params.get(key);

            sb.append(key).append(value);
        }

        return sb.toString();
    }

    /**
     * 除去数组中的空值和签名参数
     * @param sArray 签名参数组
     * @return 去掉空值与签名参数后的新签名参数组
     */
    private static Map<String, String> paraFilter(Map<String, String> sArray) {

        Map<String, String> result = new HashMap<>();

        if (sArray == null || sArray.size() <= 0) {
            return result;
        }

        for (String key : sArray.keySet()) {
            String value = sArray.get(key);
            if (value == null || value.equals("") || key.equalsIgnoreCase("sign")
                    || key.equalsIgnoreCase("sign_type")) {
                continue;
            }
            result.put(key, value);
        }

        return result;
    }

}

签名规则(config.php文件代码查看)

http://dev.polyv.net/2018/liveproduct/l-api/rule/sign/

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

(子)频道授权登录接口

接口URL

https://live.polyv.net/teacher/auth-login

接口说明

1、接口用于获取token后授权登录
2、接口支持https

支持格式

JSON

请求方式

GET

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
channelId string 频道号或子频道号
token string 通过频道token子频道token设置的token串,10秒内且一次验证有效
redirect string 完成授权后重定向地址,使用url编码,如导播台统计分析

响应成功示例:

有填写了redirect,并且验证成功则会重定向到相应的网页,否则默认重定向到相应的后台,验证失败则会重定向到频道登录页

请求示例

https://live.polyv.net/teacher/auth-login?channelId=195770&token=testtoken&redirect=http%3a%2f%2flive.polyv.net%2fnewGuide.html%3fchannel%3d195770
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

禁止直播频道推流

旧版接口地址

接口URL

http://api.polyv.net/live/v2/stream/{channelId}/cutoff

接口说明

1、作用:禁止频道号推流
2、接口支持https协议
3、接口URL中的{channelId}为 频道ID

支持格式

JSON

请求方式

POST

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp string 当前13位毫秒级时间戳,3分钟内有效
userId string 直播账号ID
sign string 签名,为32位大写的MD5值

响应成功JSON示例:

{
"code": 200,
"status": "success",
"message": "",
"data": "success"
}

响应异常JSON示例:

{
"code": 400,
"status": "error",
"message": "invalid timestamp.",
"data": ""
}
{
"code": 403,
"status": "error",
"message": "invalid signature.",
"data": ""
}

字段说明

参数名 类型 说明
code int http code值
status string 状态值
message string 提示的信息
data string 相应的结果

php请求示例

<?php
//接口需要的参数(非sign)赋值
$userId = "XXXXXXXX";
$channelId = "127075";

$params = array(
    'appId'=>$appId,
    'userId'=>$userId,
    'timestamp'=>$timestamp
  );

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法

$url = "http://api.polyv.net/live/v2/stream/$channelId/cutoff?appId=$appId&timestamp=$timestamp&userId=$userId&sign=$sign";

$ch = curl_init() or die ( curl_error() );
curl_setopt( $ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 360);
$response = curl_exec ( $ch );
curl_close ( $ch );
echo $response;

?>

签名规则(config.php文件代码查看)

http://dev.polyv.net/2018/liveproduct/l-api/rule/sign/

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...