日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

云播自带解析php,使用PHP SDK,web端的华为云视频点播接入,加密视频播放的坑与解决方案-全代码篇...

發布時間:2025/3/15 php 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 云播自带解析php,使用PHP SDK,web端的华为云视频点播接入,加密视频播放的坑与解决方案-全代码篇... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

下載phpdemo算是跑起來了,現在就要考慮租戶系統如自身驗證token的問題了。

1、先介紹下我的代碼目錄

2、文件執行的時序圖和流程圖

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?'請求參數錯誤';

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,表明已經合法

//userid、accessPageToken、playUrlToken,status,playStatus?0,1主要核對表中的token的status狀態0不對,1正確,

return?true;

}

if(checkAccessToken()){

$result=array(

'code'=>'1001',

//這了自己改

'status'=>md5('234567')

);

}else{

$result=array(

'code'=>'1002',

'status'=>"訪問非法.."

);

}

//將md5的id加固定456字符串存入playUrlToken中

//更改這個token對應的status,最后改變status位1,表明此次完畢

echo?json_encode($result);

?>

ckplaytoken.php

//將傳過來的32位token,在表中查找,存在且為0,表示合法

$result=array(

'code'=>'1001'

);

//返回之前將playStatus改為1

echo?json_encode($result);

?>

3、坑和期間可能出現的問題、待續

總結

以上是生活随笔為你收集整理的云播自带解析php,使用PHP SDK,web端的华为云视频点播接入,加密视频播放的坑与解决方案-全代码篇...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。