获取当前推流设置方式的接口

接口URL

https://api.polyv.net/live/v3/channel/stream/get

接口说明

(接口调用有频率限制,详细请查看)

1、用于获取当前推流设置方式
2、接口支持https

返回结果支持格式

JSON

请求方式

GET

请求数限制

TRUE

请求参数

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

响应成功JSON示例:

{
    "code": 200,
    "status": "success",
    "message": "",
    "data": {
        "streamType": "pull",
        "pullUrl": "rtmp://xxxxxxx"
    }
}

响应失败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 int 响应代码,成功为200,失败为400,签名错误为401,异常错误500
status string 成功为success,失败为error
message string 错误时为错误提示消息
data object 响应结果集
data.streamType string 直播方式:client 客户端推流,disk 硬盘推流,audio 音频直播, pull 拉流直播
data.pullUrl string 拉流地址

Java请求示例

public static void testgetStreamInfo() {
        String url = "https://api.polyv.net/live/v3/channel/stream/get";
        // 用户对应的appId和加密串
        String appId = "xxxxxxxxx";
        String appSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxx";
        int channelId = 10001;
        Map<String, String> params = new HashMap<>();
        params.put("channelId", String.valueOf(channelId));
        PolyvTool.setLiveSign(params, appId, appSecret);
        // 调用Polyv的httpClient工具类发送请求
        String content = HttpClientUtil.getInstance()
                .sendHttpGet(url + "?" + PolyvTool.mapJoinNotEncode(params));
        System.out.println(content);
    }

签名规则(PolyvTool.java文件代码查看)

https://dev.polyv.net/2020/liveproduct/l-api/rule/live-api-java-detail/

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

拉流直播开始接口

接口URL

https://api.polyv.net/live/v3/channel/stream/start-pull-stream

接口说明

(接口调用有频率限制,详细请查看)

1、执行开始拉流直播操作
2、接口支持https

返回结果支持格式

JSON

请求方式

POST

请求数限制

TRUE

请求参数

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

响应成功JSON示例:

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

响应失败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 int 响应代码,成功为200,失败为400,签名错误为401,异常错误500
status string 成功为success,失败为error
message string 错误时为错误提示消息
data object 响应结果集

Java请求示例

public static void testStartPullStream() {
        String url = "https://api.polyv.net/live/v3/channel/stream/start-pull-stream";
        // 用户对应的appId和加密串
        String appId = "xxxxxxxxx";
        String appSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxx";
        int channelId = 10001;
        String pullUrl = "rtmp://xxxx";
        Map<String, String> params = new HashMap<>();
        params.put("channelId", String.valueOf(channelId));
        params.put("pullUrl", pullUrl);
        PolyvTool.setLiveSign(params, appId, appSecret);
        // 调用Polyv的httpClient工具类发送请求
        String content = HttpClientUtil.getInstance()
                .sendHttpPost(url, params);
        System.out.println(content);
    }

签名规则(PolyvTool.java文件代码查看)

https://dev.polyv.net/2020/liveproduct/l-api/rule/live-api-java-detail/

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

批量添加观看白名单

接口URL

https://api.polyv.net/live/v3/channel/auth/batch-add-white-list

接口说明

(接口调用有频率限制,详细请查看)

1、作用:用于批量添加观看白名单
2、接口支持https协议

返回结果支持格式

JSON

请求方式

POST

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp string 当前时间的秒级时间戳(13位)
sign string 签名,为32位大写的MD5值
channelId int 频道号(传频道号则添加频道观看白名单,不传频道号则添加全局观看白名单)
rank int 主要观看条件为1,次要观看条件为2
whiteLists array 请求体参数, 白名单列表
whiteLists.code string 请求体的参数, 白名单会员码
whiteLists.name string 请求体的参数, 白名单昵称

操作成功响应示例

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

操作失败响应示例

签名错误

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

白名单列表格式错误

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

响应字段说明

