個人感覺,阿里的文檔比微信的要坑很多…
微信最多是有些比較重要的東西放到比較不起眼、比較難發現的地方.
阿里的文檔就是要么就是sdk已經更新了,但是文檔還沒更新,導致文檔與sdk不匹配.在關鍵點卡我一下…
要么是同樣的功能有好幾個版本的sdk以及文檔,卻不告訴你哪個是最新的…
吐槽結束~
準備工作
1.最重要的,先仔細看下視頻直播文檔!
2. 購買阿里云的視頻直播服務 ,用量不大的時候建議使用按量收費的方式結算,接通之后消耗了流量才扣錢;
3. 準備好備案的域名,到時候需要解析兩個二級域名(推流域名與拉流域名);
4. 如果需要存儲直播視頻文件的話,需要使用對象存儲oss服務,因為直播錄制的視頻都會到這里面.這也是可以先使用后收費的(按量收費).
域名管理
首先進入視頻直播的控制臺>>域名管理>>添加域名
添加兩次,分別是播流域名和推流域名,
添加完成之后進行域名解析配置這兩個域名的cdn加速指向分配的cname.
然后配置將它們兩個域名(一個推流,一個播流)關聯起來.
配置鑒權
推流與播流的鏈接都是以一定的規則自己拼起來的,首先要在域名配置
地址生成器及demo演示-熟悉鑒權
appname:隨意理解,或者理解為分組吧;
streamname:理解為直播的id,一個streamname同時只能推一個直播流.可以開始直播-終止直播-開始直播-終止直播…
有關鑒權的規則是這樣的:鑒權規則
代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
<?php $appname = 'appname' ; //app名稱 ,隨意設定 $streamname = "streamname" ; //直播流名稱 ,隨意設定 $now = time(); //------------------- 阿里云視頻直播控制臺 地址生成器 鑒權設置 ----------- //加密key,即直播后臺鑒權里面自行設置 $pull_key = 'ocudfghygm' ; //播流 主key $push_key = '0hgggfjaht' ; //推流 主key $time = $now + 60*60*3; //url的有效期 180分鐘 隨意設定 //------------------------ end --------------------------------------------- $strpush = "/{$appname}/{$streamname}-{$time}-0-0-{$push_key}" ; $push_cdn = 'push.paxy365.com' ; $pull_cdn = 'pull.paxy365.com' ; //推流地址 一個 $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)到手機上,測試這url是否有用~
接入sdk
阿里是將所有的sdk打包一起下載,里面不僅有視頻直播的sdk,還有別的業務的sdk…t_t
php sdk 下載地址
我的項目是tp框架(還是3.2的t_t)
在一開始拿到sdk代碼的時候很懵逼,無從下手…
度娘了下才知道要引入的是這兩個文件 ! ! !
1
2
3
4
5
|
<?php use oss\ossclient; use oss\core\ossexception; include_once lib_path . 'vendor/aliyun-openapi/aliyun-php-sdk-core/config.php' ; // lib_path 指向的是 項目地址/thinkphp/library/ include_once lib_path . 'vendor/aliyun-oss-php/autoload.php' ; |
配置accesskeyid accesskeysecret
這里并沒有用子賬號ram權限,因此我這種方法配置的密鑰對阿里的所有密鑰有效,不建議這么做!
直播在線流sdk接入,我這里是用已知的直播流名稱去檢測它是否在線
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
<?php /** * 在線流判斷 * 獲取某直播流正在推的流的信息 */ public function streamsonlinelist( $stream_name = '' ){ $iclientprofile = \defaultprofile::getprofile( "cn-shenzhen" , 'accesskeyid' , 'accesskeysecret' ; //cn-shenzhen 這個貌似都可以,我填cn-hangzhou也沒問題 access key id,access key secret $client = new \defaultacsclient( $iclientprofile ); $request = new \live\request\v20161101\describelivestreamsonlinelistrequest(); $request ->setappname( '應用名稱' ); //應用名稱。 $request ->setstreamname( $stream_name ); //流名稱。不填的話就是查appname下所有的在線直播流 $request ->setdomainname( 'pull.xxx.com' ); //您的加速域名。播流域名 $request ->setpagenum( '1' ); //取得第幾頁,默認1。 //以下參數我都沒有用到,因此注釋了 //$request ->setstreamtype('all'); //流類型。取值范圍:all raw trans 對應查詢所有流、原始流、轉碼流,默認all返回所有流信息 //$request ->setstarttime('2019-03-04t00:00:00z'); //$request ->setendtime('2019-03-04t23:59:59z'); //$request ->setpagesize('2000'); //每頁大小,最大3000。 取值:1~3000之前的任意整數。 默認值:2000 //$request ->setquerytype('strict'); //指定是否模糊匹配流名稱。 取值: fuzzy:模糊匹配 strict:精準匹配 //$request ->setorderby(''); //文檔中沒有,sdk有該參數,非必填 //$request ->setownerid(''); //文檔中沒有,sdk有該參數,非必填 //針對阿里云進行請求 $response = $client ->getacsresponse( $request ); //對象轉數組,總感覺我這種方法太土了...網上也有很多自定義的函數可以對象轉數組 $response = json_decode(json_encode( $response ,true),true); dump( $response ); exit ; |
推流回調的配置
將回調接收到的數據打印出來
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[ "action" ]=> string(7) "publish" //publish 推流開始 publish_done推流結束 [ "ip" ]=> string(14) "139.147.54.224" [ "id" ]=> string(24) "y-12005-870-1-2019030610" //streamname 自己設定的直播流名稱(這里叫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" |
到此這篇關于阿里云視頻直播php-sdk接入教程的文章就介紹到這了,更多相關阿里云視頻直播php-sdk 內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/qq_41976646/article/details/88317894