本人已参与【新人创作礼】活动,一起开启掘金创作之路。
一、说明
本人最近是因为公司要重新开发一款音乐类的直播教学软件的APP里面用到的直播是基于阿里云平台,我写这篇博客就是为了记录一下我做阿里云直播这块时候遇到的问题以及自己的解决办法,总之就一句话,一定要细心、细心、再细心,重要的事情说三遍,同时也希望同行的技术伙伴如果有幸被你看到我写的这篇《PHP阿里云直播功能的实现及地址生成》的你可以给个关注+点赞****+好评,也是支持鼓励我持续创作下去的动力。
二、前提要求
已注册阿里云账号,注册流程请参见注册阿里云账号。 账号已进行实名认证,实名认证流程请参见个人实名认证或企业实名认证。 准备2个已完成备案的域名,备案流程请参见备案。 若您要添加的推流域名和播流域名,是同一个一级域名下的两个二级域名,则只需要将一级域名进行备案即可。
步骤如下
(1).添加推流域名和播流域名
(2)、配置cname解析
(3)、关联推流和播流
在域名管理页面,选择您添加的播流域名,单击域名配置。 进入直播管理 > 基本配置页面,单击基础信息页签。 在此页面,您可以查看该域名的CNAME、创建时间、业务类型、直播中心、加速区域。 单击推流信息页签。 单击添加推流信息或推流域名后的编辑图标,选择需要关联的推流域名,并单击确定。
(4)、(可选)配置自定义鉴权(可选)
在视频直播控制台左侧导航栏,单击域名管理,进入域名管理页面。
选择您要配置的播流域名,单击域名配置。
单击直播管理 > 访问控制,并选择URL鉴权页签,单击修改配置。
配置URL鉴权信息,单击确定。
配置项和说明如下表所示。
(5)、生成推流地址和播流地址
进入工具箱 > 地址生成器页面。
选择播流域名及其关联的推流域名。
输入AppName和StreamName。
根据实际需求选择转码模版。
(6)、推流和播放
推流是把采集阶段封装好的音视频直播流推送到阿里云直播服务中心的过程。播放是将直播服务中心已有直播内容分发到播放器进行播放的过程。以下内容以PC端OBS推流插件Demo(OBS为第三方工具,插件由视频直播提供)、PC端播放工具VLC(VLC为第三方工具)、阿里云直播(视频直播Demo应用)以及阿里云Web播放器为例,指引您完成推流与播放操作。 阿里云官方文档:快速入门 - 视频直播 - 阿里云
PHP 生成 推波和波流地址
//测试阿里云直播
public function zhibo(){
//推流域名
$push_domain = '';
//推流域名配置的鉴权Key
$push_key = '';
//生成随机的AppName
$appName = "111";
//生成随机的StreamNmae
$streamName = "222";
//配置过期时间为1小时
$expireTime = 3600;
//播放域名
$play_domain = '';
//播放域名配置的鉴权Key
$play_key = '';
$push_url = $this->push_url($push_domain,$push_key,$expireTime,$appName,$streamName);
$data['tui'] = $push_url;
$play_url = $this->play_url($play_domain,$play_key,$expireTime,$appName,$streamName);
$data['bo']=$play_url;
dd($data);
}
function push_url($push_domain,$push_key,$expireTime,$appName,$streamName){
//未开启鉴权Key的情况下
if($push_key==''){
$push_url = 'rtmp://'.$push_domain.'/'.$appName.'/'.$streamName;
echo $push_url;
return;
}
$timeStamp = time() + $expireTime;
$sstring = '/'.$appName.'/'.$streamName.'-'.$timeStamp.'-0-0-'.$push_key;
$md5hash = md5($sstring);
$push_url = 'rtmp://'.$push_domain.'/'.$appName.'/'.$streamName.'?auth_key='.$timeStamp.'-0-0-'.$md5hash;
return $push_url;
}
function play_url($play_domain,$play_key,$expireTime,$appName,$streamName){
//未开启鉴权Key的情况下
if($play_key==''){
$rtmp_play_url = 'rtmp://'.$play_domain.'/'.$appName.'/'.$streamName;
$flv_play_url = 'http://'.$play_domain.'/'.$appName.'/'.$streamName.'.flv';
$hls_play_url = 'http://'.$play_domain.'/'.$appName.'/'.$streamName.'.m3u8';
}else{
$timeStamp = time() + $expireTime;
$rtmp_sstring = '/'.$appName.'/'.$streamName.'-'.$timeStamp.'-0-0-'.$play_key;
$rtmp_md5hash = md5($rtmp_sstring);
$rtmp_play_url = 'rtmp://'.$play_domain.'/'.$appName.'/'.$streamName.'?auth_key='.$timeStamp.'-0-0-'.$rtmp_md5hash;
$flv_sstring = '/'.$appName.'/'.$streamName.'.flv-'.$timeStamp.'-0-0-'.$play_key;
$flv_md5hash = md5($flv_sstring);
$flv_play_url = 'http://'.$play_domain.'/'.$appName.'/'.$streamName.'.flv?auth_key='.$timeStamp.'-0-0-'.$flv_md5hash;
$hls_sstring = '/'.$appName.'/'.$streamName.'.m3u8-'.$timeStamp.'-0-0-'.$play_key;
$hls_md5hash = md5($hls_sstring);
$hls_play_url = 'http://'.$play_domain.'/'.$appName.'/'.$streamName.'.m3u8?auth_key='.$timeStamp.'-0-0-'.$hls_md5hash;
}
$data = [
'rtmp'=>$rtmp_play_url,
'flv'=>$flv_play_url,
'hls'=>$hls_play_url,
];
return $data;
}
获取到推流URL和播流URL就可以愉快地玩直播啦,可以下载阿里的DEMO(APP)到手机上,测试这URL是否有效
剩下的就是接入SDK
阿里云是将所有的SDK打包一起下载,里面不仅有视频直播的SDK,还有别的业务的SDK
文章中通过示例代码介绍的挺详细,要是大家觉得对自己的学习或者工作有参考学习价值,那就给个:关注+点赞+好评。