php 记录完整对接腾讯云直播以及im直播群聊 所遇到的坑

记录一次完整对接腾讯云直播 以及直播聊天室

/**
     * @param mixed $arg1
     * @author xusir
     * @date: 2022/6/13
     * @createTime: 14:13
     * @remark:开启直播
     */
    public function startLive(){
   
       $post = $_POST;
       if(!$post['access_token'] || !$post['live_name'] || !$post['live_img']) return $this->asJson(['code'=>1,'msg'=>'参数不全']);
        $time = date('Y-m-d H:i:s', strtotime('+365day'));
        $user = Db::name('wd_xcx_user')->where(['access_token'=>$post['access_token']])->find();
        $streamName = $user['id']."zhibojian";
        $push_url = self::getPushUrl($streamName,$time);//推流地址
        $pull_url = self::getLivePullUrl($streamName,$time);//推流地址
        $post['push_url'] = $push_url;
        $post['pull_url'] = $pull_url;
        $post['status'] = 1;
        $post['uniacid'] = 51;
        unset($post['suid']);
        $check = Db::name("wd_xcx_live_home")->where(['access_token'=>$post['access_token']])->find();
        $groupId = $this->liveGroup($user['id']);
        if($check){
   
//            echo "<pre>";
//            var_dump($groupId);exit;
            $post['group_id'] = $groupId['GroupId'];
             $res = Db::name('wd_xcx_live_home')->where(['access_token'=>$post['access_token']])->update($post);
             if($res !=false){
   
                 $data['live_id'] = $check['id'];
                 $data['group_id'] = $groupId['GroupId'];
                 return $this->asJson(['code'=>0,'msg'=>'创建成功','data'=>$data]);
             }else{
   
                 return $this->asJson(['code'=>1,'msg'=>'直播间创建失败']);
             }
        }
        $live_id = Db::name('wd_xcx_live_home')->insertGetId($post);
        if($live_id){
   
            $data['live_id'] = $live_id;
            $data['group_id'] = $groupId['GroupId'];
             return $this->asJson(['code'=>0,'msg'=>'创建成功','data'=>$data]);
        }else{
   
            return $this->asJson(['code'=>1,'msg'=>'直播间创建失败']);
        }
    }



 /**
     * 获取推流地址
     * @param $streamName 填写自定义的流名称 StreamName,例如:liveteststream。可以理解为唯一标识
     *
     * @return string
     */
    private static function getPushUrl($streamName,$time) {
   
//        $streamName = mt_rand(0000,9999);
        $live = Db::name('wd_xcx_live_set')->where('uniacid',51)->find();

        $key = $live['push_key']; //key为配置推流域名主key,可以去腾讯控制台->域名管理->管理->推流配置 里面可以看到主key
        $domain = $live['push_url'];//您的推流域名
//        $time = config('live.time');//过期时间,自行设置 例:c
        $txTime = strtoupper(base_convert(strtotime($time), 10, 16));
        //txSecret = MD5( KEY + streamName + txTime )
        $txSecret = md5($key . $streamName . $txTime);
        $ext_str = "?" . http_build_query(array(
                "txSecret" => $txSecret,
                "txTime" => $txTime
            ));
        return "rtmp://" . $domain . "/live/" . $streamName . (isset($ext_str) ? $ext_str : "");
    }


    /**
     * 获取 拉流 地址
     * 如果不传key和过期时间,将返回不含防盗链的url
     *
     * @param $streamName : 您用来区别不同推流地址的唯一流名称
     *
     * @return String url
     */
    public static function getLivePullUrl($streamName,$time) 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值