恢复回收站视频API接口

接口URL

https://api.polyv.net/v2/video/{userId}/recover-videos

接口说明

该接口恢复点播回收站中的视频,接口支持批量恢复,一次性最多支持恢复100个视频。

支持格式

JSON

请求方式

POST

请求参数

参数名 必选 类型及范围 说明
userId true string 用户id,路径参数
ptime true string 当前13位毫秒级时间戳,3分钟内有效
sign true string 签名,40位大写的sha1值
vids true string 点播视频vid

返回结果

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

失败返回json

// 时间戳过期:
{
  "code": 400,
  "status": "error",
  "message": "ptime is too old.",
  "data": ""
}
// 视频vids为空
{
    "code": 400,
    "status": "error",
    "message": "vids can't be empty",
    "data": ""
}
// vids数量超过100个
{
    "code": 400,
    "status": "error",
    "message": "vids limits 100",
    "data": ""
}
// 签名报错
{
    "code": 400,
    "status": "error",
    "message": "the sign is not right.",
    "data": ""
}

响应参数说明

字段 说明 类型 schema
code 响应码 int32
status 响应状态:success/error/fail string
message 错误信息说明 string
data 响应数据

响应错误说明

错误代码 message 说明
400 sign can not be empty. 加密串为空
400 ptime is too old. 时间戳过期
400 ptime is illegal. 时间戳参数格式不对或者超过当前时间3分钟
400 Could not find user by userId. userId不存在
400 the sign is not right. 签名不正确
400 vids can't be empty 视频vid为空
400 vids limits 100 vids数量超过100个

PHP请求示例

<?php

$userId="xxxxxx";
$secretkey="xxxxxx";
$url = 'http://api.polyv.net/v2/video/'.$userId.'/recover-videos';
$header = array('application/x-www-form-urlencoded');
$data = array(
    "ptime" => time()*1000,
    "vids" => "xxxxxx_x",
);
ksort($data);
$str='';
foreach ($data as $k => $v) {
    $str = $str.$k.'='.$v.'&';
}
$str=substr($str,0,strlen($str)-1);
$str=$str.$secretkey;
$hash=strtoupper(sha1($str));
$data["sign"]=$hash;
// 请求接口
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$sResult = curl_exec($ch);
if($sError=curl_error($ch)){
    die($sError);
}
curl_close($ch);
//打印获得的数据
print_r($sResult);
?>

签名规则:

将非空的请求参数按照参数名字典顺序排列,连接参数名与参数值,并在尾部加上secretkey,生成40位大写SHA1值,作为sign。 以下是示例过程:

1、请求参数为

ptime = "1492591990000"
vid = "382839019131be68715e9455f8d0971a_3"
format = "json"

2、将请求参数按照参数名字典顺序排列

format = "json"
ptime = "1492591990000"
vid = "382839019131be68715e9455f8d0971a_3"

3、连接字符串
连接参数名与参数值,并在尾部加上secretkey(secretkey的值为tIQp4ATe9Z),如下:

format=json&ptime=1492591990000&vid=382839019131be68715e9455f8d0971a_3tIQp4ATe9Z

4、生成签名sign

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

创建视频弹幕接口

接口URL

https://api.polyv.net/v2/danmu/{userId}/add

接口说明

上传点播视频弹幕接口,弹幕暂不支持特殊字符与表情符。

支持格式

JSON

请求方式

POST

请求参数

参数名 必选 类型及范围 说明
userId true string 用户id,路径参数
ptime true string 当前13位毫秒级时间戳,3分钟内有效
sign true string 签名,40位大写的sha1值
vid true string 点播视频vid
msg true string 弹幕信息
time true string 弹幕出现的时间,格式 HH:mm:ss
sessionId false string 场次号
param2 false string 自定义参数
fontSize false int32 字体大小,默认:18
fontMode false string 出现位置,顶部:top,底部:bottom,滚动:roll(默认)
fontColor false string 字体颜色,格式0xFFFFFF, 默认:0xFFFFFF

返回结果

// 成功结果
{
    "code": 200,
    "status": "success",
    "message": "success",
    "data": {
        "Id": 1115759
    }
}

失败返回json

// 时间戳过期:
{
  "code": 400,
  "status": "error",
  "message": "ptime is too old.",
  "data": ""
}
// 签名报错
{
    "code": 400,
    "status": "error",
    "message": "the sign is not right.",
    "data": ""
}
// 必须参数为空
{
    "code": 400,
    "status": "error",
    "message": "vid, msg and time should not be empty.",
    "data": ""
}
// 弹幕时间格式不对
{
    "code": 400,
    "status": "error",
    "message": "Wrong time format.",
    "data": ""
}
// 非法参数
{
    "code": 400,
    "status": "error",
    "message": "font size illegal",
    "data": ""
}
// 视频不存在
{
    "code": 400,
    "status": "error",
    "message": "vid doesn't exist.",
    "data": ""
}

响应参数说明

字段 说明 类型 schema
code 响应码 int32
status 响应状态:success/error/fail string
message 错误信息说明 string
data 响应数据 object
data.Id 弹幕Id int32

响应错误说明

