欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > 深入探索:使用PHP开发保利威Polyv云点播服务器API对接实践(一)(点播服务器 API、视频加密、跑马灯防录屏、自定义用户)

深入探索:使用PHP开发保利威Polyv云点播服务器API对接实践(一)(点播服务器 API、视频加密、跑马灯防录屏、自定义用户)

2024/10/24 10:21:14 来源:https://blog.csdn.net/weixin_41290949/article/details/140840994  浏览:    关键词:深入探索:使用PHP开发保利威Polyv云点播服务器API对接实践(一)(点播服务器 API、视频加密、跑马灯防录屏、自定义用户)

深入探索:使用PHP开发保利威Polyv云点播服务器API对接实践(一)

  • 一、点播服务器 API
    • 1.公用函数
      • post方式
      • get方式
      • md5签名
      • SHA1签名
      • 字符串替换函数
    • 常用变量配置
    • 2.获取视频播放凭证token
    • 3.查询视频信息
    • 4.查询单个视频的观看完成度
    • 5.授权播放和跑马灯验证
  • 二、点播播放器JS SDK

一、点播服务器 API

1.公用函数

保利威接口请求方式,包含post和get两种方式,因此,需要做好两种请求方式的封装函数。

post方式

/*** 保利威POST爬虫规则* 通过cURL发起POST请求获取数据* @param string $url 请求的URL地址* @param array $data 提交的POST数据* @return string 返回爬取的数据*/
function postPolyvAPI($url, $data)
{$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $data);$output = curl_exec($ch);curl_close($ch);return $output;
}

get方式

/*** 使用CURL获取Polyv API数据* 本函数通过CURL库发送HTTP请求到指定的URL,以获取Polyv API返回的数据它主要用于与Polyv平台的交互,* 获取视频相关信息或其他服务提供的数据* @param string $url 请求的URL地址,必须是有效的Polyv API接口地址* @return string 返回API的响应数据,通常是JSON格式字符串*/
function getPolyvAPI($url)
{$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);if (1 == strpos("$" . $url, "https://")) {curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);}curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$resp = curl_exec($ch);curl_close($ch);return $resp;
}

md5签名

/*** 生成Polyv SHA1签名* 该函数用于根据给定的数据和密钥,生成一个SHA1签名* 主要用于安全校验,确保数据的完整性和防篡改* @param array $data 待签名的数据,通常是一个关联数组* @param string $secretkey 秘钥,用于签名计算的密钥* @return string 签名结果,返回一个大写的MD5字符串*/
function polyv_md5_sign($data, $secretkey)
{$data = http_build_query($data);$md5_str = $secretkey . replaceSpecialChars($data, '', '') . $secretkey;return strtoupper(md5($md5_str)); //计算MD5签名
}

SHA1签名

/*** 生成Polyv SHA1签名* 该函数用于根据给定的数据和密钥,生成一个SHA1签名* 主要用于安全校验,确保数据的完整性和防篡改* @param array $data 待签名的数据,通常是一个关联数组* @param string $secretkey 秘钥,用于签名计算的密钥* @return string 签名结果,返回一个大写的MD5字符串*/
function polyv_sha1_sign($data, $secretkey)
{$data = http_build_query($data, '', '&', PHP_QUERY_RFC3986);return strtoupper(sha1($data . $secretkey)); //计算SHA1签名
}

字符串替换函数

/*** 替换字符串中的特殊字符* 该函数用于将输入字符串中的特定特殊字符(= 和 &)替换为指定的字符* 主要用于处理URL参数等场景,以避免特殊字符导致的解析错误或安全问题* @param string $input 需要进行替换的原始字符串* @param string $replaceEqual 替换等于号(=)的字符,默认为下划线(_)* @param string $replaceAmpersand 替换与号(&)的字符,默认为连字符(-)* @return string 替换后的字符串*/
function replaceSpecialChars($input, $replaceEqual = '_', $replaceAmpersand = '-')
{//使用str_replace替换=和&return str_replace(['=', '&'], [$replaceEqual, $replaceAmpersand], $input);
}

常用变量配置