名称 类型 说明
code string 响应代码,成功为200,失败为400,签名错误为401,异常错误500
status string 成功为success,失败为error
message string 错误时为错误提示消息
data string 成功返回信息

java请求示例

private void testBatchAddWhiteList() {
        String url = "https://api.polyv.net/live/v3/channel/auth/batch-add-white-list";
        // appId和加密串
        String appId = "xxxxxxx";
        String appSecret = "xxxxxxxxxxxxxxxxxx";
        String channelId = "10001";
        String rank = "1";

        Map<String, String> params = new HashMap<>();
        params.put("channelId", channelId);
        params.put("rank", rank);

        String body = "{\"whiteLists\": [{\"code\":\"1111\", \"name\":\"2222\"},{\"code\":\"1111eee\", \"name\":\"2222eee\"}]}";

        // 调用Polyv的工具类方法设置sign
        PolyvTool.setLiveSign(params, appId, appSecret);
        String content = HttpClientUtil.getInstance()
                .sendHttpPost(url, params, body);
        System.out.println(content);
    }

签名规则及工具文件代码

https://dev.polyv.net/2020/liveproduct/l-api/rule/live-api-java-detail/

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

批量新增白名单

接口URL

http://api.polyv.net/live/v3/channel/auth/upload-whitelist

接口说明

(接口调用有频率限制,详细请查看)

1、接口用于设置频道或全局观看条件中的白名单列表
2、接口支持https
3、为了保证观众正常使用观看页,接口会对您上传的excel 文件进行检查,具体限制为:
    a.会员码不可为空,不可重复,不可为频道号、嘉宾号、助教号,会员码不区分大小写;
    b.昵称不可为空,不可重复,不能包含严禁词。

请求方式

POST

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp long 13位当前时间戳
sign string 签名值
channelId int 频道号,无该参数为全局设置
rank int 主要观看条件为1,次要观看条件为2
file file 白名单文件(白名单模板

响应成功JSON示例:

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

响应失败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": ""
}

频道Id格式错误

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

频道不存在

{
    "code": 404,
    "status": "error",
    "message": "channel not found.",
    "data": ""
}

频道Id非法错误

{
    "code": 400,
    "status": "error",
    "message": "illegal channel id: %s",
    "data": ""
}

excel 解析错误

{
    "code": 400,
    "status": "error",
    "message": "whitelist excel parse error.",
    "data": ""
}

excel 没有数据

{
    "code": 400,
    "status": "error",
    "message": "whitelist excel no data.",
    "data": ""
}

白名单内容校验错误

{
    "code": 400,
    "status": "error",
    "message": "whitelist validate error",
    "data": {
        "nameEmptyList": [
            "withoutname1",
            "withoutname2"
        ],
        "phoneEmptyList": [
            "withoutcode1",
            "withoutcode2"
        ],
        "nameDuplicateList": [
            {
                "word": "sameName",
                "count": 2
            }
        ],
        "storageNameDuplicateList": [],
        "phoneDuplicateList": [
            {
                "word": "samecode",
                "count": 2
            }
        ],
        "storagePhoneDuplicateList": [
            {
                "word": "storagecode",
                "count": 1
            }
        ],
        "illegalNameList": [
            {
                "word": "contains forbidword",
                "badword": "forbidword"
            }
        ],
        "illegalPhoneList": [
            "1803949"
        ],
        "correct": false
    }
}

字段说明

字段名称 字段类型 说明
code int 状态码,成功为200,签名失败为403,参数错误为400,服务端错误为500
status String 成功为success,错误时为error
message String 成功为"",错误时为错误描述信息
data ParseWhiltlistErrorModel 当错误类型为 白名单内容错误("whitelist validate error")时返回具体错误,成功和其他错误时返回null

ParseWhiltlistErrorModel--解析白名单内容错误
说明:

字段名称 字段类型 说明
nameEmptyList List<String> 名称为空的白名单对应的会员码列表
phoneEmptyList List<String> 会员码为空的白名单对应的名称列表
illegalPhoneList List<String> 非法会员码列表
nameDuplicateList List<DuplicateRecord> 仅在上传文件中名称重复的记录列表
storageNameDuplicateList List<DuplicateRecord> 上传文件中与原有记录的名称重复的记录列表
phoneDuplicateList List<DuplicateRecord> 仅在上传文件中会员码重复的记录列表
storagePhoneDuplicateList List<DuplicateRecord> 上传文件中与原有记录的会员码重复的记录列表
illegalNameList List<IllegalNameRecord> 非法名称列表

DuplicateRecord--重复记录

字段名称 字段类型 说明
word string 重复的名称或会员码
count int 重复次数

IllegalNameRecord--非法名称记录

字段名称 字段类型 说明
word string 非法名称
badword string 触发的严禁词

php请求示例

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

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

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

// 拼接需要签名的参数
$params["sign"] = $sign;
$url="http://api.polyv.net/live/v3/channel/auth/upload-whitelist?".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);
   $file_contents = curl_exec($ch);
   curl_close($ch);
   return $file_contents;
}

// 文件不参与签名
$file['file'] = new CURLFile(realpath("test.xls"));
echo post($url, $file);
?>

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

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

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

发送聊天室商品信息socket接口

接口URL

http://api.polyv.net/live/v3/channel/chat/send-product-msg

接口说明

(接口调用有频率限制,详细请查看)

1、发送聊天室socket商品信息
2、接口支持https
3、接口请求频次限制为每分钟30次

返回结果支持格式

JSON

请求方式

POST

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp long 当前13位毫秒级时间戳,3分钟内有效
sign string 签名,为32位大写的MD5值
channelId int 频道号
status int 操作类型,必须为整型
1:上架商品
2:下架商品
3:删除商品
4:新增商品
5:编辑商品
6:上移
7:下移
目前这个status可以自定义,0-20为平台参数,21及其以上客户可自定义

请求体信息

// 如下json,只有发送这种指定类型的json数据,polyv平台观看页才可以响应数据
// 如果发送其他自定义格式,需要自己开发观看页,接收到改socket 消息时自行进行处理。
// 请求体长度限制1000字符,如果超过,会返回错误。
// 新增、编辑、上架
{
    "cover": "//liveimages.videocc.net/uploadimage/20200805/chat_img_1851013_15966102016428.jpeg?x-oss-process=image/crop,x_625,y_267,w_668,h_668",
    "link": "http://www.msuno.cn",
    "name": "123",
    "price": 21,
    "productId": 5324,
    "rank": 2,
    "realPrice": 12,
    "status": 1
}
// 下架(商品Id)
{
    "productId": 5324
}
// 上移、下移(两个商品移动的id和排序和状态)
[
    {
        "productId": 5321,
        "rank": 2,
        "status": 1
    },
    {
        "productId": 5324,
        "rank": 1,
        "status": 2
    }
]

响应成功JSON示例:

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

响应失败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": "param should not be empty: msg",
    "data": ""
}

请求体数据过长

{
    "code": 400,
    "status": "error",
    "message": "param length is incorrect: 1000",
    "data": ""
}

字段说明

参数名 说明
code 响应代码,成功为200,失败为400,签名错误为401,异常错误500
status 成功为success,失败为error
message 错误时为错误提示消息
data 暂无作用,不可作为判断依据

Java请求示例

public static void main(String[] args) {
        String url = "http://api.polyv.net/live/v3/channel/chat/send-product-msg";
        // 用户对应的appId和加密串
        String appId = "xxxxxx";
        String appSecret = "xxxxxxxxxxxxxxxxxxxxxxx";
        // 查询频道号
        String channelId = "1796673";
        Map<String, String> params = new HashMap<>();
        params.put("channelId", channelId);
        params.put("status", "1");
        // 调用Polyv的工具类方法设置sign
        PolyvTool.setLiveSign(params, appId, appSecret);
        // 调用Polyv的httpClient工具类发送请求
        String content = HttpClientUtil.getInstance()
                .sendHttpPostJson(url + "?" + PolyvTool.mapJoinNotEncode(params), "json请求体", null);
        System.out.println(content);
    }

