云播自带解析php,使用PHP SDK,web端的华为云视频点播接入,加密视频播放的坑与解决方案-全代码篇...
下載phpdemo算是跑起來了,現(xiàn)在就要考慮租戶系統(tǒng)如自身驗證token的問題了。
1、先介紹下我的代碼目錄
2、文件執(zhí)行的時序圖和流程圖
2、代碼demo
test.php
function?curl_request($url,$post='',$cookie='',?$returnCookie=0){
$curl?=?curl_init();
curl_setopt($curl,?CURLOPT_URL,?$url);
curl_setopt($curl,?CURLOPT_USERAGENT,?'Mozilla/5.0?(compatible;?MSIE?10.0;?Windows?NT?6.1;?Trident/6.0)');
curl_setopt($curl,?CURLOPT_FOLLOWLOCATION,?1);
curl_setopt($curl,?CURLOPT_AUTOREFERER,?1);
curl_setopt($curl,?CURLOPT_REFERER,?"http://XXX");
if($post)?{
curl_setopt($curl,?CURLOPT_POST,?1);
curl_setopt($curl,?CURLOPT_POSTFIELDS,?http_build_query($post));
}
if($cookie)?{
curl_setopt($curl,?CURLOPT_COOKIE,?$cookie);
}
curl_setopt($curl,?CURLOPT_HEADER,?$returnCookie);
curl_setopt($curl,?CURLOPT_TIMEOUT,?10);
curl_setopt($curl,?CURLOPT_RETURNTRANSFER,?1);
$data?=?curl_exec($curl);
if?(curl_errno($curl))?{
return?curl_error($curl);
}
curl_close($curl);
if($returnCookie){
list($header,?$body)?=?explode("\r\n\r\n",?$data,?2);
preg_match_all("/Set\-Cookie:([^;]*);/",?$header,?$matches);
$info['cookie']??=?substr($matches[1][0],?1);
$info['content']?=?$body;
return?$info;
}else{
return?$data;
}
}
if(empty($_GET['token'])){
die('您非法訪問');
}
$param=array(
'token'=>$_GET['token']
);
$result=curl_request("http:/xxxxxx/ckparams.php",$param);
if?(!empty($result)){
$vodRsp?=?json_decode($result,false);
$status=$vodRsp->status;
$code=$vodRsp->code;
if($code!=='1001'){
echo?"非法訪問".$code;
}
}else{
echo?'請求參數(shù)錯誤';
die;
}
$urlToken=$status;
?>
html>
hwplayerloaded(function?()?{
var?player?=?new?HWPlayer("test",{?width:?480,?height:?300,?controls:?true?},function(){
alert(1111);
});
player.src(
{
src:'https://613.cdn-vod.huaweicloud.com/asset/65252102f1de7c4011c969dc803f2e58/play_video/<?php ?echo?$urlToken;?>/index.m3u8',
type:?"application/x-mpegURL"
}
);
player.play();
});
getkey.php
function?convertUrlQuery($query)
{
$queryParts?=?explode('&',?$query);
$params?=?array();
foreach?($queryParts?as?$param)?{
$item?=?explode('=',?$param);
$params[$item[0]]?=?$item[1];
}
return?$params;
}
function?getToken(){
$url?='https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$url?=?parse_url($url);
$param_arr?=convertUrlQuery($url['query']);
return?$param_arr['token'];
}
function?curl_request($url,$post='',$cookie='',?$returnCookie=0){
$curl?=?curl_init();
curl_setopt($curl,?CURLOPT_URL,?$url);
curl_setopt($curl,?CURLOPT_USERAGENT,?'Mozilla/5.0?(compatible;?MSIE?10.0;?Windows?NT?6.1;?Trident/6.0)');
curl_setopt($curl,?CURLOPT_FOLLOWLOCATION,?1);
curl_setopt($curl,?CURLOPT_AUTOREFERER,?1);
curl_setopt($curl,?CURLOPT_REFERER,?"http://XXX");
if($post)?{
curl_setopt($curl,?CURLOPT_POST,?1);
curl_setopt($curl,?CURLOPT_POSTFIELDS,?http_build_query($post));
}
if($cookie)?{
curl_setopt($curl,?CURLOPT_COOKIE,?$cookie);
}
curl_setopt($curl,?CURLOPT_HEADER,?$returnCookie);
curl_setopt($curl,?CURLOPT_TIMEOUT,?10);
curl_setopt($curl,?CURLOPT_RETURNTRANSFER,?1);
$data?=?curl_exec($curl);
if?(curl_errno($curl))?{
return?curl_error($curl);
}
curl_close($curl);
if($returnCookie){
list($header,?$body)?=?explode("\r\n\r\n",?$data,?2);
preg_match_all("/Set\-Cookie:([^;]*);/",?$header,?$matches);
$info['cookie']??=?substr($matches[1][0],?1);
$info['content']?=?$body;
return?$info;
}else{
return?$data;
}
}
$keyTokenCheck=getToken();
//file_put_contents("token.txt",$keyTokenCheck);
if(empty($keyTokenCheck)){
die;
}
$param=array(
'token'=>$keyTokenCheck
);
$result=curl_request("http://xxxxxx/ckplaytoken.php",$param);
if(!empty($result)){
$rs=json_decode($result,false);
$code=$rs->code;
$status=$rs->status;
if($code!=='1001'){
die;
}else{
$key=file_get_contents("key.map");
if($key){
echo?$key;
}else{
/**
*?查詢媒資密鑰
*/
require?'./cloudvod/vod/service/AssetService.php';
require?'./cloudvod/vod/model/QueryAssetCiphersReq.php';
$req?=?new?QueryAssetCiphersReq();
$req?->setAssetId('34345345345');
$rsp?=?"";
try?{
$rsp?=?AssetService::QueryAssetCiphers($req);
$rspp=json_decode($rsp->getBody());
$finalKey=base64_decode($rspp->dk);
file_put_contents("key.map",$finalKey);
echo?$finalKey;
}?catch?(Exception?$e)?{
echo?$e;
}
}
}
}
ckparams.php
function?checkAccessToken(){
//查詢傳過來的token是否在表中存在,且為0,表明已經(jīng)合法
//userid、accessPageToken、playUrlToken,status,playStatus?0,1主要核對表中的token的status狀態(tài)0不對,1正確,
return?true;
}
if(checkAccessToken()){
$result=array(
'code'=>'1001',
//這了自己改
'status'=>md5('234567')
);
}else{
$result=array(
'code'=>'1002',
'status'=>"訪問非法.."
);
}
//將md5的id加固定456字符串存入playUrlToken中
//更改這個token對應(yīng)的status,最后改變status位1,表明此次完畢
echo?json_encode($result);
?>
ckplaytoken.php
//將傳過來的32位token,在表中查找,存在且為0,表示合法
$result=array(
'code'=>'1001'
);
//返回之前將playStatus改為1
echo?json_encode($result);
?>
3、坑和期間可能出現(xiàn)的問題、待續(xù)
總結(jié)
以上是生活随笔為你收集整理的云播自带解析php,使用PHP SDK,web端的华为云视频点播接入,加密视频播放的坑与解决方案-全代码篇...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SVN数据代码迁移Windows2012
- 下一篇: 怎样判断电饭锅温度传感器的好坏?_空调温