属性和接口说明

播放器属性

将所有参数以对象形式传入播放器,可以设置的属性包括:

名称 类型 是否必填 描述
vid string 上传到保利威平台的音视频的唯一ID
viewerInfo object 可选 自定义观众信息。设置后,播放器上报的观看行为日志中会附带观众信息。详见观众信息设置与统计
wrap string 可选 需要载入播放器的css选择器
skin string 可选 播放器皮肤(white / grey),如果使用自定义播放器皮肤,则不需传该参数。
autoPlay boolean 可选 是否自动播放。注:目前大多数浏览器都会限制自动播放,该参数可能无效。
loop boolean 可选 是否循环播放
volume number 可选 音量(范围0~1)
speed number 可选 倍速播放
startTime number 可选 从第几秒开始播放,需小于视频时长
playsafe function | string 可选 PC端播放加密音/视频所需的授权凭证,若要在PC端播放加密音视频才需要该参数,非加密音视频可忽略。详见:播放加密视频
playsafeUrl string 可选 获取PC端播放加密音/视频凭证的接口URL。与playsafe参数二选一。
sign string 可选 移动端播放加密音/视频所需的签名,非加密音/视频可忽略。详见:播放加密视频
ts string 可选 移动播放加密音/视频需传入的时间戳。

静态属性

可以通过 PlvAudioPlayer[key] 获取。

名称 类型 描述
EventType object 回调事件的汇总。

实例属性

每个播放器实例都有以下属性:

名称 类型 描述
audio object 原生的 audio 对象。
currentTime number 当前播放位置,单位:秒。
duration number 当前音频时长,单位:秒。
paused boolean 当前是否暂停状态。

播放器接口

API需要在播放器初始化完成之后调用,比如:

plvAudioPlayer.on('ready', function() {
  console.info('播放器初始化完毕');
  plvAudioPlayer.seek(100); // seek到第100秒
});

播放器接口列表如下:

名称 参数类型 说明
play / 开始播放
pause / 暂停播放
(async) changeVid (String|Object) 切换媒体文件。可传入vid字符串,或包含playsafe、sign、ts、vid属性的对象。
seek Number 跳转到指定位置播放,参数单位为:秒。
setLoop Boolean 是否循环播放
setSpeed Number 设置倍速播放,参数取值(0,16]。非法值将设置为 1。
setVolume Number 设置音量,参数取值[0,1]。非法值将设置为1。
stop / 终止播放
(async) updateParam / 更新播放器参数,音频会结束播放并重新下载。支持本文档中所列的播放器属性参数。
destroy / 销毁当前播放器实例

播放器事件

播放器提供了一些常用的事件回调,使用方法如:

plvAudioPlayer.on('ready', function() {
  console.info('ready');
});

事件列表如下:

名称 说明
ready 播放器初始化完毕,播放器提供的方法需在此事件发生后才可以调用。参数返回包含音频信息的data对象,可通过data.audioInfo 获取音频相关信息。
loadstart 在媒体开始加载时触发。
play 媒体播放时触发
playing 播放中,会触发多次
pause 暂停时触发
seeking 在跳跃操作开始时触发
seeked 在跳跃操作完成时触发
ratechange 在播放速率改变时触发
timeupdate 当前播放时间点(currentTime属性)改变时触发
waiting 在一个待执行的操作(如播放)因等待另一个操作(如跳跃或加载)被延迟时触发。
ended 播放结束时触发
stop stop方法完成后触发
hlsError 播放hls文件发生错误时触发
serverError 发生播放错误时触发,参数返回保护报错信息的data对象,可以通过 data.code 获取报错信息的错误码
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

H5同层播放

在Android手机上使用H5播放视频时,大多数的国内浏览器厂商都会在视频播放时劫持<video>标签,使用浏览器自带的播放器播放视频,而且播放器会处于最高层级,视频上面无法显示其它html元素。比如在Android微信下播放视频,Polyv播放器的皮肤控件没有显示出来,也是这个原因。对于这种情况暂时没有有效的解决办法。

但是由于X5内核的浏览器(微信、QQ浏览器)提供了一些属性可以解决覆盖Dom元素的问题,腾讯命名为同层播放。Polyv播放器支持在Android手机上开启同层播放功能,此功能只对使用了腾讯X5内核的浏览器有效,比如微信、QQ。