签名规则(PolyvTool.java文件代码查看)

https://dev.polyv.net/2020/liveproduct/l-api/rule/live-api-java-detail/

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

批量获取点播视频完成度

接口URL

https://api.polyv.net/v2/video/engagement/{userId}/getList

接口说明

(接口调用有频率限制,详细请查看)

支持批量分页获取视频观看完成度
支持https

返回结果支持格式

JSON

请求方式

POST,GET

请求数限制

TRUE

请求参数

参数名 必选 类型及范围 说明
userid true string 路径参数,用户userId
ptime true float 13位的当前时间毫秒级时间戳
sign true string 签名
field true string 查询条件字段,取值范围:video 根据视频搜索;viewer 根据观众搜索
fieldValue true string 查询条件的值,如果filed = video 填写vid;如果field = viewer 填写 viewerId
filterValue false string 过滤条件,如果field = video,可填写多个以,分隔的viewerId进行过滤;如果field = viewer,可填写多个以,分隔的vid进行过滤
page false int 第几页,默认1
size false int 每一页大小

返回结果

{
    "code": 200,
    "status": "success",
    "message": "success",
    "data": {
        "pageSize": 20,
        "pageNumber": 1,
        "totalItems": 1,
        "contents": [
            {
                "vid": "ee7fe7fbdadafe381e8e100669144e51_e",
                "viewerId": "1111",
                "watchPercentage": 0.05
            }
        ]
    }
}

请求失败返回json示例

// 签名错误
{
    "code": 400,
    "status": "error",
    "message": "the sign is not right.",
    "data": ""
}
// 类型错误
{
    "code": 400,
    "status": "error",
    "message": "field type error",
    "data": ""
}
// ...

字段说明

字段 类型 说明
code int 请求返回状态码
status string 请求返回状态
message string 请求返回信息
data.pageSize int 每页大小
data.pageNumber int 第几页
data.totalItems int 总数量
data.content[0].vid string 视频vid
data.content[0].viewerId string 观众viewerId
data.content[0].watchPercentage float 观看完成度

Java示例代码

public class Test {

    public static void main(String[] args) throws Exception {
        String userId = "ee7fe7fbda";
        String secretkey = "2owGBAZsAY";
        String url = "https://api.polyv.net/v2/video/engagement/%s/getList";

        Map<String, String> maps = new HashMap<>();
        maps.put("field", "viewer");
        maps.put("fieldValue", "1111");
        maps.put("filterValue", "");
        maps.put("sign", getSign(maps, secretkey));

        url += "?" + buildUrl(maps);
        url = String.format(url, userId);
        HttpClient client = new HttpClient();
        GetMethod getMethod = new GetMethod(url);
        client.executeMethod(getMethod);
        System.out.println(url);
        System.out.println(getMethod.getResponseBodyAsString());
    }

    public static String buildUrl(Map<String, String> maps) {
        List<String> tmp = new ArrayList<>();
        for (Map.Entry<String, String> key : maps.entrySet()) {
            tmp.add(key.getKey() + "=" + key.getValue());
        }
        return String.join("&", tmp);
    }
}

sign的生成规则

签名规则

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

创建频道接口

接口URL

https://api.polyv.net/live/v3/channel/create-cpic-channel

接口说明

(接口调用有频率限制,详细请查看)

1、接口用于创建频道
2、接口支持https

请求方式

POST

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp long 当前13位毫秒级时间戳,3分钟内有效
sign string 签名,32位大写MD5值
name string 频道名称,限制长度为60
scene string 直播场景,三分屏:ppt,普通直播:alone
channelObject string 频道属性,in 对内,out 对外
startTime long 直播开始时间,13位的时间戳
endTime long 直播结束时间,13位的时间戳
authSecretKey String 用于请求用户信息的secretKey
airUrl String 用于获取用户信息的自定义接口地址
airRedirectUrl String 观众直接访问Polyv观看页,会跳转到该地址
coverImage string 频道的封面图片地址,如果需要上传图片可以先通过上传图片接口:上传图片资源 得到图片地址用于设置频道的封面图片地址

