创建 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);

$options = array(
    'http' => array(
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => http_build_query($data)
    )
);
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);

// 获取返回结果的 token, 再传入 playsafe 中播放加密视频
$token = json_decode($result)->data->token;
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

获取视频播放预览时长接口

接口URL

http://api.polyv.net/v2/video/{userid}/get-preview-duration

接口说明

通过API获取视频的播放预览时长

支持格式

JSON

请求方式

GET

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
userid string 用户ID
ptime string 当前时间的毫秒级时间戳(13位),3分钟内有效
vid string 视频ID
sign string 签名,为40位大写的SHA1值

JSON示例

{
  code: 200,
  status: "success",
  message: "success",
  data: 10
}
{
  code: 400,
  status: "success",
  message: "success",
  data: "查询的视频不存在."
}
{
  code: 400,
  status: "success",
  message: "success",
  data: "查询的视频没有设置预览时长."
}

字段说明

字段 说明
status 成功/失败状态
code 成功/失败代码
message 成功/失败信息
data 成功:返回预览的时长,单位秒

php请求示例

<?php
  $userid="8f8482aaab";
  $secretkey="AiDQw1mAmi";
  $vid="8f8482aaab8fe7ea12e3314a11a061fc_8";
  $ptime=time()*1000;
  $str="ptime=$ptime&vid=$vid".$secretkey;
  $sign=strtoupper(sha1($str));
  $url="http://api.polyv.net/v2/video/$userid/get-preview-duration?ptime=$ptime&vid=$vid&sign=$sign";
  $content = file_get_contents($url);
  echo $content;
?>

签名规则

将请求参数(sign除外)按照参数名字典顺序排列,用“&”连接参数名与参数值,并在最后加上secretkey的值,生成40位大写的SHA1值,作为sign。

以下是示例过程:

1. 将请求参数按照参数名字典顺序排列为:

ptime="1476753635000";
vid="8f8482aaab8fe7ea12e3314a11a061fc_8";

2. 连接字符串 用“&”连接参数名与参数值,并在最后加上secretkey的值,生成40位大写的SHA1值,作为sign(本示例的值为AiDQw1mAmi),如下:

ptime=1476753635000&vid=8f8482aaab8fe7ea12e3314a11a061fc_8AiDQw1mAmi

3. 生成签名sign

sign为40位大写的SHA1值:

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

设置视频的播放预览时长

接口URL

http://api.polyv.net/v2/video/{userid}/set-preview-duration

接口说明

通过API设置视频的播放预览时长

支持格式

JSON

请求方式

POST

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
userid string 用户ID
ptime string 当前时间的毫秒级时间戳(13位),3分钟内有效
vid string 视频ID
duration int 预览的时长(单位是秒),例如:20
sign string 签名,为40位大写的SHA1值

JSON示例

{
  code: 200,
  status: "success",
  message: "success",
  data: "设置成功."
}
{
  code: 400,
  status: "success",
  message: "success",
  data: "修改的视频不存在."
}

字段说明

字段 说明
status 成功/失败状态
code 成功/失败代码
message 成功/失败信息
data 成功/失败数据

php请求示例

<?php
  $userid="8f8482aaab";
  $secretkey="AiDQw1mAmi";
  $vid="8f8482aaab8fe7ea12e3314a11a061fc_8";
  $duration=10;
  $ptime=time()*1000;
  $str="duration=$duration&ptime=$ptime&vid=$vid".$secretkey;
  $sign=strtoupper(sha1($str));
  $url="http://api.polyv.net/v2/video/$userid/set-preview-duration?ptime=$ptime&duration=$duration&vid=$vid&sign=$sign";
  $content = file_get_contents($url);
  echo $content;
?>

签名规则

将请求参数(sign除外)按照参数名字典顺序排列,用“&”连接参数名与参数值,并在最后加上secretkey的值,生成40位大写的SHA1值,作为sign。

以下是示例过程:

1. 将请求参数按照参数名字典顺序排列为:

duration=10;
ptime="1476753635000";
vid="8f8482aaab8fe7ea12e3314a11a061fc_8";

2. 连接字符串 用“&”连接参数名与参数值,并在最后加上secretkey的值,生成40位大写的SHA1值,作为sign(本示例的值为AiDQw1mAmi),如下:

duration=10&ptime=1476753635000&vid=8f8482aaab8fe7ea12e3314a11a061fc_8AiDQw1mAmi

3. 生成签名sign

sign为40位大写的SHA1值:

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

删除视频指定时间点的打点信息

接口URL

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

接口说明

通过API删除视频的指定时间点的打点信息

支持格式

JSON

请求方式

POST,GET

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
userid string 用户ID
ptime string 当前时间的毫秒级时间戳(13位),3分钟内有效
vid string 视频ID
times string 时间点(单位是秒),可以多个。多个的话用逗号隔开,例如:20,30,50
sign string 签名,为40位大写的SHA1值

JSON示例

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

字段说明

字段 说明
status 成功/失败状态
code 成功/失败代码
message 成功/失败信息
data 成功/失败数据

php请求示例

<?php
  $userid="8f8482aaab";
  $secretkey="AiDQw1mAmi";
  $vid="8f8482aaab8fe7ea12e3314a11a061fc_8";
  $times="10,30,49,60";
  $ptime=time()*1000;
  $str="ptime=$ptime&times=$times&vid=$vid".$secretkey;
  $sign=strtoupper(sha1($str));
  $url="http://api.polyv.net/v2/video/$userid/deleteKeyFrameByTime?ptime=$ptime&times=$times&vid=$vid&sign=$sign";
  $content = file_get_contents($url);
  echo $content;
?>

签名规则

将请求参数(sign除外)按照参数名字典顺序排列,用“&”连接参数名与参数值,并在最后加上secretkey的值,生成40位大写的SHA1值,作为sign。

以下是示例过程:

1. 将请求参数按照参数名字典顺序排列为:

ptime="1476753635000";
times="10,20,30";
vid="8f8482aaab8fe7ea12e3314a11a061fc_8";

2. 连接字符串 用“&”连接参数名与参数值,并在最后加上secretkey的值,生成40位大写的SHA1值,作为sign(本示例的值为AiDQw1mAmi),如下:

ptime=1476753635000&times=10,20,30&vid=8f8482aaab8fe7ea12e3314a11a061fc_8AiDQw1mAmi

3. 生成签名sign

sign为40位大写的SHA1值:

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

合并视频

接口URL

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

接口说明

合并视频。

支持格式

JSON

请求方式

POST

请求参数

参数名 必选 类型及范围 说明
userid true string 用户id,路径参数
ptime true string 当前13位毫秒级时间戳,3分钟内有效
sign true string 签名,40位大写的sha1值
vids true string 视频id,用逗号隔开,只支持合并2个或者3个
title false string 视频标题,默认为“合并-”+第一个视频的标题。标题长度超过128会被截取
cataId false long 分类id,默认为默认分类
luping false int 是否开启录屏优化,1表示开启,0表示关闭,默认为关闭

返回结果

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

失败返回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. 加密串不正确
410 vid is blank. vid为空
411 illegal videos' count, count=5 视频数量不合法
412 illegal vid, vid=出错的vid 视频不属于用户本身
413 swf video is not support, vid=出错的vid 不支持swf格式
414 illegal vid. vid=出错的vid 视频不存在或者最高码率还没转码完成
415 category no exists, cataid=出错的cataid 查不到分类
416 keepsource category is not support, cataid=出错的cataid 不支持源文件播放属性的分类
417 concat video failed. backed error=xx 后台处理失败
500 failed. 后台异常

PHP请求示例

<?php
header("Content-type: text/html; charset=utf-8");
$userid="用户id";
$vids="视频id1,视频id2";
$ptime=time()*1000;//13位
$secretkey="填写secretkey";
$str="ptime=".$ptime."&vids=".$vids.$secretkey;

$hash=strtoupper(sha1($str));
$url="https://api.polyv.net/v2/video/$userid/concat?ptime=$ptime&sign=$hash&vids=$vids";
$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"
vids = "8205ac89d30adeb51a6f8bf1a1df6f63_8,8205ac89d30adeb51a6f8bf1a1df6f63_8"

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

ptime = "1492591990000"
vids = "8205ac89d30adeb51a6f8bf1a1df6f63_8,8205ac89d30adeb51a6f8bf1a1df6f63_8"

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