开启同层播放的播放器代码示例如下:

<div id="player"></div>
<script src="//player.polyv.net/script/player.js"></script>
<script>
var player = polyvPlayer({
    wrap: '#player',
    width: 800,
    height: 533,
    vid: '88083abbf5bcf1356e05d39666be527a_8',   
    useH5Page: true // 开启同层播放
});
</script>

注:经测试发现,小部分机型的微信、QQ内同层播放参数可能不生效。

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

播放加密视频

保利威视频加密采用私有的加密算法,提供包括加密转码、安全传输、解密播放等一体化的视频安全方案。通过对视频数据本身进行高强度的加密,视频文件即使被下载到本地也无法直接播放和传播,可有效防止视频泄露和盗版问题,详见:视频加密

为了方便开发者快速集成,我们将解密播放相关逻辑都封装到了播放器内部,与播放普通视频相比,在播放器端,开发者只需多传入播放凭证参数即可实现加密视频的播放。

开发指引

加密视频,需使用播放凭证方式进行播放,播放器需要传递的参数如下:

名称 类型 说明
playsafe String/Function PC端播放加密视频所需的授权凭证,业务方服务端通过创建 Playsafe Token接口获取并返回给播放器。
playsafeUrl String 获取PC端播放加密视频凭证的接口URL(与playsafe参数二选一
ts Number 移动端H5播放加密视频需传入的13位毫秒级时间戳
sign String 移动端H5播放加密视频所需的签名,生成规则为点播账号的secretkey、vid、ts的值按字母顺序拼接后进行md5计算后的值,由业务方服务端生成并返回给播放器。

注:playsafe或playsafeUrl参数用于PC端解密播放,ts、sign用于移动端H5播放器解密。如果PC和移动端使用同一份播放器代码,则三个参数都需要传值。

播放器代码示例:

<div id="player"></div>
<script src="//player.polyv.net/script/player.js"></script>
<script>
var player = polyvPlayer({
    wrap: '#player',
    width: 800,
    height: 533,
    vid: '88083abbf5bcf1356e05d39666be527a_8',   
    playsafe:'81814fed-bdd0-4506-bec1-ebc8093148c5-hfevwsfxcsbcocx', 
  //playsafeUrl:'https://myDomain.com/token', // 业务方自定义的获取播放凭证接口URL,与playsafe参数二选一
    ts:'1568131545000',
    sign:'88313661ba7ded642c7b557b0a364b4b'
});

//切换加密视频时,需要重新获取播放凭证。如果初始化播放器时使用了playsafeUrl参数,则播放器会自动获取新的凭证,无需传playsafe参数。
player.changeVid({
  vid: '88083abbf5bcf1356e05d39666be527a_9', //需要切换的视频vid
  playsafe: '81814fed-bdd0-4506-bec1-ebc8093148c6-hfevwsfxcsbcocx', //新获取的playsafe token
  sign: '88313661ba7ded642c7b557b0a364b4c', //新获取的sign和ts参数
  ts: '1568131545001'
});
</script>

Web页面播放加密视频前,需要先访问业务方自己的服务端授权验证接口(可以在这里加上自有业务的授权验证逻辑,例如是否登录、是否购买课程等, 建议使用HTTPS)。如果业务上允许播放,则通过创建 Playsafe Token接口获取播放凭证(或者在服务端生成sign、ts参数),并返回给Web端播放器。

服务端生成播放凭证代码示例:

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';       // 保利威点播账号的userId
$secretkey = 'your secretkey';     // 保利威点播账号的secretkey
$videoId = '88083abbf5bcf1356e05d39666be527a_8';  // 视频vid
$ts = time() * 1000;      // 时间戳
$viewerIp = get_client_ip();  // 观众ip
$viewerId = '12345';      // 观众id
$viewerName = 'testUser';  // 观众昵称, 若值为中文需要urlencode('张三')
$extraParams = 'HTML5';  // 自定义扩展参数
$disposable = false // true 表示 token 仅一次有效。false 则表示在有效期内可以多次验证。默认为 false。

/* 将参数 $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-urlencodedrn",
        'method'  => 'POST',
        'content' => http_build_query($data)
    )
);
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);

// 获取接口返回结果中的token值, 并传给播放器播放加密视频
$token = json_decode($result)->data->token;
echo $token;

如果播放器使用playsafeUrl参数的方式,则需输出json格式:

// 已省略获取token的代码...
$token = json_decode($result)->data->token;
$code = json_decode($result)->code; // 响应代码,200为成功,403为ts过期或签名错误,400为参数错误(例如缺少 userId 或 videoId)
$message=json_decode($result)->message;
$status=json_decode($result)->status;
if($code == 200){
    $array = Array("code"=>$code,'status'=>$status,'message'=>$message,"data"=>$token);
}else{
    $array = Array("code"=>$code,'status'=>$status,'message'=>$message,"data"=>json_decode($result)->data);
}
$Json = json_encode($array);
echo $Json; //输出json

playsafeUrl返回结果示例:

// 请求成功
{
    "code": 200,
    "status": "success",
    "message": "",
    "data": "973d7731803940a1b14fdc93941f493c"
}
// 请求失败(签名错误)
{
    "code": 403,
    "status": "error",
    "message": "sign_invalid",
    "data": "sign parameter invalid."
}

playsafeUrl可能存在跨域问题,解决方案请参考:跨域访问设置

如果需要在移动端H5播放Web加密视频,则需返回sign和ts参数给播放器:

// php
$vid = "88083abbf5bcf1356e05d39666be527a_8"; // 视频vid
$secretkey= "your secretkey"; // 保利威点播账号的secretkey
$ts=time()*1000;  // 10位的秒级时间戳,后面加多3个0,最后为13位的数值
$sign = md5($secretkey.$vid.$ts); 
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

跨域访问设置

一、什么是跨域?

跨域是指一个域下的文档或脚本试图去请求另一个域下的资源。广义的跨域包括:

  1. 资源跳转:A链接、重定向、表单提交
  2. 资源嵌入:<link><script><img><video>等Dom标签以及样式表中的background:url( )、@font-face( )等文件外链
  3. 脚本请求:Ajax请求、Dom和JavaScript对象的跨域操作等

而我们通常所说的跨域是狭义的,是由浏览器同源策略限制的一类请求场景。同源策略(Same-origin policy)是浏览器最核心也最基本的一个安全策略,它限制了从同一个源加载的文档或脚本如何与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。所谓同源是指协议、域名、端口三者相同,当一个请求URL的协议、域名、端口三者中任意一个与当前页面URL不同即为跨域。同源策略的限制如下:

  1. 无法读取非同源网页的Cookie、LocalStorage和IndexDB
  2. 无法获得非同源网页的Dom和Js对象
  3. 无法向非同源地址发送Ajax请求

二、跨域解决方案

常见的跨域解决方案有:

  • 通过jsonp跨域
  • 跨域资源共享(CORS)
  • Nginx代理跨域
  • postMessage跨域
  • WebSocket协议跨域
  • ...

开发者应结合实际情况选择最适合的方案,下面将对与保利威视频播放服务相关的跨域问题解决方案进行介绍。

1、通过jsonp跨域

<script><img>等一些获取资源的HTML标签是没有跨域限制的,基于此原理,网页可通过添加一个<script>,向服务器请求 JSON 数据,服务器收到请求后将数据放在一个指定名字的回调函数的参数位置传回来。

JSONP 是服务器与客户端跨源通信的常用方法。最大特点就是简单适用,兼容性好(兼容低版本IE),缺点是只支持GET请求。

原生实现:

<script src="http://www.domain2.com:8080/login?user=admin&callback=handleCallback"></script>
// 向服务器test.com发出请求,该请求的查询字符串有一个callback参数,用来指定回调函数的名字

// 处理服务器返回回调函数的数据
<script type="text/javascript">
    function handleCallback(res){
        // 处理获得的数据
        console.log(res);
    }
</script>

服务端返回数据如下:

handleCallback({"status":true,"user":"admin"})

jQuery Ajax:

$.ajax({
    url: 'http://www.domain2.com:8080/login',
    type: 'get',
    dataType: 'jsonp',  // 请求方式为jsonp
    jsonpCallback: "handleCallback",    // 自定义回调函数名
    data: {}
});

Vue.js:

this.$http.jsonp('http://www.domain2.com:8080/login', {
    params: {},
    jsonp: 'handleCallback'
}).then((res) => {
    console.log(res); 
})

2、跨域资源共享(CORS)

跨域资源共享(Cross-Origin Resource Sharing)是W3C标准,目前所有浏览器都支持该功能(IE8/9需要使用XDomainRequest对象来支持CORS),CORS也已经成为主流的跨域解决方案。详见Http访问控制CORS的详解

  • 普通跨域请求:只需服务端设置Access-Control-Allow-Origin即可,前端无需设置
  • 带cookie跨域请求:前后端都需要进行设置

前端设置:

1.) 原生Ajax

var xhr = new XMLHttpRequest(); // IE8/9需用window.XDomainRequest兼容

// 前端设置是否带cookie
xhr.withCredentials = true;

xhr.open('post', 'http://www.domain2.com:8080/login', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send('user=admin');

xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
        alert(xhr.responseText);
    }
};

2.) jQuery Ajax

$.ajax({
   url: 'http://www.domain2.com:8080/login',
   type: 'get',
   data: {},
   xhrFields: {
       withCredentials: true    // 前端设置是否带cookie
   },
   crossDomain: true,   // 会让请求头中包含跨域的额外信息,但不会含cookie
});

3.) vue-resource

Vue.http.options.credentials = true

4.) axios

axios.defaults.withCredentials = true

服务端设置:

服务器端对于CORS的支持,主要是通过设置Access-Control-Allow-Origin来进行的。如果浏览器检测到相应的设置,就可以允许Ajax进行跨域的访问。

1.) Java后台

/*
 * 导入包:import javax.servlet.http.HttpServletResponse;
 * 接口参数中定义:HttpServletResponse response
 */

// 允许跨域访问的域名:若有端口需写全(协议+域名+端口),若没有端口末尾不用加'/'
response.setHeader("Access-Control-Allow-Origin", "http://www.domain1.com"); 

// 允许前端带认证cookie:启用此项后,上面的域名不能为'*',必须指定具体的域名,否则浏览器会提示
response.setHeader("Access-Control-Allow-Credentials", "true"); 

// 提示OPTIONS预检时,后端需要设置的两个常用自定义头
response.setHeader("Access-Control-Allow-Headers", "Content-Type,X-Requested-With");

2.) PHP后台

