詳解阿里云視頻直播PHP-SDK接入教程
阿里云 視頻直播 配置 及 PHP-SDK 接入教程
個(gè)人感覺,阿里的文檔比微信的要坑很多…
微信最多是有些比較重要的東西放到比較不起眼、比較難發(fā)現(xiàn)的地方.
阿里的文檔就是要么就是sdk已經(jīng)更新了,但是文檔還沒更新,導(dǎo)致文檔與SDK不匹配.在關(guān)鍵點(diǎn)卡我一下…
要么是同樣的功能有好幾個(gè)版本的SDK以及文檔,卻不告訴你哪個(gè)是最新的…
吐槽結(jié)束~
準(zhǔn)備工作
1.最重要的,先仔細(xì)看下視頻直播文檔!
2. 購買阿里云的視頻直播服務(wù) ,用量不大的時(shí)候建議使用按量收費(fèi)的方式結(jié)算,接通之后消耗了流量才扣錢;
3. 準(zhǔn)備好備案的域名,到時(shí)候需要解析兩個(gè)二級(jí)域名(推流域名與拉流域名);
4. 如果需要存儲(chǔ)直播視頻文件的話,需要使用對(duì)象存儲(chǔ)OSS服務(wù),因?yàn)橹辈ヤ浿频囊曨l都會(huì)到這里面.這也是可以先使用后收費(fèi)的(按量收費(fèi)).
域名管理
首先進(jìn)入視頻直播的控制臺(tái)>>域名管理>>添加域名
添加兩次,分別是播流域名和推流域名,
添加完成之后進(jìn)行域名解析配置這兩個(gè)域名的CDN加速指向分配的CNAME.
然后配置將它們兩個(gè)域名(一個(gè)推流,一個(gè)播流)關(guān)聯(lián)起來.
配置鑒權(quán)
推流與播流的鏈接都是以一定的規(guī)則自己拼起來的,首先要在域名配置
地址生成器及DEMO演示-熟悉鑒權(quán)
AppName:隨意理解,或者理解為分組吧;
StreamName:理解為直播的id,一個(gè)StreamName同時(shí)只能推一個(gè)直播流.可以開始直播-終止直播-開始直播-終止直播…
有關(guān)鑒權(quán)的規(guī)則是這樣的:鑒權(quán)規(guī)則
代碼如下:
<?php $AppName = 'AppName'; //app名稱 ,隨意設(shè)定 $StreamName = "StreamName"; //直播流名稱 ,隨意設(shè)定 $now = time(); //------------------- 阿里云視頻直播控制臺(tái) 地址生成器 鑒權(quán)設(shè)置 ----------- //加密key,即直播后臺(tái)鑒權(quán)里面自行設(shè)置 $pull_key = 'oCudfghYGM'; //播流 主key $push_key = '0hgggfjAhT'; //推流 主key $time = $now + 60*60*3; //URL的有效期 180分鐘 隨意設(shè)定 //------------------------ end --------------------------------------------- $strpush = "/{$AppName}/{$StreamName}-{$time}-0-0-{$push_key}"; $push_cdn = 'push.paxy365.com'; $pull_cdn = 'pull.paxy365.com'; //推流地址 一個(gè) $pushurl = "rtmp://{$push_cdn}/{$AppName}/{$StreamName}?auth_key={$time}-0-0-".md5($strpush); //播流地址 $strviewrtmp = "/{$AppName}/{$StreamName}-{$time}-0-0-{$pull_key}"; $strviewflv = "/{$AppName}/{$StreamName}.flv-{$time}-0-0-{$pull_key}"; $strviewm3u8 = "/{$AppName}/{$StreamName}.m3u8-{$time}-0-0-{$pull_key}"; $rtmpurl = "rtmp://{$pull_cdn}/{$AppName}/{$StreamName}?auth_key={$time}-0-0-".md5($strviewrtmp); //播流地址 $flvurl = "http://{$pull_cdn}/{$AppName}/{$StreamName}.flv?auth_key={$time}-0-0-".md5($strviewflv); //播流地址 $m3u8url = "http://{$pull_cdn}/{$AppName}/{$StreamName}.m3u8?auth_key={$time}-0-0-".md5($strviewm3u8); //播流地址
獲取到推流URL和播流URL就可以愉快地玩直播啦,可以下載阿里的DEMO(APP)到手機(jī)上,測試這URL是否有用~
接入SDK
阿里是將所有的SDK打包一起下載,里面不僅有視頻直播的SDK,還有別的業(yè)務(wù)的SDK…T_T
PHP SDK 下載地址
我的項(xiàng)目是TP框架(還是3.2的T_T)
在一開始拿到SDK代碼的時(shí)候很懵逼,無從下手…
度娘了下才知道要引入的是這兩個(gè)文件 ! ! !
<?php use OSS\OssClient; use OSS\Core\OssException; include_once LIB_PATH . 'Vendor/aliyun-openapi/aliyun-php-sdk-core/Config.php'; // LIB_PATH 指向的是 項(xiàng)目地址/ThinkPHP/Library/ include_once LIB_PATH . 'Vendor/aliyun-oss-php/autoload.php';
配置AccessKeyID AccessKeySecret
這里并沒有用子賬號(hào)RAM權(quán)限,因此我這種方法配置的密鑰對(duì)阿里的所有密鑰有效,不建議這么做!
直播在線流SDK接入,我這里是用已知的直播流名稱去檢測它是否在線
<?php /** * 在線流判斷 * 獲取某直播流正在推的流的信息 */ public function StreamsOnlineList($stream_name=''){ $iClientProfile = \DefaultProfile::getProfile("cn-shenzhen", 'AccessKeyID', 'AccessKeySecret'; //cn-shenzhen 這個(gè)貌似都可以,我填cn-hangzhou也沒問題 Access Key ID,Access Key Secret $client = new \DefaultAcsClient($iClientProfile); $request = new \live\Request\V20161101\DescribeLiveStreamsOnlineListRequest(); $request ->setAppName('應(yīng)用名稱'); //應(yīng)用名稱。 $request ->setStreamName($stream_name); //流名稱。不填的話就是查AppName下所有的在線直播流 $request ->setDomainName('pull.xxx.com'); //您的加速域名。播流域名 $request ->setPageNum('1'); //取得第幾頁,默認(rèn)1。 //以下參數(shù)我都沒有用到,因此注釋了 //$request ->setStreamType('all'); //流類型。取值范圍:all raw trans 對(duì)應(yīng)查詢所有流、原始流、轉(zhuǎn)碼流,默認(rèn)all返回所有流信息 //$request ->setStartTime('2019-03-04T00:00:00Z'); //$request ->setEndTime('2019-03-04T23:59:59Z'); //$request ->setPageSize('2000'); //每頁大小,最大3000。 取值:1~3000之前的任意整數(shù)。 默認(rèn)值:2000 //$request ->setQueryType('strict'); //指定是否模糊匹配流名稱。 取值: fuzzy:模糊匹配 strict:精準(zhǔn)匹配 //$request ->setOrderBy(''); //文檔中沒有,sdk有該參數(shù),非必填 //$request ->setOwnerId(''); //文檔中沒有,sdk有該參數(shù),非必填 //針對(duì)阿里云進(jìn)行請(qǐng)求 $response = $client->getAcsResponse($request); //對(duì)象轉(zhuǎn)數(shù)組,總感覺我這種方法太土了...網(wǎng)上也有很多自定義的函數(shù)可以對(duì)象轉(zhuǎn)數(shù)組 $response = json_decode(json_encode($response,true),true); dump($response);exit;
推流回調(diào)的配置
將回調(diào)接收到的數(shù)據(jù)打印出來
["action"]=> string(7) "publish" //publish 推流開始 publish_done推流結(jié)束 ["ip"]=> string(14) "139.147.54.224" ["id"]=> string(24) "y-12005-870-1-2019030610" //StreamName 自己設(shè)定的直播流名稱(這里叫id) ["app"]=> string(16) "push.xxxxx.com" ["appname"]=> string(6) "gifoge" //App名稱 ["time"]=> string(10) "1551839491" ["usrargs"]=> string(277) "vhost=pull.paxy365.com&auth_key=1551850143-0-0-6f97891e39859d558b8e583860f22094&ali_publisher_ip=119.137.54.224&ali_edge_node_ip=175.6.241.195&ali_node_via=cache2.cn541%2clive11.l2em21-3&alilive_streamidv2=2.cn541_6638_355280423_1551839490901&alilive_clienthost=live11.l2em21-3" ["node"]=> string(13) "135.6.541.195"
到此這篇關(guān)于阿里云視頻直播PHP-SDK接入教程的文章就介紹到這了,更多相關(guān)阿里云視頻直播PHP-SDK 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- jQuery+ThinkPHP+Ajax實(shí)現(xiàn)即時(shí)消息提醒功能實(shí)例代碼
- C# 調(diào)用騰訊即時(shí)通信 IM的示例
- java實(shí)現(xiàn)即時(shí)通信的完整步驟分享
- Android實(shí)現(xiàn)聊天記錄上傳本地服務(wù)器(即時(shí)通訊)
- python實(shí)現(xiàn)b站直播自動(dòng)發(fā)送彈幕功能
- php和騰訊直播的實(shí)現(xiàn)代碼
- 2分鐘實(shí)現(xiàn)一個(gè)Vue實(shí)時(shí)直播系統(tǒng)的示例代碼
- 詳解玩轉(zhuǎn)直播系列之消息模塊演進(jìn)
相關(guān)文章
Zend Framework框架實(shí)現(xiàn)類似Google搜索分頁效果
這篇文章主要介紹了Zend Framework框架實(shí)現(xiàn)類似Google搜索分頁效果,結(jié)合實(shí)例形式分析了Zend Framework框架實(shí)現(xiàn)分頁效果所涉及的基本查詢、判斷與分頁效果構(gòu)造相關(guān)操作技巧,需要的朋友可以參考下2016-11-11php中static 靜態(tài)變量和普通變量的區(qū)別
靜態(tài)變量與普通變量的區(qū)別在哪里呢,對(duì)于許多初學(xué)php的朋友來講可能不是點(diǎn)擊的明白了,今天我們來看看php中static 靜態(tài)變量和普通變量的區(qū)別吧,需要的朋友可以參考下2016-12-12Discuz批量替換帖子內(nèi)容的方法(使用SQL更新數(shù)據(jù)庫)
這篇文章主要介紹了Discuz批量替換帖子內(nèi)容的方法,使用SQL語句實(shí)現(xiàn),用REPLACE函數(shù)批量更新數(shù)據(jù)庫,需要的朋友可以參考下2014-06-06PHP調(diào)用微博接口實(shí)現(xiàn)微博登錄的方法示例
這篇文章主要介紹了PHP調(diào)用微博接口實(shí)現(xiàn)微博登錄的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-092017年最好用的9個(gè)php開發(fā)工具推薦(超好用)
對(duì)于php初學(xué)者不知道哪個(gè)php開發(fā)工具好用,下面小編給大家分享2017年最好用的9個(gè)php開發(fā)工具推薦,感興趣的朋友一起看看吧2017-10-10Zend Framework框架的registry(注冊(cè)表)使用示例
這篇文章主要介紹了Zend Framework框架的registry(注冊(cè)表)使用示例,提供對(duì)象方式使用與set、get方法使用示例,需要的朋友可以參考下2014-03-03基于thinkPHP框架實(shí)現(xiàn)留言板的方法
這篇文章主要介紹了基于thinkPHP框架實(shí)現(xiàn)留言板的方法,簡單分析了thinkPHP框架實(shí)現(xiàn)留言板的流程及控制器與模型的相關(guān)核心代碼,需要的朋友可以參考下2016-10-10