响应成功JSON示例:

// 创建成功
{
    "code":200,
    "status":"success",
    "message":"",
    "data":{
        "channelId":1830948,
        "passwd":"45a2d6",
        "teacherLoginUrl":"https://live.polyv.net/teacher.html",
        "teacherClientUrl":"https://live.polyv.net/start-client.html?channelId=1830948",
        "watchUrl":"https://live.polyv.cn/watch/1830948",
        "assistant":{
            "passwd":"90983",
            "loginUrl":"https://live.polyv.net/teacher.html",
            "account":"0011830948"
        },
        "guest":{
            "webStartUrl":"https://live.polyv.net/web-start/guest?channelId=0051830948",
            "passwd":"098653",
            "account":"0051830948"
        },
        "authSecretKey":"fp4mt33n3h"
    }
}

响应失败JSON示例:

// 签名错误
{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}
// 未输入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": 400,
    "status": "error",
    "message": "channel name is required.",
    "data": ""
}
// 频道名称过长
{
    "code": 400,
    "status": "error",
    "message": "channel name is over length.",
    "data": ""
}
// channelObject非法
{
    "code": 400,
    "status": "error",
    "message": "channelobject not right.",
    "data": ""
}
// 非法的直播场景值
{
    "code": 400,
    "status": "error",
    "message": "scene not right.",
    "data": ""
}
// 超过了能创建的频道数的最大值
{
    "code": 400,
    "status": "error",
    "message": "cannot create more than xx channels.",
    "data": ""
}

字段说明

参数名 说明
code 响应代码,成功为200,失败为400,签名错误为403,异常错误500
status 成功为success,失败为error
message 错误时为错误提示消息
data 响应数据
channelId 频道ID
passwd 频道密码
teacherLoginUrl 主讲登录地址
teacherClientUrl 主讲人客户端启动链接
watchUrl 观看链接
authSecretKey 请求用户信息接口的secretKey
assistant 助教相关信息
assistant.account 助教账号
assistant.passwd 助教密码
assistant.loginUrl 助教登录地址
guest 嘉宾相关信息
guest.account 嘉宾账号
guest.passwd 嘉宾密码
guest.webStartUrl 嘉宾登录网页开播端地址

php请求示例

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

$params = array(
  'appId' => $appId,
  'timestamp' => $timestamp,
  'name' =>  'channel name',
  'channelObjet' => 'in',
  'startTime' => 133333345553,
  'endTime' => 133333345553,
  'coverImage' => 133333345553,
  'scene' => 'alone'  
);

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

$url = "http://api.polyv.net/live/v3/channel/create-cpic-channel?".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, 1);
$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/v2/statistics/{channelId}/viewlog

接口说明

(接口调用有频率限制,详细请查看)

1、作用:分页获取频道的观看日志
2、接口支持https协议
3、接口URL中的{channelId}为 频道ID

返回结果支持格式

JSON

请求方式

GET

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp string 当前13位毫秒级时间戳,3分钟内有效
page string 页数
pageSize string 每页显示的数据条数,默认每页显示1000条数据
currentDay 请查看下方注意点 string 查询日期,格式:yyyy-MM-dd
startTime 请查看下方注意点 string 查询开始时间,为13位毫秒级时间戳
endTime 请查看下方注意点 string 查询结束时间,13位毫秒级时间戳
param1 string 观看用户ID
param2 string 观看用户昵称
param3 string 观看日志类型,取值 vod 表示观看回放,取值live 表示直播
sign string 签名,32位大写MD5值
viewLogType string 播放日志,live:直播日志,vod:点播日志,默认值为:live