错误代码 message 说明
400 sign can not be empty. 加密串为空
400 ptime is too old. 时间戳过期
400 ptime is illegal. 时间戳参数格式不对或者超过当前时间3分钟
400 Could not find user by userId. userId不存在
400 the sign is not right. 签名不正确
400 vid doesn't exist. 视频vid为空
400 vid, msg and time should not be empty. 必传参数为空
400 Wrong time format. 弹幕时间格式不对
400 font size illegal 字体格式非法

PHP请求示例

<?php

$userId="xxxxxxxxxxx";
$secretkey="xxxxxxxxxxx";
$url = 'http://api.polyv.net/v2/danmu/'.$userId.'/add';
$header = array('application/x-www-form-urlencoded');
$data = array(
    "ptime" => time()*1000,
    "msg" => "弹幕......",
    "vid" => "xxxxxxxxxxx",
    "time" => "00:01:10"
);
ksort($data);
$str='';
foreach ($data as $k => $v) {
    $str = $str.$k.'='.$v.'&';
}
$str=substr($str,0,strlen($str)-1);
$str=$str.$secretkey;
$hash=strtoupper(sha1($str));
$data["sign"]=$hash;
// 请求接口
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$sResult = curl_exec($ch);
if($sError=curl_error($ch)){
    die($sError);
}
curl_close($ch);
//打印获得的数据
print_r($sResult);
?>

签名规则:

将非空的请求参数按照参数名字典顺序排列,连接参数名与参数值,并在尾部加上secretkey,生成40位大写SHA1值,作为sign。 以下是示例过程:

1、请求参数为

ptime = "1492591990000"
vid = "382839019131be68715e9455f8d0971a_3"
format = "json"

2、将请求参数按照参数名字典顺序排列

format = "json"
ptime = "1492591990000"
vid = "382839019131be68715e9455f8d0971a_3"

3、连接字符串
连接参数名与参数值,并在尾部加上secretkey(secretkey的值为tIQp4ATe9Z),如下:

format=json&ptime=1492591990000&vid=382839019131be68715e9455f8d0971a_3tIQp4ATe9Z

4、生成签名sign

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

上传点播视频字幕文件

接口URL

https://api.polyv.net/v2/video/{userId}/srt/upload

接口说明

上传点播视频字幕接口,改接口会自动检测字幕语言。

支持格式

form-data

请求方式

POST

请求参数

参数名 必选 类型及范围 说明
userId true string 用户id,路径参数
ptime true string 当前13位毫秒级时间戳,3分钟内有效
sign true string 签名,40位大写的sha1值
vid true string 点播视频vid
title true string 字幕名称
file true file 字幕文件,支持utf-8编码
asDefault false string 是否作为默认字幕,Y:是,N:否
language false string 语言,默认自动检测,支持语言:中文、繁体中文 、英语、日语、韩语、法语、德语、俄语、西班牙语、阿拉伯语、葡萄牙语、其他

返回结果

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

失败返回json

// 时间戳过期:
{
  "code": 400,
  "status": "error",
  "message": "ptime is too old.",
  "data": ""
}
// 文件名称为空
{
    "code": 400,
    "status": "error",
    "message": "title can't be empty",
    "data": ""
}
// 文件为空
{
    "code": 400,
    "status": "error",
    "message": "file can't be empty",
    "data": ""
}
// 签名报错
{
    "code": 400,
    "status": "error",
    "message": "the sign is not right.",
    "data": ""
}

响应参数说明

字段 说明 类型 schema
code 响应码 int32
status 响应状态:success/error/fail string
message 错误信息说明 string
data 响应数据

响应错误说明

错误代码 message 说明
400 sign can not be empty. 加密串为空
400 ptime is too old. 时间戳过期
400 ptime is illegal. 时间戳参数格式不对或者超过当前时间3分钟
400 Could not find user by userId. userId不存在
400 the sign is not right. 签名不正确
400 vid can't be empty 视频vid为空
400 file can't be empty 视频文件不能为空
400 title can't be empty 标题为空
400 language is not support 不支持的语言

PHP请求示例

<?php

$userId="xxxxxx";
$secretkey="xxxxxx";
$url = 'http://api.polyv.net/v2/video/'.$userId.'/srt/upload';
$header = array('Content-type: multipart/form-data');
$data = array(
    "ptime" => time()*1000,
    "title" => "xxxxx",
    "vid" => "xxxxxx_x",
);
ksort($data);
$str='';
foreach ($data as $k => $v) {
    $str = $str.$k.'='.$v.'&';
}
$str=substr($str,0,strlen($str)-1);
$str=$str.$secretkey;
$hash=strtoupper(sha1($str));
$data["sign"]=$hash;
$data['file']='@/home/moshunwei/english.srt';
// 请求接口
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$sResult = curl_exec($ch);
if($sError=curl_error($ch)){
    die($sError);
}
curl_close($ch);
//打印获得的数据
print_r($sResult);
?>

签名规则:

将非空的请求参数按照参数名字典顺序排列,连接参数名与参数值,并在尾部加上secretkey,生成40位大写SHA1值,作为sign。 以下是示例过程:

1、请求参数为

ptime = "1492591990000"
vid = "382839019131be68715e9455f8d0971a_3"
format = "json"

2、将请求参数按照参数名字典顺序排列

format = "json"
ptime = "1492591990000"
vid = "382839019131be68715e9455f8d0971a_3"