ptime=1492591990000&vids=8205ac89d30adeb51a6f8bf1a1df6f63_8,8205ac89d30adeb51a6f8bf1a1df6f63_8tIQp4ATe9Z

4、生成签名sign

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

获取视频观看完成度

接口URL

https://api.polyv.net/v2/video/engagement/{userid}/get

接口说明

获取学员对于某个视频的观看完成度

支持格式

JSON

请求方式

GET

请求参数

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

返回结果

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

失败返回json(不带jsonp)

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

字段描述

字段名称 描述
data 已完成进度比例

响应说明

错误代码 message 说明
400 sign can not be empty. 加密串为空
400 vid invalid. 视频vid错误
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 video not found 视频不存在
400 permission limit 没有权限访问api

PHP请求示例

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

# 创建排序后的字典
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/engagement/${userid}/get?".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/video/snapshot/{userid}/getTaskStatus

接口说明

接口用于获取截图任务的状态

支持格式

JSON

请求方式

GET

请求参数

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

返回结果

{
    "code": 200, 
    "status": "success", 
    "message": "success", 
    "data": {
        "taskId": 17, 
        "vid": "b0f70413240f0e57898ad2682071d456_b", 
        "status": "success", 
        "createTime": 1554997808000, 
        "beginProcessTime": 1554997812000, 
        "finishProcessTime": 1554997816000, 
        "snapshots": [
            {
                "offsetTime": 0, 
                "imageUrl": "http://vod-assets.videocc.net/snapshot/b0f7041324/b0f70413240f0e57898ad2682071d456/0.jpg"
            }, 
            {
                "offsetTime": 5, 
                "imageUrl": "http://vod-assets.videocc.net/snapshot/b0f7041324/b0f70413240f0e57898ad2682071d456/5.jpg"
            }
        ]
    }
}

失败返回json(不带jsonp)

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

字段描述

字段名称 描述
taskId 任务id
vid 视频vid
status 任务状态,waiting-等待截图,processing-截图处理中,success-任务成功,fail-任务失败
createTime 任务创建时间,13位时间戳
beginProcessTime 开始截图的时间,13位时间戳,未开始为0
finishProcessTime 完成截图的时间,13位时间戳,未完成为0
snapshots 截图信息数组,失败或未开始时为空数组
offsetTime 截图时间点
imageUrl 截图访问的url

响应说明

错误代码 message 说明
400 sign can not be empty. 加密串为空
400 vid invalid. 视频vid错误
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 task not found 任务不存在

PHP请求示例

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

# 创建排序后的字典
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/snapshot/${userid}/getTaskStatus?".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/video/snapshot/{userid}/addTask

接口说明

接口用于添加时间点截图任务,每个任务允许截图20张

支持格式

JSON

请求方式

GET

请求参数

参数名 必选 类型及范围 说明
userid true string 用户id,路径参数
ptime true string 当前13位毫秒级时间戳,3分钟内有效
sign true string 签名,40位大写的sha1值
vid true string 视频vid
offsetTimes true string 截图时间点,多个时间点以英文逗号分隔
width false int 截图的宽度,默认为原视频宽
height false int 截图的高度,默认为原视频高
callbackUrl false string 截图完成后的回调地址,截图任务完成会post结果信息和签名到回调的地址,若地址返回的Http状态码为200,则会视为回调成功

返回结果

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

失败返回json(不带jsonp)

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

字段描述

字段名称 描述
data 任务id

回调示例

如设置了callbackUrl,值为http://example.polyv.net/snapshot-callback.do
那么截图任务完成后,polyv会回调该接口,并带上签名信息,开发者可以通过签名信息来校验调用是否为polyv的合法调用,具体的签名规则:md5("snapshot" + vid + secretKey) 。如vid="e6b23c6f51350f106556806a576b1942_e",secretKey="testKey",那么sign="3adb60893894d422d00ed2efae8c41f3" (小写md5)。最终回调的url为http://example.polyv.net/snapshot-callback.do?sign=3adb60893894d422d00ed2efae8c41f3

任务成功回调json