注意
1. 如果查询一段时间的记录,可以传:startTime、endTime (startTime和endTime 必须在同一个月),如果查询某天的记录,则传currentDay;
2. startTime、endTime 和 currentDay不能都不传;
3. currentDay与startTime、endTime 同时传将使用currentDay的值。

响应成功JSON示例:

{
    "code": 200, 
    "status": "success", 
    "message": "", 
    "data": {
        "pageNumber": 1, 
        "totalItems": 3, 
        "contents": [
{
"playId": "1520501687122X1438160",
"userId": "1c6dc3c666",
"channelId": 151462,
"videoId": "3828390191ed924fbb387395ae6f3af5_3",
"playDuration": 341,
"stayDuration": 361,
"flowSize": 10028116,
"sessionId": "eyz0awxrlh",
"param1": "1520499775580",
"param2": "广州观众/78614",
"param3": "live",
"param4": "",
"param5": "",
"ipAddress": "59.42.41.1",
"country": "中国",
"province": "广东",
"city": "广州",
"isp": "/南沙区电信",
"referer": "https://live.polyv.cn/watch/151462",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36",
"operatingSystem": "Mac OS X",
"browser": "Chrome",
"isMobile": "N",
"currentDay": "2018-03-08",
"createdTime": 1520501705000,
"lastModified": 1520504494000
}, 
{
"playId": "1520501157256X1429802",
"userId": "1c6dc3c666",
"videoId": "3828390191ed924fbb387395ae6f3af5_3",
"channelId": 151462,
"playDuration": 29,
"stayDuration": 528,
"flowSize": 1068201,
"sessionId": "eyz0awxrlh",
"param1": "1520499775580",
"param2": "广州观众/78614",
"param3": "live",
"param4": "",
"param5": "",
"ipAddress": "59.42.41.1",
"country": "中国",
"province": "广东",
"city": "广州",
"isp": "/南沙区电信",
"referer": "https://live.polyv.cn/watch/151462",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36",
"operatingSystem": "Mac OS X",
"browser": "Chrome",
"isMobile": "N",
"currentDay": "2018-03-08",
"createdTime": 1520501664000,
"lastModified": 1520504494000
}, 
            {
"playId": "1520500551108X1714565",
"userId": "1c6dc3c666",
"channelId": 151462,
"videoId": "3828390191ed924fbb387395ae6f3af5_3",
"playDuration": 18,
"stayDuration": 20,
"flowSize": 3048444,
"sessionId": "eyz0awxrlh",
"param1": "1520499775580",
"param2": "广州观众/78614",
"param3": "live",
"param4": "",
"param5": "",
"ipAddress": "59.42.40.205",
"country": "中国",
"province": "广东",
"city": "广州",
"isp": "/南沙区电信",
"referer": "https://live.polyv.cn/watch/151462",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36",
"operatingSystem": "Mac OS X",
"browser": "Chrome",
"isMobile": "N",
"currentDay": "2018-03-08",
"createdTime": 1520500572000,
"lastModified": 1520503294000
}
        ], 
        "endRow": 3, 
        "startRow": 1, 
        "firstPage": true, 
        "lastPage": true, 
        "nextPageNumber": 1, 
        "prePageNumber": 1, 
        "totalPages": 1, 
        "limit": 3, 
        "offset": 0
    }
}

响应失败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": ""
}

未输入currentDay

{
    "code": 400,
    "status": "error",
    "message": "currentDay is empty.",
    "data": ""
}

频道不存在

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

非法的频道ID

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

字段说明

