阿里云 视频直播 配置 及 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的更多相关文章

  1. 阿里云视频直播PHP-SDK接入教程

    阿里云视频直播PHP-SDK接入教程 阿里云 视频直播 配置 及 PHP-SDK 接入教程        准备工作        域名管理        配置鉴权        地址生成器及DEMO演 ...

  2. 阿里云视频直播API签名机制源码

    阿里云视频直播API签名机制源码 本文展示:通过代码实现下阿里视频直播签名处理规则 阿里云视频直播签名机制,官方文档链接:https://help.aliyun.com/document_detail ...

  3. 阿里云视频云正式支持AV1编码格式 为视频编码服务降本提效

    今天我们要说的 AV1 可不是我们平时说的 .AVI 文件格式,它是由AOM(Alliance for Open Media,开放媒体联盟)制定的一个开源.免版权费的视频编码格式,可以解决H.265昂 ...

  4. 实时 + 高清 + 超压缩,阿里云视频云发布业内首款 VVC 编码器 Ali266

    基于新一代国际视频编解码标准 H.266/VVC,阿里云视频云近日发布了实时高清编码器 Ali266,有力推动 H.266/VVC 标准应用的落地,真正开启 H.266/VVC 的商用之路,并强力赋能 ...

  5. 阿里云开发工具包(SDK)

    参考: 阿里云开发工具包(SDK)For Python Alibaba Cloud SDK for Go

  6. 阿里云视频云 Retina 多媒体 AI 体验馆开张啦!

    带你体验视频更多可能 海量视频管理难度大?翻库检索特定人物费时费力?视频内容剪辑效率低?您的得力助手"Retina多媒体AI"体验馆已上线.带你感受视频AI黑科技,开启极致智能体验 ...

  7. 10 月 30 日 北京 LiveVideoStack 阿里云视频云专场限量赠票 100 张

    10 月 30 日 | 北京 LiveVideoStack 将携手阿里云共邀 4 位技术大咖,一同探讨从上云到创新,视频云的新技术与新场景.阿里云视频云依托阿里云服务数百万开发者的卓越服务能力与实践, ...

  8. koa2使用阿里云oss的nodejs sdk实现上传图片

    nodejs实现上传图片到阿里云,自然是写成接口形式比较方便,前端监听input file的改变,把file对象传入到formData中传入后端,不能直接传入file对象,后端需要接受formData ...

  9. 关于STM32F103+ESP8266+阿里云过程之修改SDK连接至阿里云(二)

    继上篇的阿里云物联云平台设置之后,接下来的工作就是对安信可官方给的sdk进行修改 安信可ESP系列集成环境,SDK,aliyun_mqtt_app,下载地址在上一篇博客,https://www.cnb ...

随机推荐

  1. [Version Control]—— Git如何使用

    Git是什么? Git是目前世界上最先进的分布式版本控制系统. 它没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上.既然每个人的电脑都有一 ...

  2. Alpha冲刺7

    前言 队名:拖鞋旅游队 组长博客:https://www.cnblogs.com/Sulumer/p/10013652.html 作业博客:https://edu.cnblogs.com/campus ...

  3. dos脚本2

    一.简单批处理内部命令简介  1.Echo 命令  打开回显或关闭请求回显功能,或显示消息.如果没有任何参数,echo 命令将显示当 前回显设置.  语法  echo [{on off}] [mess ...

  4. 2019-04-12-day031-进程基础

    操作系统的发展历程 主要的人机矛盾是什么 : CPU的使用率 输入\输出数据和CPU计算没有关系 操作系统是怎么进化的 传统的纸带输入 磁带的存储降低了输入输出数据占用的时间,提高了CPU的利用率 多 ...

  5. linux中运行.sql文件

    1.linux目录结构 2.假设home下面有a.sql文件 先得use databasename,要不会报错 “No Database Selected” 然后source /home/a.sql ...

  6. 剑指Offer 34. 第一个只出现一次的字符 (字符串)

    题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 题目地址 https:// ...

  7. Ros Kinetic 配置 OpenCV2和CV_bridge (Python, C++)

    本篇介绍如何在Ros-kinetic环境下运用opencv2进行开发的配置,系统平台为64位Ubuntu16.04. 需要系统环境: 1.Ros kinetic版本,一般自带cv_bridge, 若没 ...

  8. matlab学习(3) 保存和导入工作区

    1.保存和导入工作区变量mat文件 假如创建了两个矩阵A=[1,2;3,4],B=[0,1;1,0] 则工作区就是这样的: 当函数有一个数据量非常大的返回值时,每次调用函数都要执行一遍函数,每次都要等 ...

  9. 2018-2019-2 20165212《网络对抗技术》Exp2 后门原理与实践

    2018-2019-2 20165212<网络对抗技术>Exp2 后门原理与实践 1.实验内容 (1)使用netcat获取主机操作Shell,cron启动 (2)使用socat获取主机操作 ...

  10. 学习笔记TF021:预测编码、字符级语言建模、ArXiv摘要

    序列标注(sequence labelling),输入序列每一帧预测一个类别.OCR(Optical Character Recognition 光学字符识别). MIT口语系统研究组Rob Kass ...