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

接口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...

观众信息

一、如何设置播放器观看日志发送观众信息

如下示例代码,在播放代码中,添加参数viewerInfo设置观众信息。

<script src='//player.polyv.net/script/polyvplayer.min.js'></script>
<div id='plv_e2e84a7383f869a0c8501b0c2f3dbdec_e'></div>
<script>
    var player = polyvObject('#plv_e2e84a7383f869a0c8501b0c2f3dbdec_e').videoPlayer({
     'width': '600',
     'height': '450',
     'vid': 'e2e84a7383f869a0c8501b0c2f3dbdec_e',
     'viewerInfo': {
        viewerId: '1555313336634',
        viewerName: 'polyv',
        viewerAvatar: ''
     }
    });
</script>

viewerInfo字段解析
字段名 取值范围 说明
viewerId String 学员信息ID
viewerName String 学员信息昵称
viewerAvatar String 学员信息头像

二、如何获取观众信息

当用户访问使用了以上示例播放代码的页面时,播放代码会将viewerInfo设置的观众信息提交到POLYV日志系统中保存。用户可通过调用获取某一天视频日志接口时,查询日志中每条记录的viewerInfo相关设置如viewerId、viewerName等。

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
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...

通过播放器接口显示问答题目

接口说明

针对某些需要以相对灵活的方式显示问答题目的场景,可以通过显示问答题目的播放器接口来实现。

使用方式

<script src="//player.polyv.net/script/polyvplayer.min.js"></script>
<div id="plv_02bfeb00e2ba940698c54cdf517aa9b6_0"></div>
<script>
var player = polyvObject('#plv_02bfeb00e2ba940698c54cdf517aa9b6_0').videoPlayer({
    'width':'600',
  'height':'338',
    'vid' : '02bfeb00e2ba940698c54cdf517aa9b6_0'
});
var questions = [{"examId":"45","question":"第1个问题:6 x 6 = ?","choices":[{"answer":"1"},{"answer":"2","right_answer":1},{"answer":"3"},{"answer":"4"}],"answer":"","wrongAnswer":"","skip":true,"wrongTime":25},{"examId":"23","question":"第2个问题:22 x 3 = ?","choices":[{"answer":"1","right_answer":1},{"answer":"2","right_answer":1},{"answer":"3"},{"answer":"4"}],"answer":"","wrongAnswer":"","skip":false,"wrongTime":-1}] //questions必须是一个数组,包含多个问答题目的话会依次显示。
player.sendQuestion(questions);
</script>

参数说明

参数名称 是否必填 默认值 描述
examId - 生成规则:Long.toHexString(System.currentTimeMillis()),11位的字符串,比如:1699e49ffeb,传值后可通过答题记录查询接口查询记录。
question - 题目
choices - 选项
right_answer - 正确答案
answer - 回答正确后的解答
wrongAnswer - 回答错误后的解答
wrongTime -1 回答错误后退回第几秒,-1代表不回退
skip true 能否跳过题目继续播放视频
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

如何实现视频封面图的动态预览效果

使用场景

在播放视频的入口页面,每个视频的封面图多数是静态图片,观众需要点击进入视频播放才能看到视频内容;如果想让观众不进入视频播放页面即可快速浏览视频内容,可以通过封面图的动态预览效果来实现。
当鼠标悬停在视频封面图上时,会加载动态预览图,并会随着鼠标的移动显示不同时间点的视频截图。

Demo效果

dpd_new (3)

实现方式

首先在页面中引用demo中的polyv-cover-preview.js文件,然后在需要显示动态预览效果的页面,嵌入以下代码:

<div data-vid="f13e9957353bbc54d8922d1cbd55ab9a_f" class="polyv-cover-preview" style="width:160px; height:90px;"></div>

其中,id为点播视频的vid,style中的width、height可设置为页面中需要显示的封面图宽高。
Demo请点击这里下载。

注意事项

只有时长大于5分钟的视频才会生成动态预览图,时长小于5分钟的视频只会显示静态的封面图。

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
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过期或签名错误,其它值为其它参数错误
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...

Web上传SDK使用文档

Polyv JavaScript 上传 SDK 为您提供上传媒体文件到保利威云点播平台的开发工具包。

功能

  • 快捷上传多种格式的媒体文件。
  • 支持上传时的各种设置,如文件标题、描述、标签、上传目录、是否开启课件优化处理等。
  • 默认采用分片并发上传的方式,支持断点续传

使用方法

前提条件

  1. 使用本 SDK 前,要先开通保利威云点播服务。如果您还不了解该服务,请登录产品主页查看,详见:云点播
  2. 获取 secretKey 等相关信息用于用户身份校验,您可以在「云点播管理后台 -> 设置 -> API接口」页面中找到相关信息,点击这里登录后台

浏览器支持

  • IE(>=10)和Edge。
  • 主流版本的 Chrome、Firefox、Safari。
  • 以主流版本 Chrome 为核心的浏览器,如最新版本的 QQ 浏览器、360 浏览器等。