<?php
 header("Access-Control-Allow-Origin:*");

3、Flash播放器的跨域配置

Flash播放器在请求授权播放和跑马灯接口时,需要配置允许跨域请求。配置方式为:添加crossdomain.xml文件到播放域名的根目录下。

crossdomain.xml文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<cross-domain-policy>
    <allow-access-from domain="*"/>
    <allow-http-request-headers-from domain="*" headers="*" secure="false"/>
</cross-domain-policy>
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

授权播放和跑马灯

屏幕录像是最难防范的一种视频盗版方式,保利威播放器提供的防录屏跑马灯功能,通过设定文字内容(一般是观众的身份ID信息)在视频上不规则滚动,以此来警示盗版者,达到视频版权保护的效果。

另外在用户网站中,除了通过登录信息(cookies)验证观众是否有权限访问视频播放页面外,还可以通过保利威播放器验证观众是否有播放某一个视频的权限,从而实现对观众权限的双重验证。

防录屏跑马灯的视频介绍:防录屏神器–跑马灯(视频)

实现流程

image-20200831160621474

实现步骤

一、管理后台设置

  1. 登录云点播管理后台,点击 【设置】【视频设置】,进入视频设置页面。
  2. 在授权播放和防录屏跑马灯接口设置栏中,填写业务方的接口服务URL。
    image-20200831161317380

