前提条件
- 已注册阿里云账号,注册流程请参见注册阿里云账号。
- 账号已进行实名认证,实名认证流程请参见个人实名认证或企业实名认证。
- 准备2个已完成备案的域名,备案流程请参见备案。
- 若您要添加的推流域名和播流域名,是同一个一级域名下的两个二级域名,则只需要将一级域名进行备案即可。
步骤如下
1.添加推流域名和播流域名
2.配置CNAME解析
3. 关联推流和播流
- 在域名管理页面,选择您添加的播流域名,单击域名配置。
- 进入直播管理 > 基本配置页面,单击基础信息页签。在此页面,您可以查看该域名的CNAME、创建时间、业务类型、直播中心、加速区域。
- 单击推流信息页签。
- 单击添加推流信息或推流域名后的编辑图标,选择需要关联的推流域名,并单击确定。
4.(可选)配置自定义鉴权(可选)
- 在视频直播控制台左侧导航栏,单击域名管理,进入域名管理页面。
- 选择您要配置的播流域名,单击域名配置。
- 单击直播管理 > 访问控制,并选择URL鉴权页签,单击修改配置。
- 配置URL鉴权信息,单击确定。配置项和说明如下表所示。
5.生成推流地址和播流地址
- 进入工具箱 > 地址生成器页面。
- 选择播流域名及其关联的推流域名。
- 输入AppName和StreamName。
- 根据实际需求选择转码模版。
6.推流和播放
推流是把采集阶段封装好的音视频直播流推送到阿里云直播服务中心的过程。播放是将直播服务中心已有直播内容分发到播放器进行播放的过程。以下内容以PC端OBS推流插件Demo(OBS为第三方工具,插件由视频直播提供)、PC端播放工具VLC(VLC为第三方工具)、阿里云直播(视频直播Demo应用)以及阿里云Web播放器为例,指引您完成推流与播放操作。
阿里云官方文档:快速入门 (aliyun.com)
另附 PHP 生成 推波和波流地址
public function zhibo(){
//推流域名
$push_domain = '';
//推流域名配置的鉴权Key
$push_key = '';
//生成随机的AppName
$appName = "12342456";
//生成随机的StreamNmae
$streamName = "6544321";
//配置过期时间为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;
}