集成 SDK

您可以选择以下任意一种方法调用本 SDK:

方法一:引入在线资源

<!-- 指定版本 -->
<script src="//player.polyv.net/resp/vod-upload-js-sdk/1.0.0/vod-upload-js-sdk.min.js"></script>
<!-- 最新版本 -->
<script src="//player.polyv.net/resp/vod-upload-js-sdk/latest/vod-upload-js-sdk.min.js"></script>

方法二:通过 npm 安装

第一步,在项目目录下运行安装命令:

npm install @polyv/vod-upload-js-sdk

第二步, 在页面中引入(需要构建工具支持):

import PlvVideoUpload from '@polyv/vod-upload-js-sdk'

或者

const PlvVideoUpload = require('@polyv/vod-upload-js-sdk');

快速开始

初始化上传实例

首先,创建 PlvVideoUpload 实例。

const videoUpload = new PlvVideoUpload({
  events: {
      Error: (err) => {  // 错误事件回调
          console.log(err);
      },
      UploadComplete: () => {}  // 全部上传任务完成回调
  }
});

调用 updateUserData() 设置账号授权验证信息,并每隔 3 分钟更新一次

// 授权验证信息3分钟内有效,当 sign 过期时需要调用该方法更新
videoUpload.updateUserData({
  userid: <userid> , // Polyv云点播账号的ID
  ptime: <timestamp> , // 时间戳,注意:系统时间不正确会导致校验失败
  sign: <sign> , // 是根据将secretkey和ts按照顺序拼凑起来的字符串进行MD5计算得到的值
  hash: <hash> , // 是根据将ts和writeToken按照顺序拼凑起来的字符串进行MD5计算得到的值
});

其中 ptime、sign 和 hash 都要从服务端获取,服务端的代码示例(PHP)如下:

/* 
userid、secretkey、writeToken都可以在「云点播管理后台 -> 设置 -> API接口」页面中找到。
*/
$userid = "your userid";
$secretkey = "your sercrety";
$writeToken = "your writeToken";

$ptime = time() * 1000; //注意:服务器系统时间不正确会导致校验失败
$sign = md5($secretkey . $ptime);
$hash = md5($ptime . $writeToken);

添加上传文件进入上传列表

fileSetting = { // 文件上传相关信息设置
  title: <title>,  // 标题
  desc: <desc>,  // 描述
  cataid: <cataid>,  // 上传分类目录ID
  tag: <tag>,  // 标签
  luping: 0,  // 是否开启视频课件优化处理,对于上传录屏类视频清晰度有所优化:0为不开启,1为开启
  keepsource: 0  // 是否源文件播放(不对视频进行编码):0为编码,1为不编码
};

调用 PlvVideoUpload 实例的 addFile(file, events, fileSetting) 方法,添加文件到文件列表,该方法返回一个 UploadManager 对象:

var uploadManager = videoUpload.addFile(
  file, // file 为待上传的文件对象
  { 
    FileStarted: function(uploadInfo) { // 文件开始上传回调
        console.log("文件上传开始: " + uploadInfo.fileData.title);
    },
    FileProgress: function(uploadInfo) { // 文件上传过程返回上传进度信息回调
        console.log("文件上传中: " + (uploadInfo.progress * 100).toFixed(2) + '%');
    },
    FileStopped: function(uploadInfo) { // 文件暂停上传回调
        console.log("文件上传停止: " + uploadInfo.fileData.title);
    },
    FileSucceed: function(uploadInfo) { // 文件上传成功回调
        console.log("文件上传成功: " + uploadInfo.fileData.title);
    },
    FileFailed: function(uploadInfo) { // 文件上传失败回调
        console.log("文件上传失败: " + uploadInfo.fileData.title);
    }
  },
  fileSetting
);

上传控制

videoUpload.startAll()  //开始上传所有文件
videoUpload.stopAll()  //停止上传所有文件
videoUpload.clearAll()  //清空文件列表
videoUpload.stopFile(id)  //暂停上传指定文件;id为文件id,和对应的UploadManager实例的id一致。
videoUpload.resumeFile(id)  //开始/继续上传指定文件
videoUpload.removeFile(id)  //删除指定文件

API 文档

见源代码中的 docs 文件夹或 点击此处打开

示例代码

请前往GitHub查看。
源代码中的 demo 文件夹包含两个示例:

  • dev.html & dev.js:以模块化方式引入 SDK 的示例。在本项目根目录下运行 npm run dev ,打开浏览器访问 http://127.0.0.1:14002/index.html 即可。
  • index.html & index.js:以 script 标签引入 SDK 的示例。

此外,还要修改 JS 文件中的 getPolyvAuthorization 变量为有效的请求地址,才能正常使用。

错误代码

错误代码 描述
102 用户剩余空间不足
110 文件重复
111 拦截文件类型不在 acceptedMimeType 中的文件
112 文件已经开始上传或已上传完毕,禁止修改文件信息

Change log

日期 版本 更新内容
2019-03-08 v1.0.0 正式版发布
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...