播放器在请求授权接口时,会自动适配以下情况:

  1. 当填写的是完整的URL时,播放器会直接请求,例如:http://mywebsite.com/interface/validate。
  2. 当填写的是不带协议头的接口地址时,播放器会根据当前页面的请求协议自动补全。例如填写的是://mywebsite.com/interface/validate,当前页面使用https协议访问,那么实际请求的是:https://mywebsite.com/interface/validate。
  3. 当填写的是不带协议头和HOST的接口地址时,播放器会根据当前页面的请求协议和HOST自动补全。例如填写的是:/interface/validate 或 interface/validate,当前页面的域名是mywebsite2.com,且页面使用http协议访问,那么实际请求的是:http://mywebsite2.com/interface/validate。

二、业务方服务端实现

1、播放器端请求

当管理后台设置授权播放和跑马灯接口后,Polyv播放器在播放视频时会首先请求后台设置的接口,请求的方式为GET,并且会附带vid、code、t、callback这四个参数,例如:https://www.mywebsite.com/validate?vid=e2e84a73837363106d8d257f60e55c4c_e&code=&t=1457938821973&callback=polyvObject16209048491895664483_1457938783908&_=1457938784101。

其中code为播放器嵌入代码中的参数,值可以自定义;t为播放器产生的随机数。播放器示例代码如下:

<script src='https://player.polyv.net/script/player.js'></script>
<div id='player'></div>
<script>
var player = polyvPlayer({
    wrap: '#player',
    width: 800,
    height: 533,
    vid: '88083abbf5bcf1356e05d39666be527a_8',   
    code: 'myCodeValue'  // 用户可自定义参数值,也可以不设置此参数,那么在请求接口时该参数值为空。参数值为中文时需要做base64URLSafe。
});
</script>

由于H5播放器通过Ajax方式请求用户接口,需要跨域请求,因此需要callback参数。而Flash播放器是通过跨域文件实现跨域,所以不需要callback参数,请求接口时只会提交vid、code和t三个参数。Flash播放器实现跨域请参考跨域访问设置

2、服务端接口实现

业务方服务端接口如果只需实现授权验证的功能,只需返回 status、username、sign三个参数给播放器验证即可。

服务端实现的PHP示例如下:

// validate.php
<?php
$username = "elvis"; // 用户昵称, 若值为中文需要urlencode('张三'),可从session获取
$secretkey = "secretkey"; // 登录保利威管理后台,点击 【设置】 → 【API接口】获取
$vid=$_GET["vid"];
$t = $_GET["t"];
$code = $_GET["code"];

if($username=="elvis"){ 
  $status = 1; // 业务方可自定义授权验证逻辑
}else {
  $status = 2;
}
if(!empty($_GET["callback"])){
  $callback = $_GET["callback"];
}else{
  $callback = '';
}

$sign=md5("vid=$vid&secretkey=$secretkey&username=$username&code=$code&status=$status&t=$t");
$array=Array("status"=>$status,"username"=>$username,"sign"=>$sign);
$Json = json_encode($array);

if($callback!=''){ //PC H5播放器会提交callback参数
  echo $callback."(".$Json.")";
} else{ //Flash播放器不提交callback参数
  echo "(".$Json.")";
}
?>

其中,sign的计算规则为:拼接vid、secretkey、username、code、status、t参数做MD5计算:

Plain ="vid=" + vid + "&secretkey=" + secretKey + "&username=" + username + "&code=" + code + "&status=" +status + "&t=" + t
sign = MD5.hash(Plain);

以下为接口返回示例:

  polyvObject16208229674372271079_1478765178186({
  "status":1,
  "username":"elvis",
  "sign":"1cca74bd55c6076091ed84807065e5b7"
  })
// 不提交callback参数时
{
  "status":1,
  "username":"elvis",
  "sign":"2c2bfb00314da7d768d50a7d1e93bd9f"
}

如果除了授权验证,还需实现跑马灯功能,则接口需要返回跑马灯相关的参数。

服务端实现的PHP示例如下:

// validate.php
<?php
$username = "elvis"; // 用户昵称, 若值为中文需要urlencode('张三'),可从session获取
$secretkey = "secretkey"; // 登录保利威管理后台,点击 【设置】 → 【API接口】获取
$vid=$_GET["vid"];
$t = $_GET["t"];
$code = $_GET["code"];
$fontSize="40";
$fontColor="0xFFE900";
$speed="200";
$filter="on";
$setting="3";
$alpha="1";
$filterAlpha="1";
$filterColor="0x3914AF";
$blurX="2";
$blurY="2";
$tweenTime="1";
$interval="5";
$lifeTime="3";
$strength="4";
$show="on";
$msg="Errormessage!";

if($username=="elvis"){ // 业务方可自定义授权验证逻辑
 $status = 1;
}else {
 $status = 2;
}

if(!empty($_GET["callback"])){
 $callback = $_GET["callback"];
}else{
 $callback = '';
}

