| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- <?php
- // +----------------------------------------------------------------------
- // | LARAVEL8.0 框架 [ LARAVEL ][ RXThinkCMF ]
- // +----------------------------------------------------------------------
- // | 版权所有 2017~2021 LARAVEL研发中心
- // +----------------------------------------------------------------------
- // | 官方网站: http://www.laravel.cn
- // +----------------------------------------------------------------------
- // | Author: laravel开发员 <laravel.qq.com>
- // +----------------------------------------------------------------------
- namespace App\Services;
- use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
- use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;
- use Darabonba\OpenApi\Models\Config;
- use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsRequest;
- use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
- /**
- * 在线直播服务管理-服务类
- * @author laravel开发员
- * @since 2020/11/11
- * Class LiveService
- * @package App\Services
- */
- class LiveService extends BaseService
- {
- // 静态对象
- protected static $instance = null;
- /**
- * 静态入口
- * @return SmsService|static|null
- */
- public static function make(){
- if(!self::$instance){
- self::$instance = new static();
- }
- return self::$instance;
- }
- /**
- * 获取直播推流/拉流地址
- * @param $streamName
- * @param string $appName
- * @param string $playType
- * @param int $expireTime
- * @return array
- */
- public function getLiveUrl($streamName, $appName='xlapp', $playType='flv',$expireTime=1440)
- {
- $playUrls = [];
- //未开启鉴权Key的情况下
- $pushDomain = ConfigService::make()->getConfigByCode('live_push_url');
- $playDomain = ConfigService::make()->getConfigByCode('live_play_url');
- $accessKey = ConfigService::make()->getConfigByCode('live_url_access_key');
- if($accessKey==''){
- $pushUrl = 'rtmp://'.$pushDomain.'/'.$appName.'/'.$streamName;
- $playUrls['rtmp'] = 'rtmp://'.$playDomain.'/'.$appName.'/'.$streamName;
- $playUrls['flv'] = 'http://'.$playDomain.'/'.$appName.'/'.$streamName.'.flv';
- $playUrls['hls'] = 'http://'.$playDomain.'/'.$appName.'/'.$streamName.'.m3u8';
- }else{
- $timeStamp = time() + $expireTime * 60;
- $sstring = '/'.$appName.'/'.$streamName.'-'.$timeStamp.'-0-0-'.$accessKey;
- $md5hash = md5($sstring);
- $pushUrl = 'rtmp://'.$pushDomain.'/'.$appName.'/'.$streamName.'?auth_key='.$timeStamp.'-0-0-'.$md5hash;
- $rtmpSstring = '/'.$appName.'/'.$streamName.'-'.$timeStamp.'-0-0-'.$accessKey;
- $rtmpMd5hash = md5($rtmpSstring);
- $playUrls['rtmp'] = 'rtmp://'.$playDomain.'/'.$appName.'/'.$streamName.'?auth_key='.$timeStamp.'-0-0-'.$rtmpMd5hash;
- $flvSstring = '/'.$appName.'/'.$streamName.'.flv-'.$timeStamp.'-0-0-'.$accessKey;
- $flvMd5hash = md5($flvSstring);
- $playUrls['flv'] = 'http://'.$playDomain.'/'.$appName.'/'.$streamName.'.flv?auth_key='.$timeStamp.'-0-0-'.$flvMd5hash;
- $hlsSstring = '/'.$appName.'/'.$streamName.'.m3u8-'.$timeStamp.'-0-0-'.$accessKey;
- $hlsMd5hash = md5($hlsSstring);
- $playUrls['hls'] = 'http://'.$playDomain.'/'.$appName.'/'.$streamName.'.m3u8?auth_key='.$timeStamp.'-0-0-'.$hlsMd5hash;
- }
- return [
- 'push_url'=> $pushUrl,
- 'play_url'=> isset($playUrls[$playType])? $playUrls[$playType] : '',
- 'play_urls'=> $playUrls,
- ];
- }
- }
|