阿里雲直播live
阿新 • • 發佈:2019-01-07
直播流程:
- 生成推流地址,使用推流軟體(例:OBS)設定引數推流;
- 獲取拉流地址,進行播放;
在開發環節php作為服務端主要責任就是返回推流地址以及拉流播放地址其它也沒什麼;關於地址阿里的只給出了文件並沒有給出詳細的sdk方法,具體生成還得自定義,話不多說上程式碼:
/**
* 生成推流地址
* @param $streamName 流名
* @param $vhost 加速域名
* @param $time 有效時間單位秒
*/
public function getPushSteam($streamName ='test1',$type='rtmp',$time=3600){
$time = time()+$time;
$vhostName = self::$vhostName;
$pushUrl = self::$pushUrl;
$appName = self::$appName;
$authKey=self::$authKey;
$url = '';
if($authKey){
$auth =md5('/'.$appName.'/' .$streamName.'-'.$time.'-0-0-'.$authKey);
$url =$pushUrl.'/'.$appName.'/'.$streamName.'?vhost='.$vhostName.'&auth_key='.$time.'-0-0-'.$auth;
}else{
$url = $pushUrl.'/'.$appName.'/'.$streamName.'?vhost='.$vhostName;
}
switch ($type){
case 'rtmp':
$url = 'rtmp://'.$url;
break;
case 'flv':
$url = 'http://'.$url;
break;
case 'm3u8':
$url = 'http://'.$url;
break;
}
return $url;
}
/**
* 生成拉流地址
* @param $streamName 流名
* @param $vhost 加速域名
* @param $type 視訊格式 支援rtmp、flv、m3u8三種格式
*/
public function getPullSteam($streamName='test1',$type='rtmp',$quality='',$time=3600){
$time = time()+$time;
$appName = self::$appName;
$authKey = self::$authKey;
$vhostName = self::$vhostName;
$url='';
if(strlen($quality)>0) $quality = '_'.$quality;
switch ($type){
case 'rtmp':
$host = 'rtmp://'.$vhostName;
$url = '/'.$appName.'/'.$streamName.$quality;
break;
case 'flv':
$host = 'http://'.$vhostName;
$url = '/'.$appName.'/'.$streamName.$quality.'.flv';
break;
case 'm3u8':
$host = 'http://'.$vhostName;
$url = '/'.$appName.'/'.$streamName.'.m3u8';
break;
}
if($authKey){
$auth =md5($url.'-'.$time.'-0-0-'.$authKey);
$url = $host.$url.'?auth_key='.$time.'-0-0-'.$auth;
}else{
$url = $host.$url;
}
return $url;
}
寫在後面:阿里直播和點播真心不好使,不推薦使用;不論是文件還是sdk關於php的都不是很完善,阿里這塊的開發似乎更新完善文件進度很慢;提交工單回覆的還都是文件連結,打客服很難接進去,所以不推薦