$sign=md5("vid=$vid&secretkey=$secretkey&username=$username&code=$code&status=$status&t=$t&msg=$msg&fontSize=$fontSize&fontColor=$fontColor&speed=$speed&filter=$filter&setting=$setting&alpha=$alpha&filterAlpha=$filterAlpha&filterColor=$filterColor&blurX=$blurX&blurY=$blurY&interval=$interval&lifeTime=$lifeTime&tweenTime=$tweenTime&strength=$strength&show=$show");
$array = Array("status"=>$status,"username"=>$username,"sign"=>$sign,"msg"=>$msg,"fontSize"=>$fontSize,"fontColor"=>$fontColor,"speed"=>$speed,"filter"=>$filter,"setting"=>$setting,"alpha"=>$alpha,"filterAlpha"=>$filterAlpha,"filterColor"=>$filterColor,"blurX"=>$blurX,"blurY"=>$blurY,"tweenTime"=>$tweenTime,"interval"=>$interval,"lifeTime"=>$lifeTime,"strength"=>$strength,"show"=>$show,);
$Json = json_encode($array);

if($callback!=''){
 echo $callback."(".$Json.")";
} else{
 echo $Json;
}
?>

其中,sign的计算规则为(参数必须按照示例中的顺序拼接):

Plain = "vid=" + vid + "&secretkey=" + secretKey + "&username=" + username + "&code=" + code + "&status=" + status + "&t=" + t + 
"&msg=" + msg + "&fontSize=" + fontSize + "&fontColor=" + fontColor + "&speed=" + speed +"&filter=" +filter + "&setting=" + setting + 
"&alpha=" + alpha + "&filterAlpha=" + filterAlpha  + "&filterColor=" + filterColor + "&blurX=" + blurX + "&blurY=" + blurY + 
"&interval=" + interval + "&lifeTime=" + lifeTime + "&tweenTime=" + tweenTime + "&strength=" + strength + "&show=" +show;
sign = MD5.hash(Plain);

例如:当vid="8f8482aaab11dd5f45f183a9192a04c5_8",secretkey="AiDQw1mAmi",username="suki",code="abc",status="1",t="143020010115550947",msg="Errormessage!",fontSize="40",fontColor="0xFFE900",speed="200",filter="on",setting="3",alpha="1",filterAlpha="1",filterColor="0x3914AF",blurX="2",blurY="2",interval="5",lifeTime="3",tweenTime="1",strength="4",show="on"时,
拼凑起来去MD5计算的字符串为:
vid=8f8482aaab11dd5f45f183a9192a04c5_8&secretkey=AiDQw1mAmi&username=suki&code=abc&status=1&t=143020010115550947&msg=Errormessage!&fontSize=40&fontColor=0xFFE900&speed=200&filter=on&setting=3&alpha=1&filterAlpha=1&filterColor=0x3914AF&blurX=2&blurY=2&interval=5&lifeTime=3&tweenTime=1&strength=4&show=on
则sign为MD5计算后32位小写的值:3b07f56f29b7fd728bf20020442338e7

以下为接口返回示例:

{
  "status":1,
  "username":"elvis",
  "sign":"6ab63590797e513d1b6c46b407413478",
  "msg":"Errormessage!",
  "fontSize":"40",
  "fontColor":"0xFFE900",
  "speed":"200",
  "filter":"on",
  "setting":"3",
  "alpha":"1",
  "filterAlpha":"1",
  "filterColor":"0x3914AF",
  "blurX":"2",
  "blurY":"2",
  "tweenTime":"1",
  "interval":"5",
  "lifeTime":"3",
  "strength":"4",
  "show":"on"
}

三、接口返回参数说明

