阿里云视频直播PHP-SDK
阿里云 视频直播 配置 及 PHP-SDK 接入教程
准备工作
域名管理
配置鉴权
地址生成器及DEMO演示-熟悉鉴权
接入SDK
推流回调的配置
阿里云 视频直播 配置 及 PHP-SDK 接入教程
个人感觉,阿里的文档比微信的要坑很多…
微信最多是有些比较重要的东西放到比较不起眼、比较难发现的地方.
阿里的文档就是要么就是sdk已经更新了,但是文档还没更新,导致文档与SDK不匹配.在关键点卡我一下…
要么是同样的功能有好几个版本的SDK以及文档,却不告诉你哪个是最新的…
吐槽结束~
准备工作
1.最重要的,先仔细看下视频直播文档!
2. 购买阿里云的视频直播服务 ,用量不大的时候建议使用按量收费的方式结算,接通之后消耗了流量才扣钱;
3. 准备好备案的域名,到时候需要解析两个二级域名(推流域名与拉流域名);
4. 如果需要存储直播视频文件的话,需要使用对象存储OSS服务,因为直播录制的视频都会到这里面.这也是可以先使用后收费的(按量收费).
域名管理
首先进入视频直播的控制台>>域名管理>>添加域名
添加两次,分别是播流域名和推流域名,
添加完成之后进行域名解析配置这两个域名的CDN加速指向分配的CNAME.
然后配置将它们两个域名(一个推流,一个播流)关联起来.
配置鉴权
推流与播流的链接都是以一定的规则自己拼起来的,首先要在域名配置
地址生成器及DEMO演示-熟悉鉴权
AppName:随意理解,或者理解为分组吧;
StreamName:理解为直播的id,一个StreamName同时只能推一个直播流.可以开始直播-终止直播-开始直播-终止直播…
有关鉴权的规则是这样的:鉴权规则
代码如下:
<?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);	//播流地址
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
34
获取到推流URL和播流URL就可以愉快地玩直播啦,可以下载阿里的DEMO(APP)到手机上,测试这URL是否有用~
接入SDK
阿里是将所有的SDK打包一起下载,里面不仅有视频直播的SDK,还有别的业务的SDK…T_T
PHP SDK 下载地址
我的项目是TP框架(还是3.2的T_T)
在一开始拿到SDK代码的时候很懵逼,无从下手…
度娘了下才知道要引入的是这两个文件 ! ! !
<?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';
1
2
3
4
5
6
配置AccessKeyID AccessKeySecret
这里并没有用子账号RAM权限,因此我这种方法配置的密钥对阿里的所有密钥有效,不建议这么做!
直播在线流SDK接入,我这里是用已知的直播流名称去检测它是否在线
<?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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
推流回调的配置
将回调接收到的数据打印出来
["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接入教程
		阿里云视频直播PHP-SDK接入教程 阿里云 视频直播 配置 及 PHP-SDK 接入教程 准备工作 域名管理 配置鉴权 地址生成器及DEMO演 ... 
- 阿里云视频直播API签名机制源码
		阿里云视频直播API签名机制源码 本文展示:通过代码实现下阿里视频直播签名处理规则 阿里云视频直播签名机制,官方文档链接:https://help.aliyun.com/document_detail ... 
- 阿里云视频云正式支持AV1编码格式 为视频编码服务降本提效
		今天我们要说的 AV1 可不是我们平时说的 .AVI 文件格式,它是由AOM(Alliance for Open Media,开放媒体联盟)制定的一个开源.免版权费的视频编码格式,可以解决H.265昂 ... 
- 实时 + 高清 + 超压缩,阿里云视频云发布业内首款 VVC 编码器 Ali266
		基于新一代国际视频编解码标准 H.266/VVC,阿里云视频云近日发布了实时高清编码器 Ali266,有力推动 H.266/VVC 标准应用的落地,真正开启 H.266/VVC 的商用之路,并强力赋能 ... 
- 阿里云开发工具包(SDK)
		参考: 阿里云开发工具包(SDK)For Python Alibaba Cloud SDK for Go 
- 阿里云视频云 Retina 多媒体 AI 体验馆开张啦!
		带你体验视频更多可能 海量视频管理难度大?翻库检索特定人物费时费力?视频内容剪辑效率低?您的得力助手"Retina多媒体AI"体验馆已上线.带你感受视频AI黑科技,开启极致智能体验 ... 
- 10 月 30 日 北京 LiveVideoStack 阿里云视频云专场限量赠票 100 张
		10 月 30 日 | 北京 LiveVideoStack 将携手阿里云共邀 4 位技术大咖,一同探讨从上云到创新,视频云的新技术与新场景.阿里云视频云依托阿里云服务数百万开发者的卓越服务能力与实践, ... 
- koa2使用阿里云oss的nodejs sdk实现上传图片
		nodejs实现上传图片到阿里云,自然是写成接口形式比较方便,前端监听input file的改变,把file对象传入到formData中传入后端,不能直接传入file对象,后端需要接受formData ... 
- 关于STM32F103+ESP8266+阿里云过程之修改SDK连接至阿里云(二)
		继上篇的阿里云物联云平台设置之后,接下来的工作就是对安信可官方给的sdk进行修改 安信可ESP系列集成环境,SDK,aliyun_mqtt_app,下载地址在上一篇博客,https://www.cnb ... 
随机推荐
- 使用Java API方式连接HDFS Client测试
			IDEA中新建Maven工程,添加POM依赖, 在IDE的提示中, 点击 Import Changes 等待自动下载完成相关的依赖包. <?xml version="1.0" ... 
- centos 升级python3
			升级pip3 wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py 升级python3 yum install epel-r ... 
- django 问题总结
			1.更新了pip之后还提示更新 // 卸载 pip uninstall pip // 重新安装 easy_install pip pip -V 2.时间比当前时间少8小时问题 // 设置setting ... 
- ubuntu16.04 配置双网卡机器
			本文介绍一台具有双有线网卡的机器在Linux下如何配置双网卡 系统平台:Ubuntu16.04 1:查看机器网卡信息,是否双网卡都能正确被机器pci识别 可以通过以下命令查看设备网卡,若果看到两条网卡 ... 
- Keras学习笔记(完结)
			使用Keras中文文档学习 基本概念 Keras的核心数据结构是模型,也就是一种组织网络层的方式,最主要的是序贯模型(Sequential).创建好一个模型后就可以用add()向里面添加层.模型搭建完 ... 
- ffmpeg 视频 转 gif
			将视频 MP4 转化为 GIF ffmpeg -i small.mp4 small.gif 转化视频中的一部分为 GIF ffmpeg -t -ss :: -i small.webm small-cl ... 
- Github Page 搜索工具
			轮子 今天造了一个轮子 -- Github Page搜索工具 https://man-ing.com/github. 什么是Github Page 直接从GitHub存储库托管.只需编辑,推送,更改即 ... 
- 关于IE无法访问本机网络的问题
			多次遇到IE无法访问本机站点的情况,比如架设了一个花生壳,所有人都可以访问,唯独本机不行(服务器),还需要把这个域名加入信任站点,这TMD什么情况.今天又遇到访问本地restful service,用 ... 
- 三、tcp、ip协议详细
			1. 什么是 TCP/IP? TCP/IP 是一类协议系统,它是用于网络通信的一套协议集合. 传统上来说 TCP/IP 被认为是一个四层协议 1) 网络接口层: 主要是指物理层次的一些接口,比如电缆等 ... 
- Django学习笔记之URL与视图
			视图 视图一般都写在app的views.py中.并且视图的第一个参数永远都是request(一个HttpRequest)对象.这个对象存储了这个http请求的所有信息,其中包括携带的参数以及一些头部信 ... 