{
    "taskId": 123,
    "vid": "e6b23c6f51350f106556806a576b1942_e",
    "status": "success",
    "snapshots": [
        {
            "offsetTime": 12,
            "imageUrl": "http://vod-assets.videocc.net/snapshot/e6b23c6f51/e6b23c6f519df1d317cca208edd448cb/12.jpg"
        },
        {
            "offsetTime": 78,
            "imageUrl": "http://vod-assets.videocc.net/snapshot/e6b23c6f51/e6b23c6f519df1d317cca208edd448cb/78.jpg"
        }
    ]
}

任务失败回调json

{
    "taskId": 123,
    "vid": "e6b23c6f51350f106556806a576b1942_e",
    "status": "fail",
    "snapshots": []
}

回调字段说明

字段名称 描述
taskId 任务id
status 任务状态,成功为success,失败为fail
vid 视频id
snapshots 成功为截图信息数组,失败为空数组
offsetTime 截图时间点,单位秒
imageUrl 截图的访问地址

响应说明

错误代码 message 说明
400 sign can not be empty. 加密串为空
400 vid invalid. 视频vid错误
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 audio limited 音频文件不允许截图
400 illegal video status 非转码中,待审核,已发布的状态,不允许截图
400 video not found 视频不存在
400 illegal offsetTimes 截图时间点为空
400 offsetTimes contain illegal number 截图时间点包含非法数值
400 offsetTime over duration 截图时间点超过了视频的时长
400 width over limit 宽度超过了原视频宽
400 height over limit 高度超过了原视频高
400 snapshot num limit 单个任务截图张数超过上限

PHP请求示例

<?php
header("Content-type: text/html; charset=utf-8");
$userid="用户id";
$secretkey="用户secretkey";
$params = array(
    'ptime' => time()*1000,
    'vid' => '视频vid',
    'offsetTimes' => '5,4,8',
    'width' => 100,
    'height' => 100
);

# 创建排序后的字典
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/snapshot/${userid}/addTask?".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...

创建 Playsafe Token

接口URL

https://hls.videocc.net/service/v1/token

接口说明

  1. 用于创建 Playsafe Token,这个 token 即是加密视频的播放凭证
  2. 如果一个token尚未过期,此时使用相同的 videoId、viewerId、viewerIp、iswxa 参数值请求该接口,则会复用原来的token,并延长原token的有效期。

支持格式

JSON

请求方式

POST

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
userId string 用户ID
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": "973d7731803940a1b14fdc93941f493c",
        "userId": "e6b23c6f51",
        "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示例:

userId 错误

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

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
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;
}

$userId = 'your userId';       // polyv 提供的服务器间的通讯验证
$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();  // 自定义参数,可为空

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

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

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



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

$options = array(
    'http' => array(
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => http_build_query($data)
    )
);
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);

// 获取返回结果的 token, 再传入 playsafe 中播放加密视频
$token = json_decode($result)->data->token;
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

删除视频字幕

接口URL

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

接口说明

删除视频字幕。

支持格式

JSON

请求方式

POST

请求参数

参数名 必选 类型及范围 说明
userid true string 用户id,路径参数
ptime true string 当前13位毫秒级时间戳,3分钟内有效
sign true string 签名,40位大写的sha1值
vid true string 视频ID,例如 e6b23c6f51938e173b8e573b881f7723_e
ranks true string 字幕序号列表,序号从1开始,多个以英文逗号分隔,例如 2,3

返回结果

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

失败返回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. 加密串不正确
401 vid is blank. vid 为空
401 ranks is blank. ranks 为空
402 cannot find the video. 找不到视频
402 invalid srt ranks. 无效的视频字幕序号

PHP请求示例

<?php
header("Content-type: text/html; charset=utf-8");
$userid="用户id";
$vid="视频id";
$ranks="视频序号";
$ptime=time()*1000;//13位
$secretkey="填写secretkey";
$str="ptime=".$ptime."&vid=".$vid."&ranks=".$ranks.$secretkey;

$hash=strtoupper(sha1($str));
$url="https://api.polyv.net/v2/video/$userid/srt/delete?ptime=$ptime&sign=$hash&vid=$vid&ranks=$ranks";
$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 = "8205ac89d30adeb51a6f8bf1a1df6f63_8"

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

ptime = "1492591990000"
vid = "8205ac89d30adeb51a6f8bf1a1df6f63_8"

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

ptime=1492591990000&vid=8205ac89d30adeb51a6f8bf1a1df6f63_8tIQp4ATe9Z

4、生成签名sign

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