参数名 说明
code 响应的状态码,例如:200
status 响应状态
message 异常错误信息
data 响应结果集
pageNumber 当前的页数
totalItems 总的条数
contents 查询的结果列表
playId 表示此次播放动作的ID
userId 用户ID
channelId 频道号
videoId 视频vid,点播日志才有输出
playDuration 播放时长
stayDuration 停留时长
flowSize 流量大小
sessionId 直播场次ID
param1 使用POLYV观看页的观众ID
param2 使用POLYV观看页的观众昵称
param3 观看类型:取值 live(直播)、vod(回放)
param4/5 POLYV系统参数
ipAddress IP地址
country 国家
province 省份
city 城市
isp ISP运营商
referer 播放视频页面地址
userAgent 用户设备
operatingSystem 操作系统
browser 浏览器
isMobile 是否为移动端
currentDay 日志查询日期 (格式为:yyyy-MM-dd)
createdTime 日志创建日期 (13位时间戳)
lastModified 日志更新日期 (13位时间戳)
firstPage 是否为第一页,值为:true/false
lastPage 是否为最后一页,值为:true/false
nextPageNumber 下一页编号
prePageNumber 上一页编号
totalPages 总页数
startRow 当前页第一个视频在回放视频中的位置
endRow 当前页最后一个视频在回放视频中的位置
limit 当前页视频个数

php请求示例

<?php

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

//接口需要的参数(非sign)赋值
$channelId = "124545";
$currentDay = "2018-03-12";  
$page = "1"; //页数
$pageSize="10";//每页显示的数据

$params = array(
    'appId'=>$appId,
    'currentDay'=>$currentDay,
    'page'=>$page,
    'pageSize'=>$pageSize,
    'timestamp'=>$timestamp
  );

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

//接口请求url
$url = "http://api.polyv.net/live/v2/statistics/$channelId/viewlog?appId=$appId&currentDay=$currentDay&page=$page&pageSize=$pageSize&timestamp=$timestamp&sign=$sign";

//输出接口请求结果
echo file_get_contents($url);

?>

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

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

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

异步裁剪直播录制文件

接口URL

https://api.polyv.net/live/v3/channel/record/clip

接口说明

(接口调用有频率限制,详细请查看)

1、接口用于裁剪直播录制视频文件
2、该接口为文件裁剪过程为异步处理过程
3、接口支持https
4、该接口裁剪视频的最小粒度仅支持到单位为秒(s)的裁剪

请求方式

POST

请求参数

参数名 必选 类型 说明
appId string 管理员的appId
timestamp long 13位当前时间戳
sign string 签名值
channelId string 频道ID
fileId string 文件ID
deleteTimeFrame string 要裁剪移除的时间区间
误差说明:
(1)裁剪区间存在一定的时间误差;
(2)误差原因:由于m3u8的视频裁剪是精确到每片ts, 所以裁剪时会判断裁剪要移除的时间区间所包含的ts片,进行裁剪移除;
格式要求:
(1)start、end值是单位为秒的数值,格式为:[{"start":xx, "end":xx},{"start":xx, "end":xx}];
(2)多个区间请按照时间顺序从小到大排列;
(3)时间区间不允许重叠;
(4)时间区间不得超过100个限制;
【示例:要裁剪移除的是第1s到第14s, 以及第25s到第30s的区间,则传入的字符串为 [{"start":1, "end":14},{"start":25, "end":30}] 】
callbackUrl string 裁剪成功或失败回调的url(回调详细请查看文档最后 " 回调说明 " 一栏)
autoConvert string 是否自动转存回放(Y:是,N:否)不传默认为N
fileName string 裁剪后文件名

响应成功JSON示例:

// 提交的视频正在裁剪处理中
{
    "code": 200,
    "status": "success",
    "message": "",
    "data": "submit success."
}

响应失败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": "record file not exist",
    "data": ""
}
// 要裁剪的文件无m3u8地址
{
    "code": 400,
    "status": "error",
    "message": "record file m3u8 not exist",
    "data": ""
}
// 要裁剪的文件无m3u8地址
{
    "code": 400,
    "status": "error",
    "message": "record file m3u8 not exist",
    "data": ""
}
// 要裁剪的文件无mp4地址
{
    "code": 400,
    "status": "error",
    "message": "record file mp4 not exist",
    "data": ""
}
// 要裁剪的时间区间存在问题
{
    "code": 400,
    "status": "error",
    "message": "record file clip timeFrame error",
    "data": ""
}
// 要裁剪的时间区间超过100个限制
{
    "code": 400,
    "status": "error",
    "message": "clip time frame over 100 limit",
    "data": ""
}