参数名 类型 必填 默认值 说明
status Integer / 是否允许播放:1 允许 2 禁止
username String / 观众名称,也会用于跑马灯显示的文字内容。如果是中文需要做URLEncode
sign String / 接口签名,用于校验返回内容是否被篡改
show String off 当参数值为“on”时表示显示跑马灯,默认不显示
setting Integer 1 跑马灯滚动的样式:1 从右到左滚动 2 随机位置闪烁 3 从右到左闪烁滚动
speed Integer 200 跑马灯文字从右侧移至左侧所需时间,单位:1/10秒
lifeTime Integer 3 跑马灯文字显示时间,单位:秒
interval Integer 5 跑马灯文字隐藏间隔时间,单位:秒
tweenTime Integer 1 跑马灯文字渐隐渐现时间,单位:秒
fontSize Integer 30 跑马灯文字的字体大小
fontColor String 0x000000 跑马灯文字颜色,使用十六进制颜色值表示,如0xFF0000,默认为黑色
alpha Float 1 跑马灯文字透明度,取值范围0.01~1,参数值不能小于0.01
filter String off 跑马灯文字是否描边,on 描边 off 不描边
filterAlpha Float 1 文字描边透明度,取值范围0~1
filterColor String 0x000000 文字描边颜色,使用十六进制颜色值表示,如0xFF0000,默认为黑色
strength Integer 4 描边强度,取值范围0~255
blurX Integer 2 描边水平模糊量,取值范围0~255
blurY Integer 2 描边垂直模糊量,取值范围0~255
msg String / 自定义错误提示信息
  1. 当接口只做授权验证用途时,只需返回 status、username和sign三个参数,跑马灯相关参数可不返回。
  2. 请确保接口返回数据是utf-8编码,注意 status参数是整型,不能是字符串类型。
  3. 目前跑马灯功能不支持在移动端H5播放器上使用。
  4. 请尽量不要对播放器样式或\标签进行修改
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

广告设置

Polyv Web播放器支持在视频中插入广告,广告类型有:

  1. 片头广告:在视频开始前播放
  2. 片尾广告:在视频结束后播放
  3. 暂停广告:在视频暂停时显示
  4. 弹窗广告:在视频播放的某个指定时间点弹窗显示

保利威云点播平台支持通过以下两种方式来设置广告:

方式一:通过点播管理后台设置

  1. 登录云点播管理后台,点击 【广告管理】【添加广告】,进入广告设置页面。
  2. 在广告设置页面,您可以

    • 选择广告类型:片头、暂停、弹窗、片尾。
    • 设置广告的标题和描述信息。
    • 上传广告素材,支持JPEG,GIF,PNG,FLV, MP4格式,素材文件大小不超过500MB。
    • 为广告添加链接地址,点击跳转到指定页面。
    • 选择需要播放广告的视频分类。
    • 设置广告时长、是否允许跳过、跳过按钮的文案、以及在什么时间出现跳过按钮。
    • 设置广告投放的日期、时间段以及广告状态。

    image-20200827145254814

点击这里查看视频教程

方式二:通过播放器参数设置

除了在管理后台设置广告外,您还可以通过播放器参数进行更加灵活的控制。当管理后台和播放器参数都设置时,以播放器参数为准。

广告参数设置的代码示例如下:

<div id="player"></div>
<script src="//player.polyv.net/script/player.js"></script>
<script>
var player = polyvPlayer({
    wrap: '#player',
    width: 800,
    height: 533,
    vid: '88083abbf5bcf1356e05d39666be527a_8',
    adSkip: true, //是否显示跳过广告的按钮,默认为false
    adMatter: [{ // 广告参数详细配置
        location: 1, //广告位置: 1 片头广告,2 暂停广告,3 片尾广告,4 弹窗广告
        adtype: 1,  //广告资源类型: 1 图片广告,2 视频广告,3 swf广告(flash播放器生效)
        matterurl: 'https://myDomain.com/ad.mp4', //广告资源URL
        addrurl: 'http://www.polyv.net/', //广告点击跳转链接
        timesize: 5, //广告时长,单位:秒
        cataid: 1560331332756, //需播放广告的视频分类ID,默认为1
        poplocation: 1, //弹窗广告位置(1 右下角,2 右上角,3 左下角,4 左上角)
        popuptime: 45,//弹窗广告出现的时间(移动端无效),单位:秒
        skiptime: 1, //广告跳过按钮出现时间
        skipenabled: true,//是否显示跳过按钮
        skipbutton: '跳过'//跳过按钮提示文案
    }]
});
</script>

说明:

  1. 如果设置了adSkip参数,则不会读取adMatter数组里面的skipenabled参数。
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

播放器Logo设置

Logo是企业形象的符号化体现,设置播放器Logo便于观众对企业品牌的识别、记忆,从而有效帮助企业品牌的树立和传播。

保利威云点播平台支持通过以下两种方式来设置播放器Logo:

方式一:通过点播管理后台设置

  1. 登录云点播管理后台,点击 【播放器】选择已创建的播放器(或新建播放器)【修改】,进入播放器设置页面。
  2. 在播放器Logo栏中,进行自定义设置。您可以:
    • 上传一张图片作为播放器Logo
    • 查看当前Logo图片
    • 为Logo添加链接地址,点击跳转到指定页面
    • 设置Logo不透明度和显示位置