$userId = '2ec3**';//保利威点播账户id,可以参考【获取密钥】获取,获取路径:官网->登录->点播(API接口
$secretkey = 'tM0rt**';//secretkey密钥用于生成签名,作为通信数据安全的关键信息,严禁保存在客户端直接使用,所有API都必须通过客户自己服务器中转调用POLYV服务器获取响应数据
$videoId = "2ec3e5dba0a5e48f2af011b208f6f00c_2";//视频vid
$vid = "2ec3e5dba0a5e48f2af011b208f6f00c_2";//视频vid
$viewerId = '135068***';//自定义用户id
$ts = time() * 1000;//当前13位毫秒级时间戳,10分钟内有效;
$ptime = time() * 1000;//当前13位毫秒级时间戳,10分钟内有效;

2.获取视频播放凭证token

  • 获取Playsafe Token(播放凭证),用于播放加密视频
  • 如果一个token尚未过期,此时使用相同的videoId、viewerId、viewerIp、iswxa参数值请求该接口,则会复用原来的token,并延长原token的有效期
  • 接口支持https协议
/*获取SHA1签名参数数组*/
$data_sign = ['ts' => $ts,'userId' => $userId,'videoId' => $videoId,'viewerId' => $viewerId
];
$sign = polyv_md5_sign($data_sign, $secretkey);/*获取API数组*/
$data = ['sign' => $sign,'ts' => $ts,'userId' => $userId,'videoId' => $videoId,'viewerId' => $viewerId];
$sign2 = md5($secretkey . $videoId . $ts);
$url = "http://hls.videocc.net/service/v1/token";
$obj = json_decode(postPolyvAPI($url, $data), true);
$token = $obj['data']['token'];

3.查询视频信息

  • 通过视频id查询视频信息
  • 接口URL中的{userId}为点播账号userId
  • 接口支持https协议
//参数数组
$data = ['filters' => 'metaData','ptime' => $ptime,'title' => $vid,'userid' => $userid,'viewerId' => $viewerId
];
$sign = polyv_sha1_sign($data, $secretkey);
$url = "http://api.polyv.net/v2/video/search-videos?sign=" . $sign . "&" . http_build_query($data);
die(getPolyvAPI($url));

4.查询单个视频的观看完成度

  • 查询观众累计观看单个视频的完成度情况
  • 数据的查询需要间隔一天,该接口需联系客服开通后才能使用
  • 观看完成度=用户观看有效时长/视频时长,例如:视频A时长为50分钟,用户使用PC H5观看了第0-20分钟,又使用APP观看了第10~30分钟,此时用户有效观看时长为30分钟,则完成度为 30/50=60
  • 接口URL中的{userid}为点播账号userid,具体参考
  • 接口支持https协议
/参数数组
$data = ['ptime' => $ptime,'userid' => $userid,'vid' => $vid,'viewerId' => $viewerId
];
$sign = polyv_sha1_sign($data, $secretkey);
$url = "http://api.polyv.net/v2/video/engagement/" . $userid . "/get?sign=" . $sign . "&" . http_build_query($data);
die(getPolyvAPI($url));

5.授权播放和跑马灯验证

屏幕录像是最难防范的一种视频盗版方式,保利威播放器提供的防录屏跑马灯功能,通过设定文字内容(一般是观众的身份ID信息)在视频上不规则滚动,以此来警示盗版者,达到视频版权保护的效果。另外在用户网站中,除了通过登录信息(cookies)验证观众是否有权限访问视频播放页面外,还可以通过保利威播放器验证观众是否有播放某一个视频的权限,从而实现对观众权限的双重验证。

$username = '保哥后院';
$secretkey = 'tM0rtpiR0u';
$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 = "ok";if ($username != "") { // 业务方可自定义授权验证逻辑$status = 1;
} else {$status = 2;
}$callback = $_GET["callback"];
if (!empty($_GET["callback"])) {$callback = $_GET["callback"];
} else {$callback = 'polv110';
}
$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;
}

配置步骤:

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

二、点播播放器JS SDK

  • 禁止拖拽进度条
  • 支持视频加密
  • 支持跑马灯防止录屏功能
  • 支持自定义用户信息
var player = polyvPlayer({wrap: '#player',width: '100%',height: 0,vid: '2ec3e5dba0a5e48f2af011b208f6f00c_2',ban_seek: 'on',//是否禁止拖拽进度条playsafe: "<?php echo $token; ?>",ts: "<?php echo $ts; ?>",sign: "<?php echo $sign2; ?>",code: "lockdatav",//跑马灯参数配置marqueeCheck: true,//跑马灯核检viewerInfo: {viewerId: '13506843416', // 观众IDviewerName: 'lockdatav', // 观众昵称viewerAvatar: 'https://my.domain.com/user/avatar.png',// 观众头像URL}});

@漏刻有时

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com