字段说明

参数名 说明
code 响应代码,成功为200,失败为400,签名错误为403,异常错误500
status 成功为success,失败为error
message 错误时为错误提示消息
data 成功提交信息

php请求示例

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

$params = array(
  'appId' => "填写获取到的appId",
  'timestamp' => "填写13位时间戳",
  'channelId' => "填写频道号",
  'fileId' => "填写录制文件ID",
  'deleteTimeFrame' => "[{\"start\":0, \"end\":14},{\"start\":25, \"end\":34}]",
  'fileName' => "裁剪测试",
  'callbackUrl'=> "http://demo.polyv.net/wfy/test.php"
);

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


$url="https://api.polyv.net/live/v3/channel/record/clip";

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);
   $file_contents = curl_exec($ch);
   curl_close($ch);
   return $file_contents;
}

$params["sign"] = $sign;
echo post($url, $params);
?>

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

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

回调说明

该接口为异步处理,如果需要获取合并的结果,可以在请求接口时提交callbackUrl 参数,在程序合并成功后,会对callbackUrl 进行回调通知

回调参数

参数 说明
status 接口处理结果,取值:success(成功),error(出错)
channelId 频道号,成功时返回
fileId 裁剪后的文件ID,成功时返回
clippedFileId 裁剪前的文件ID,成功时返回
fileUrl 合并后的MP4的地址,成功时返回
timestamp 回调的当前时间戳
sign 接口安全校验串,加密规则:用户的AppSecret(应用密匙)+timestamp 得到的字符串进行md5加密
actualTimeFrame 真实裁剪后保留的时间区间(经过urlencode的字符串,decode后的字符串格式为:[{"start":xx, "end":xx},{"start":xx, "end":xx}])
fileName 文件名(经过urlencode的字符串)
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

获取答题卡单道题目的答题汇总

接口URL

http://api.polyv.net/live/v3/channel/question/detail

接口说明

(接口调用有频率限制,详细请查看)

1、接口用于获取答题卡单道题目的答题汇总
2、接口支持https

请求方式

GET

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp long 当前13位毫秒级时间戳,3分钟内有效
sign string 签名,为32位大写的MD5值
channelId string 频道号
questionId string 题目ID,从题目列表中获取
times int 第几次的答题详情,用于同一道题发送了多次的情况,从题目列表中获取

响应成功JSON示例:

// 成功
{
    "code": 200,
    "status": "success",
    "message": "",
    "data": {
        "question": [
            {
                "count": 155,
                "tips": "",
                "option": "7"
            },
            {
                "count": 88,
                "tips": "",
                "option": "8"
            },
            {
                "count": 24,
                "tips": "",
                "option": "9"
            },
            {
                "count": 135,
                "tips": "",
                "option": "10"
            }
        ],
        "total": 402,
        "answer": "",
        "correctRecord": 0,
        "title": "请您为选手打分",
        "type": "S",
        "itemType": 0
    }
}

响应失败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
status 响应状态
message 异常错误信息
data 响应结果集
data.question 问题的各选项统计列表
data.question[0].option 问题的选项
data.question[0].count 问题选项的选择数量
data.question[0].count 问题选项的提示
data.total 回答问题的总数量
data.correctRecord 正确回答问题的总数量
data.answer 问题的答案
data.title 问题内容
data..type 题目类型("R":单选,"C":多选,"S": 评分, "Q": 问答, "V": 投票)
data.itemType 答题卡为0,问答为1

php请求示例

<?php
//引用config.php
include 'config.php';
$params = array(
    'appId' => $appId,
    'timestamp' => $timestamp,
    'channelId' => 108888,
    'questionId' => "zxcvbnm",
    'times' => 1
);

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

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

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

echo $res;
?>

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

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

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