image-20200827110817629点击这里查看视频教程

方式二:通过播放器参数设置

除了在管理后台设置播放器Logo以外,您还可以通过播放器参数进行更加灵活的控制。当管理后台和播放器参数都设置时,以播放器参数为准。

Logo参数设置的代码示例如下:

<div id="player"></div>
<script src="//player.polyv.net/script/player.js"></script>
<script>
var player = polyvPlayer({
    wrap: '#player',
    width: 800,
    height: 533,
    vid: '88083abbf5bcf1356e05d39666be527a_8',   
    logo: {
      logo_width: 200, //Logo宽 默认 'auto'
      logo_height: 'auto', //Logo高 默认 'auto'
      logo_url: 'http://www.polyv.net/test.png', // Logo图片URL
      logo_pos: 2, //Logo显示位置,取值范围为:{0,1,2,3,4},分别代表:隐藏、左上、右上、左下、右下
      logo_link: 'http://www.polyv.net/', // 点击Logo的跳转链接 (选填)
      logo_alpha: 50, //Logo透明度,取值范围:(0,100)
      logoOffset: '40,50',//Logo偏移量,单位:百分比。坐标原点为播放器左上角,只在Logo位置为左上、右上时生效
      logo_resize: true //默认值为false,为true时会根据播放器窗口大小动态调整Logo的尺寸,若设置了logo宽高则该参数不生效
   }
});
</script>

说明:

  1. Logo图片支持的格式有:jpeg、png、gif,为了更好的显示效果,建议使用png格式的图片。
  2. Logo图片尺寸小于200*200时会显示原始尺寸,大于200*200像素时会被等比缩放。
  3. Logo与水印的实现机制不同:
    1. Logo是将图片添加到播放器窗口,不会对视频源文件产生影响。Logo可随时更换、调整显示位置或关闭。
    2. 水印是在视频转码时将图片“压”进视频流中,成为了视频的一部分。修改水印设置只对新上传的视频生效,不能对已发布视频的水印做任何修改。
  4. 移动端H5播放器由于系统或浏览器限制,在部分情况下无法显示Logo:
    • iOS设备在全屏播放视频时,会强制使用系统播放器,此时无法显示播放器Logo。
    • Android设备下大多数的国内浏览器厂商都会在视频播放时挟持标签,由浏览器内置播放器播放视频(且视频层级最高无法叠加页面元素),这种情况下也无法显示播放器Logo。
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

观众信息设置与统计

Polyv Web播放器支持设置观众信息参数,设置后在播放器上报的观看日志中会附带观众信息,这样用户就可以通过管理后台的统计页面或服务端API来查看特定观众的视频观看情况了。

一、观众信息设置

播放器设置观众信息参数的代码示例如下:

<div id="player"></div>
<script src="//player.polyv.net/script/player.js"></script>
<script>
var player = polyvPlayer({
    wrap: '#player',
    width: 800,
    height: 533,
    vid: '88083abbf5bcf1356e05d39666be527a_8',   
    viewerInfo: {
        viewerId: '1555313336634', // 观众ID
        viewerName: 'polyv', // 观众昵称
        viewerAvatar: 'https://my.domain.com/user/avatar.png', // 观众头像URL
        viewerExtraInfo1:'', // 自定义额外信息字段1
        viewerExtraInfo2:'', // 自定义额外信息字段2
        viewerExtraInfo3:'' // 自定义额外信息字段3
     }
});
</script>

viewerinfo参数字段说明

名称 类型 说明
viewerId String 观众ID
viewerName String 观众昵称
viewerAvatar String 观众头像图片URL
viewerExtraInfo1 String 自定义额外信息字段一,对应观看日志的param3字段
viewerExtraInfo2 String 自定义额外信息字段二,对应观看日志的param4字段
viewerExtraInfo3 String 自定义额外信息字段三,对应观看日志的param5字段

二、查看统计数据

1. 通过管理后台查看

观看日志:

image-20200822232239420高级分析:

audience-detail

视频高级分析功能的详细介绍请点击这里

2. 通过服务端API获取

用户可通过调用获取视频日志接口,根据接口返回的每条观看记录中的viewerId、viewerName等信息,掌握观众观看视频的情况。

img

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