3、连接字符串
连接参数名与参数值,并在尾部加上secretkey(secretkey的值为tIQp4ATe9Z),如下:

format=json&ptime=1492591990000&vid=382839019131be68715e9455f8d0971a_3tIQp4ATe9Z

4、生成签名sign

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

高级分析–根据观众id查询观众分析结果

接口URL

http://api.polyv.net/v2/advance/viewer/{userid}

接口说明

高级分析--根据观众id查询观众分析结果

支持格式

JSON

请求方式

GET

请求参数

参数名 必选 类型及范围 说明
ptime true string 当前时间的毫秒级时间戳(13位),30分钟内有效
sign true string 签名
userid true string 用户id(拼接在url,无需另外传参数)
viewerId true string 观众id

注意事项

所有有值的参数,按照字母排序方式以key=value&key=value的格式串起来,最后拼上secretkey,以SHA-1方式加密并全部大写化。(注意,当参数没有传递,或者传递了空值,sign不需要将此参数计算进去)

例如:api传递了ptime,vid。ptime为1,vid为test1,userid对应用户的secretkey为test2
则sign的值为:ptime=1&vid=test1test2经过SHA-1加密后大写化为: C2B1558D697EA3AF4ED2FC90152751860C1E2163。

返回错误结果JSON示例

{
  "code": 400,
  "status": "error",
  "message": "ptime is too old.",
  "data": ""
}

返回正确结果JSON示例

{
  "code": 200,
  "status": "success",
  "message": "success",
  "data": {
    "userId": "xxxx",
    "viewerId": "观众id",
    "viewerNickName": "观众昵称",
    "viewerAatar": null,
    "ip": "127.0.0.1",
    "firstWatchTime": 1547020140000,
    "lastWatchTime": 1548148547000,
    "totalVideoCount": 6,
    "totalWatchDuration": 1870,
    "avgCompletionRate": 0.519
  }
}

返回结果data表示成功修改的数量.

字段说明

字段 说明
code 返回码
status 返回状态
message 返回信息
data 操作结果

数据对象字段说明

字段 说明
userId 用户id
viewerId 观众id
viewerNickName 观众昵称
viewerAatar 观众头像
ip ip地址
firstWatchTime 首次观看时间
lastWatchTime 最后观看时间
totalVideoCount 观看视频总数
totalWatchDuration 观众总时长(秒)
avgCompletionRate 平均观看完成度

响应代码与响应信息对应

code message data 说明
400 sign can not be empty. 加密串为空
400 ptime is too old. 时间戳过期
400 ptime is illegal. ptime超出当前时间3分钟
400 Could not find user by userid. userid不存在
400 the sign is not right. 加密串错误
401 viewerId is blank. viewerId为空
402 cannot find the viewer analytics data. 查不到对应的观众分析数据
403 get viewer analytics failed. 查询观众分析数据失败
500 get viewer analytics failed. please check the backend log 后台抛异常
200 success 查询到的数据 查询成功

PHP示例代码

<?php
header("Content-type: text/html; charset=utf-8");
$userid="3828390191";
//$jsonp="a";
$ptime=time()*1000;//13位
$viewerId="观众id";
$secretkey="secretkey";
if(empty($jsonp)){
  $str="ptime=".$ptime."&viewerId=".$viewerId.$secretkey;
}else{
  $str="jsonp=".$jsonp."&ptime=".$ptime."&viewerId=".$viewerId.$secretkey;
}
echo $str.'';
$hash=strtoupper(sha1($str));
echo $hash.'';
$url="http://api.polyv.net/v2/advance/viewer/{$userid}?viewerId={$viewerId}&ptime={$ptime}&sign={$hash}";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$output = curl_exec($ch);
curl_close($ch);
//打印获得的数据
print_r($output);
?>

签名规则:

将非空的请求参数按照参数名字典顺序排列,连接参数名与参数值,并在尾部加上secretkey,生成40位大写SHA1值,作为sign。 以下是示例过程:

1、请求参数为

"ptime" = "1493188350000"
"playauth" = "1"

2、将请求参数按照参数名字典顺序排列

"playauth" = "1"
"ptime" = "1493188350000"

3、连接字符串
连接参数名与参数值,并在尾部加上secretkey(secretkey的值为tIQp4ATe9Z),如下:

playauth=1&ptime=1493188350000tIQp4ATe9Z

4、生成签名sign

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

高级分析–根据视频id查询视频分析数据

接口URL

http://api.polyv.net/v2/advance/video/{userid}

接口说明

高级分析--根据视频id查询视频分析结果

支持格式

JSON

请求方式

GET

请求参数

参数名 必选 类型及范围 说明
ptime true string 当前时间的毫秒级时间戳(13位),30分钟内有效
sign true string 签名
userid true string 用户id(拼接在url,无需另外传参数)
vid true string 视频id

注意事项

所有有值的参数,按照字母排序方式以key=value&key=value的格式串起来,最后拼上secretkey,以SHA-1方式加密并全部大写化。(注意,当参数没有传递,或者传递了空值,sign不需要将此参数计算进去)

例如:api传递了ptime,vid。ptime为1,vid为test1,userid对应用户的secretkey为test2
则sign的值为:ptime=1&vid=test1test2经过SHA-1加密后大写化为: C2B1558D697EA3AF4ED2FC90152751860C1E2163。

返回错误结果JSON示例

{
  "code": 400,
  "status": "error",
  "message": "ptime is too old.",
  "data": ""
}

返回正确结果JSON示例

{
  "code": 200,
  "status": "success",
  "message": "success",
  "data": {
    "videoId": "xxxxxxxxxxxxxxxx",
    "videoName": "视频名称m",
    "duration": 100,
    "playTimes": 665,
    "uniqueViewerCount": 614,
    "avgCompletionRate": 0.49,
    "viewHeatmap": "[\"0-20:662\",\"21-100:665\"]",
    "uniqueViewHeatmap": "[\"0-20:614\",\"21-100:615\"]"
  }
}

返回结果data表示成功修改的数量.

字段说明

字段 说明
code 返回码
status 返回状态
message 返回信息
data 操作结果

数据对象字段说明

字段 说明
videoId 视频id
videoName 视频名称
duration 视频时长
playTimes 播放次数
uniqueViewerCount 唯一观众数
avgCompletionRate 平均观看完成度
viewHeatmap 观看热力图,例如[\"0-20:662\",\"21-100:665\"]代表视频内容的0~20秒有662次观看,21~100秒有665次观看
uniqueViewHeatmap 唯一观看热力图,例如[\"0-20:614\",\"21-100:615\"]代表视频内容的0~20秒有614个观众观看,21~100秒有615个观众观看

响应代码与响应信息对应

code message data 说明
400 sign can not be empty. 加密串为空
400 ptime is too old. 时间戳过期
400 ptime is illegal. ptime超出当前时间3分钟
400 Could not find user by userid. userid不存在
400 the sign is not right. 加密串错误
401 vid is blank. 视频id为空
402/403 cannot find this video data. 查不到视频分析数据
404 get video analytics detail failed. 后台获取数据失败
500 get play list failed. please check the backend log. 后台抛异常
200 success 查询到的数据 查询成功

PHP示例代码

<?php
header("Content-type: text/html; charset=utf-8");
$userid="3828390191";
//$jsonp="a";
$ptime=time()*1000;//13位
$vid="视频id";
$secretkey="secretkey";
if(empty($jsonp)){
  $str="ptime=".$ptime."&vid=".$vid.$secretkey;
}else{
  $str="jsonp=".$jsonp."&ptime=".$ptime."&vid=".$vid.$secretkey;
}
echo $str.'';
$hash=strtoupper(sha1($str));
echo $hash.'';
$url="http://api.polyv.net/v2/advance/video/{$userid}?vid={$vid}&ptime={$ptime}&sign={$hash}";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$output = curl_exec($ch);
curl_close($ch);
//打印获得的数据
print_r($output);
?>

签名规则:

将非空的请求参数按照参数名字典顺序排列,连接参数名与参数值,并在尾部加上secretkey,生成40位大写SHA1值,作为sign。 以下是示例过程:

1、请求参数为

"ptime" = "1493188350000"
"playauth" = "1"

2、将请求参数按照参数名字典顺序排列

"playauth" = "1"
"ptime" = "1493188350000"

3、连接字符串
连接参数名与参数值,并在尾部加上secretkey(secretkey的值为tIQp4ATe9Z),如下:

playauth=1&ptime=1493188350000tIQp4ATe9Z

4、生成签名sign

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

高级分析-分页查询观看行为列表

接口URL

http://api.polyv.net/v2/advance/play/{userid}

接口说明

高级分析--根据条件分页查询观看行为列表

支持格式

JSON

请求方式

GET

请求参数

参数名 必选 类型及范围 说明
ptime true string 当前时间的毫秒级时间戳(13位),30分钟内有效
sign true string 签名
userid true string 用户id(拼接在url,无需另外传参数)
start false string 开始时间,格式为yyyy-MM-dd或者yyyy-MM-dd HH:mm:ss,查询范围不超过31天
end false string 结束时间,格式为yyyy-MM-dd或者yyyy-MM-dd HH:mm:ss,查询范围不超过31天
pageSize false int 每页取多少条数据(最大为20,超过则默认取20条数据)
viewerId false string 观众id
viewerName false string 观众昵称
vid false string 视频id
token false string 下一页的凭证,从当前页的返回数据里获取,第一页不需要传

时间参数说明

  • 查询的时间跨度不超过31天;
  • 当start有值而end为空时,返回开始日期后31天后的数据;
  • 当start为空而end不为空时,返回结束日期前31天内的数据;
  • 当start、end参数均为空时,返回最近31天的数据。

注意事项

所有有值的参数,按照字母排序方式以key=value&key=value的格式串起来,最后拼上secretkey,以SHA-1方式加密并全部大写化。(注意,当参数没有传递,或者传递了空值,sign不需要将此参数计算进去)

例如:api传递了ptime,vid。ptime为1,vid为test1,userid对应用户的secretkey为test2
则sign的值为:ptime=1&vid=test1test2经过SHA-1加密后大写化为: C2B1558D697EA3AF4ED2FC90152751860C1E2163。

返回错误结果JSON示例

{
  "code": 400,
  "status": "error",
  "message": "ptime is too old.",
  "data": ""
}

返回正确结果JSON示例

{
  "code": 200,
  "status": "success",
  "message": "success",
  "data": {
    "pageSize": 3,
    "contents": [
      {
        "startTime": "2019-10-01 11:12:05",
        "videoId": "xxxxxx",
        "videoName": "test video",
        "videoImage": "//img.videocc.net/uimage/xxxxxx.jpg",
        "videoDuration": 100,
        "deviceClass": "Phone",
        "osName": "Android",
        "osVersion": "Unknown",
        "agentName": "Unknown",
        "agentVersion": "Unknown",
        "referer": "N/A",
        "ip": "127.0.0.1",
        "country": "中国",
        "province": "广东",
        "city": "未知",
        "isp": "中国电信",
        "viewerId": "1234567890",
        "viewerNickName": "N/A",
        "viewerAvatar": "N/A",
        "totalVideoCount": 100,
        "heatmap": "[\"0-1:1\",\"2-3:1\"]",
        "completionRate": 0.02,
        "status": 61
      },
      {
        "startTime": "2019-10-01 11:12:05",
        "videoId": "xxxxxx",
        "videoName": "test video",
        "videoImage": "//img.videocc.net/uimage/xxxxxx.jpg",
        "videoDuration": 100,
        "deviceClass": "Phone",
        "osName": "Android",
        "osVersion": "Unknown",
        "agentName": "Unknown",
        "agentVersion": "Unknown",
        "referer": "N/A",
        "ip": "127.0.0.1",
        "country": "中国",
        "province": "广东",
        "city": "未知",
        "isp": "中国电信",
        "viewerId": "1234567890",
        "viewerNickName": "N/A",
        "viewerAvatar": "N/A",
        "totalVideoCount": 100,
        "heatmap": "[\"0-50:1\"]",
        "completionRate": 0.5,
        "status": 61
      },
      {
        "startTime": "2019-10-01 11:12:05",
        "videoId": "xxxxxx",
        "videoName": "test video",
        "videoImage": "//img.videocc.net/uimage/xxxxxx.jpg",
        "videoDuration": 100,
        "deviceClass": "Phone",
        "osName": "Android",
        "osVersion": "Unknown",
        "agentName": "Unknown",
        "agentVersion": "Unknown",
        "referer": "N/A",
        "ip": "127.0.0.1",
        "country": "中国",
        "province": "广东",
        "city": "未知",
        "isp": "中国电信",
        "viewerId": "1234567890",
        "viewerNickName": "N/A",
        "viewerAvatar": "N/A",
        "totalVideoCount": 100,
        "heatmap": "[\"0-50:1\"]",
        "completionRate": 0.5,
        "status": 61
      }
    ],
    "token": "xxxxxxxxxxxxxxx",
    "hasNextPage": true
  }
}

返回结果data表示成功修改的数量.

字段说明

字段 说明
code 返回码
status 返回状态
message 返回信息
data 操作结果

数据对象字段说明

字段 说明
startTime 首次观看日期
videoId 视频id
videoName 视频名称
videoImage 视频首图(没有添加协议头)
videoDuration 视频时长
deviceClass 设备名称
osName 操作系统
agentName 终端名称
agentVersion 终端版本
referer 来源
ip ip地址
country 国家
province 省份
city 地区
isp 运营商
viewerid 观众id
viewerNickName 观众昵称
viewerAvatar 观众头像
totalVideoCount 观众看的视频总量
heatmap 热力图(["0-1:1","3-4:2"]表示视频的0到1秒有1次观看,3到4秒有2次观看)
completionRate 观看完成度
status 视频的状态
token 查询下一页时传的凭证
hasNextPagetoken 是否有下一页

响应代码与响应信息对应

code message data 说明
400 sign can not be empty. 加密串为空
400 ptime is too old. 时间戳过期
400 ptime is illegal. ptime超出当前时间3分钟
400 Could not find user by userid. userid不存在
400 the sign is not right. 加密串错误
401 start date or end date is illegal. start或者end参数格式有问题
402 date range exceeds 31 days. start和end参数相差超过31天
403 get play list error. 后台获取数据失败
500 get play list failed. please check the backend log. 后台抛异常
200 success 查询到的数据 查询成功

PHP示例代码

<?php
header("Content-type: text/html; charset=utf-8");
$userid="3828390191";
//$jsonp="a";
$ptime=time()*1000;//13位
$start="2019-10-15";
$secretkey="tIQp4ATe9Z";
if(empty($jsonp)){
  $str="start=".$start."&ptime=".$ptime.$secretkey;
}else{
  $str="jsonp=".$jsonp."&start=".$start."&ptime=".$ptime.$secretkey;
}
echo $str.'';
$hash=strtoupper(sha1($str));
echo $hash.'';
$url="http://api.polyv.net/v2/advance/play/{$userid}?start={$start}&ptime={$ptime}&sign={$hash}";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$output = curl_exec($ch);
curl_close($ch);
//打印获得的数据
print_r($output);
?>

签名规则:

将非空的请求参数按照参数名字典顺序排列,连接参数名与参数值,并在尾部加上secretkey,生成40位大写SHA1值,作为sign。 以下是示例过程:

1、请求参数为

"ptime" = "1493188350000"
"playauth" = "1"

2、将请求参数按照参数名字典顺序排列

"playauth" = "1"
"ptime" = "1493188350000"

3、连接字符串
连接参数名与参数值,并在尾部加上secretkey(secretkey的值为tIQp4ATe9Z),如下:

playauth=1&ptime=1493188350000tIQp4ATe9Z

4、生成签名sign

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

合并字幕文件

接口URL

https://api.polyv.net/v2/video/${userId}/srt/merge

接口说明

接口用于合并字幕文件

支持格式

JSON

请求方式

GET

请求参数

参数名 必选 类型及范围 说明
userid true string 用户id,路径参数
ptime true string 当前13位毫秒级时间戳,3分钟内有效
sign true string 签名,40位大写的sha1值
vid true string 点播视频id
sourceSrtNames true string 原始字幕名称,必须传两个值。以英文逗号分隔,合并后第一个字幕的内容在上方显示。
mergedSrtName false string 合并字幕的名称,默认:双语。不超过5个中文字符。
setAsDefault false boolean 是否设置为默认显示的字幕。默认值:true。

返回结果

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

失败返回json(不带jsonp)

{
  "code": 400,
  "status": "error",
  "message": "ptime is too old.",
  "data": ""
}

响应说明

错误代码 message 说明
400 sign can not be empty. 加密串为空
400 ptime is too old. 时间戳过期
400 ptime is illegal. 时间戳参数格式不对或者超过当前时间3分钟
400 Could not find user by userid. userid不存在
400 the sign is not right. 加密串不正确
400 vid is blank 视频id为空
400 sourceSrtNames is error format 原始字幕名称格式错误,需要2个字幕名称,以英文逗号分隔
400 srt file limit 2 , now has 3 每个视频字幕上限为2个
400 not found srt name %s 原始字幕不存在

PHP请求示例

<?php
header("Content-type: text/html; charset=utf-8");
$userid="用户id";
$secretkey="用户secretKey";
$params = array(
    'ptime' => time()*1000,
    'userid' => $userid,
    'vid' => 'b0f70413249189c1c9a4d771fca3807a_b',
    'sourceSrtNames' => '1,2',
    'mergedSrtName' => '合并3',
    'setAsDefault' => 'true'
);

# 创建排序后的字典
foreach ($params as $key=>$value){
    $arr[$key] = $key;
}
sort($arr);
$str='';
$length=count($arr);
foreach ($arr as $k => $v) {
    $str = $str.$v.'='.$params[$v];
    if($k < $length-1) {
      $str = $str.'&';
    }
}
$hash=strtoupper(sha1($str.$secretkey));

$params['sign']=$hash;
$url="http://api.polyv.net/v2/video/${userid}/srt/merge?".http_build_query($params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
//打印获得的数据
print_r($output);
?>

签名规则:

将非空的请求参数按照参数名字典顺序排列,连接参数名与参数值,并在尾部加上secretkey,生成40位大写SHA1值,作为sign。 以下是示例过程:

1、请求参数为

ptime = "1492591990000"
vid = "382839019131be68715e9455f8d0971a_3"
format = "json"

2、将请求参数按照参数名字典顺序排列

format = "json"
ptime = "1492591990000"
vid = "382839019131be68715e9455f8d0971a_3"

3、连接字符串
连接参数名与参数值,并在尾部加上secretkey(secretkey的值为tIQp4ATe9Z),如下:

format=json&ptime=1492591990000&vid=382839019131be68715e9455f8d0971a_3tIQp4ATe9Z

4、生成签名sign

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

设置账号加密设置

接口URL

https://api.polyv.net/v2/setting/${userid}/set-playsafe

接口说明

接口用于设置用户加密设置

支持格式

JSON

请求方式

GET

请求参数

参数名 必选 类型及范围 说明
userid true string 用户id,路径参数
ptime true string 当前13位毫秒级时间戳,3分钟内有效
encrypt true string 视频加密设置开关(仅对新上传视频有效), "1"为打开,"0"为关闭
hlslevel true string 视频加密设置,有效取值为 open: 非加密授权;web: WEB授权;app: APP授权;wxa_app:小程序授权
sign true string 签名,40位大写的sha1值

返回结果

{
    "code": 200, 
    "status": "success", 
    "message": "success", 
    "data": {
        "encrypt": "1", 
        "hlslevel": "open"
    }
}

失败返回json(不带jsonp)

{
  "code": 400,
  "status": "error",
  "message": "ptime is too old.",
  "data": ""
}

字段描述

字段名称 描述
encrypt 是否开启加密,1为开启,0为关闭
hlslevel 加密设置,open: 非加密授权;web: WEB授权;app: APP授权;wxa_app:小程序授权

响应说明

错误代码 message 说明
400 sign can not be empty. 加密串为空
400 ptime is too old. 时间戳过期
400 ptime is illegal. 时间戳参数格式不对或者超过当前时间3分钟
400 Could not find user by userid. userid不存在
400 the sign is not right. 加密串不正确
400 hlslevel error 加密设置(hlslevel)非有效值

PHP请求示例

<?php
header("Content-type: text/html; charset=utf-8");
$userid="用户id";
$secretkey="用户secretKey";
$params = array(
    'ptime' => time()*1000,
    'userid' => $userid,
    'encrypt' => "1",
    'hlslevel' => 'open'
);

# 创建排序后的字典
foreach ($params as $key=>$value){
    $arr[$key] = $key;
}
sort($arr);
$str='';
$length=count($arr);
foreach ($arr as $k => $v) {
    $str = $str.$v.'='.$params[$v];
    if($k < $length-1) {
      $str = $str.'&';
    }
}
$hash=strtoupper(sha1($str.$secretkey));

$params['sign']=$hash;
$url="http://api.polyv.net/v2/setting/${userid}/set-playsafe?".http_build_query($params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
$output = curl_exec($ch);
curl_close($ch);
//打印获得的数据
print_r($output);
?>

签名规则:

将非空的请求参数按照参数名字典顺序排列,连接参数名与参数值,并在尾部加上secretkey,生成40位大写SHA1值,作为sign。 以下是示例过程:

1、请求参数为

ptime = "1492591990000"
vid = "382839019131be68715e9455f8d0971a_3"
format = "json"

2、将请求参数按照参数名字典顺序排列

format = "json"
ptime = "1492591990000"
vid = "382839019131be68715e9455f8d0971a_3"

3、连接字符串
连接参数名与参数值,并在尾部加上secretkey(secretkey的值为tIQp4ATe9Z),如下:

format=json&ptime=1492591990000&vid=382839019131be68715e9455f8d0971a_3tIQp4ATe9Z

4、生成签名sign

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

获取账号加密设置

接口URL

https://api.polyv.net/v2/setting/${userid}/get-playsafe

接口说明

接口用于获取用户加密设置

支持格式

JSON

请求方式

GET

请求参数

参数名 必选 类型及范围 说明
userid true string 用户id,路径参数
ptime true string 当前13位毫秒级时间戳,3分钟内有效
sign true string 签名,40位大写的sha1值

返回结果

{
    "code": 200, 
    "status": "success", 
    "message": "success", 
    "data": {
        "encrypt": "0", 
        "hlslevel": "open"
    }
}

失败返回json(不带jsonp)

{
  "code": 400,
  "status": "error",
  "message": "ptime is too old.",
  "data": ""
}

字段描述

字段名称 描述
encrypt 是否开启加密,1为开启,0为关闭
hlslevel 加密设置,open: 非加密授权;web: WEB授权;app: APP授权;wxa_app:小程序授权

响应说明

错误代码 message 说明
400 sign can not be empty. 加密串为空
400 ptime is too old. 时间戳过期
400 ptime is illegal. 时间戳参数格式不对或者超过当前时间3分钟
400 Could not find user by userid. userid不存在
400 the sign is not right. 加密串不正确

PHP请求示例

<?php
header("Content-type: text/html; charset=utf-8");
$userid="用户id";
$secretkey="用户secretKey";
$params = array(
    'ptime' => time()*1000,
    'userid' => $userid
);

# 创建排序后的字典
foreach ($params as $key=>$value){
    $arr[$key] = $key;
}
sort($arr);
$str='';
$length=count($arr);
foreach ($arr as $k => $v) {
    $str = $str.$v.'='.$params[$v];
    if($k < $length-1) {
      $str = $str.'&';
    }
}
$hash=strtoupper(sha1($str.$secretkey));

$params['sign']=$hash;
$url="http://api.polyv.net/v2/setting/${userid}/get-playsafe?".http_build_query($params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
//打印获得的数据
print_r($output);
?>

签名规则:

将非空的请求参数按照参数名字典顺序排列,连接参数名与参数值,并在尾部加上secretkey,生成40位大写SHA1值,作为sign。 以下是示例过程:

1、请求参数为

ptime = "1492591990000"
vid = "382839019131be68715e9455f8d0971a_3"
format = "json"

2、将请求参数按照参数名字典顺序排列

format = "json"
ptime = "1492591990000"
vid = "382839019131be68715e9455f8d0971a_3"

3、连接字符串
连接参数名与参数值,并在尾部加上secretkey(secretkey的值为tIQp4ATe9Z),如下:

format=json&ptime=1492591990000&vid=382839019131be68715e9455f8d0971a_3tIQp4ATe9Z

4、生成签名sign

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

创建 Playsafe Token (v2)

接口URL

https://hls.videocc.net/service/v2/token/create-child

接口说明

  1. 用于创建 Playsafe Token,这个 token 即是加密视频的播放凭证
  2. 如果一个token尚未过期,此时使用相同的 videoId、viewerId、viewerIp、iswxa 参数值请求该接口,则会复用原来的token,并延长原token的有效期。
  3. 该接口目前仅支持子账号。如果要为主帐户创建 token ,可参考 创建 Playsafe Token

支持格式

JSON

请求方式

POST

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 子账号 appId
videoId string 视频ID,例如 e6b23c6f519c5906e54a13b8200d7bb0_e
ts long 当前13位毫秒级时间戳,10分钟内有效
viewerId string 观看者ID,要求不同的观看者使用不同的ID
viewerIp string 观看者IP,如果为空,会自动获取调用该接口时的IP
viewerName string 观看者名称
expires long token 有效时长,单位为秒。为空时默认为10分钟。
disposable boolean true 表示 token 仅一次有效(验证一次后,token 就失效了)。
false 则表示在有效期内可以多次验证。默认为 false。
iswxa int 是否微信小程序播放,1为是,0为否。默认为0。
extraParams string 自定义的其它参数
sign string 签名,为32位大写的MD5值,详细的签名规则见下文

响应成功JSON示例:

{
    "code": 200,
    "status": "success",
    "message": "",
    "data": {
        "token": "d8835d53-71f5-40a2-a367-ddb8f8c7f16e-bsbcocx_bk",
        "userId": "e6b23c6f51",
        "appId": "asRocmWigR",
        "videoId": "e6b23c6f51c4b1cb9f0302a92ed42440_e",
        "viewerIp": "127.0.0.1",
        "viewerId": "abcd1234",
        "viewerName": null,
        "extraParams": null,
        "ttl": 600000,
        "createdTime": 1552446282044,
        "expiredTime": 1552446882044,
        "iswxa": 0,
        "disposable": false
    }
}

响应失败JSON示例:

appId 错误

{
    "code": 400,
    "status": "error",
    "message": "user_not_found",
    "data": "user secretKey not found."
}

子账号角色错误(目前仅支持“内容分发”角色)

{
    "code": 400,
    "status": "error",
    "message": "user_children_level_error",
    "data": "user children level error."
}

子账号已过期

{
    "code": 400,
    "status": "error",
    "message": "user_children_expired",
    "data": "user children expired."
}

ts 过期

{
    "code": 403,
    "status": "error",
    "message": "ts_expired",
    "data": "ts parameter is expired."
}

签名错误

{
    "code": 403,
    "status": "error",
    "message": "sign_invalid",
    "data": "sign parameter invalid."
}

响应字段说明

参数名 说明
code 响应代码,200为成功,403为ts过期或签名错误,400为参数错误(例如缺少 userId 或 videoId)
status 成功为success,失败为error
message 成功时为空错误时为错误提示消息
data 成功时为token相关数据,失败时为具体的错误提示
userId 用户ID
appId 子账号ID
videoId 视频ID,例如 e6b23c6f519c5906e54a13b8200d7bb0_e
viewerIp 观看者IP,如果为空,或自动获取调用该接口时的IP
viewerId 观看者ID,要求不同的观看者使用不同的ID
viewerName 观看者名称
extraParams 自定义的其它参数
ttl token 有效时长,单位为毫秒
createdTime token 创建时间
expiredTime token 过期时间
iswxa 是否微信小程序播放,1为是,0为否。
disposable true 表示 token 仅一次有效(验证一次后,token 就失效了)。false 则表示在有效期内可以多次验证。

签名规则

  1. 将除了 sign 之外的全部 非空 请求参数(也就是说,参数值为空的参数,将排除掉,不参与签名的计算),按字典序升序排列,按“参数名1参数值1参数名2参数值2……”的格式拼接起来,例如:ts1552447784505userIde6b23c6f51videoIde6b23c6f51c4b1cb9f0302a92ed42440_eviewerIdabcd1234viewerIp127.0.0.1
  2. 在上述字符串的头、尾分别加上 secretKey。以上述字符串、secretKey为abc为例,得到:abcts1552447784505userIde6b23c6f51videoIde6b23c6f51c4b1cb9f0302a92ed42440_eviewerIdabcd1234viewerIp127.0.0.1abc
  3. 计算上述字符串的MD5值,并转为大写,得到:166D45560D37DDBF0F05081D975231B5

php请求示例

// php
function get_client_ip() {
  if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
  } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
      $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
  } else {
      $ipaddress = $_SERVER['REMOTE_ADDR'];
  }
    return $ipaddress;
}

$appId = 'your appId';       // polyv 提供的 appId
$secretkey = 'your secretkey';     // polyv 提供的接口调用签名访问的key
$videoId = '65956867df8c717eb79136e05394122c_6';  // 视频对应vid
$ts = time() * 1000;      // 时间戳
$viewerIp = get_client_ip();  // 用户 ip
$viewerId = get_viewer_id();      // 自定义用户 id
$viewerName = get_viewer_name();  // 用户昵称, 若值为中文需要urlencode('张三'),可为空
$extraParams = get_extra_params();  // 自定义参数,可为空

/* 将参数 $appId、$secretkey、$videoId、$ts、$viewerIp、$viewerIp、$viewerId、$viewerName、$extraParams
    按照ASCKII升序 key + value + key + value ... +value 拼接
*/
$concated =  'appId'.$appId.'extraParams'.$extraParams.'ts'.$ts.'videoId'.$videoId.'viewerId'.$viewerId.'viewerIp'.$viewerIp.'viewerName'.$viewerName;

// 再首尾加上 secretkey
$plain = $secretkey.$concated.$secretkey;

// 取大写MD5
$sign = strtoupper(md5($plain));



// 然后将下列参数用post请求  https://hls.videocc.net/service/v2/token/create-child 获取 token
$url = 'https://hls.videocc.net/service/v2/token/create-child';
$data = array('appId' => $appId, 'videoId' => $videoId, 'ts' => $ts, 'viewerIp' => $viewerIp, 'viewerName' => $viewerName, 'extraParams' => $extraParams, 'viewerId' => $viewerId, 'sign' => $sign);


$result=post($url, http_build_query($data));

// 获取返回结果的 token, 再传入 playsafe 中播放加密视频
// $token = json_decode($result)->data->token;
$token = json_decode($result)->data->token;
echo $token;

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/x-www-form-urlencoded'));
    $file_contents = curl_exec($ch);
    curl_close($ch);
    return $file_contents;
}
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...