php后台关于七牛云连麦功能的实现

第一次接触七牛云直播连麦功能,中间遇到过很多困难,爬过很多坑,也让自己学到了很多。好了,言归正传分享一个直播连麦的遇到过得坑。
1.首先配置好七牛的配置
这些

-

 $options= [
               'ak' => '',//ak
               'sk' => ',//sk
               'hubName'=>'',//七牛云名字
               'publishurl'=>'',//推流地址
               'playurl'=>''//播放地址
               ];

2.就是七牛云的demo创建房间,参考七牛云的demo
3.配置连麦
前提主播和用户都是经过环信进行授权的,只有进行环信授权的用户和主播才能进行连麦和进入房间。
创建连麦房间主播端:

- $create_room = $qn->creatroom($qiniu_room_id,$qiniu_room_name);   

//七牛创建房间

    这里$qiniu_room_id,是我们自己生成的随机数,数字和字母的组合必须是这两个,位数是3-50之间,$qiniu_room_name这也是我们自己生成的七牛房间号,千万千万不要有汉字,也是字母和数字的组合3-64之间。传到七牛sdk进行授权返回的连麦参数

我们传过去的几个参数也就是上面创建连麦时间$create_room;我把生成的随机数放在这里,完成的后台逻辑

-

 //七牛生成流地址
           $qn = new QiniuPili();
           $play_address = $qn->push_address();
           $chars = "abcdefghijklmnopqrstuvwxyz123456789";
           mt_srand(10000000*(double)microtime());
           for ($i = 0, $str = '', $lc = strlen($chars)-1; $i < 6; $i++){
               $str .= $chars[mt_rand(0, $lc)];

           }
           $qiniu_room_id = 'qiniu-'.$str.rand(10, 99).'-b'.rand(100.999).'-'.rand(1000,9999);
           $qiniu_room_name = 'qiniu-'.rand(100,999); //        $qiniu_room_id = 'qiniu-1b5d0c9a-b239-4223-8a3a-d2c846cc5433'; //    
   $qiniu_room_name = 'qiniu-123';
           $create_room = $qn->creatroom($qiniu_room_id,$qiniu_room_name);    //七牛创建房间



         /**
        * @七牛创建房间
        * 七牛的
        */
       function creatroom($id,$room_name){
           $ak = $this->ak;
           $sk = $this->sk;
           //创建hub
           $mac = new \Qiniu\Pili\Mac($ak, $sk);
           $client = new \Qiniu\Pili\RoomClient($mac);
           try {## 标题 ##
               $client->createRoom($id,$room_name);
               $room = $client->getRoom($room_name); //            pre($room);die;
               //鉴权的有效时间: 24个小时.
               $token = $client->roomToken($room_name, $id, 'admin', (time()+3600*24));
           } catch (\Exception $e) {
               //echo "Error:", $e, "\n";
           }
           $result = ['room_id'=>$room['owner_id'],'room_name'=>$room['room_name'],'token'=>$token];
           return $result;
       }

    获取到的参数后两个作为连麦使用的参数,一个是房间号,一个是token值,房间的id千万千万不要使用第一个参数,因为不能使用,我们测了很久发现七牛给的这个id是错误的,这里是我最浪费时间的地方,经验主义害死人呢。使用的房间号是我们自己生成的主播房间号就是这个 $qiniu_room_id,上面后台代码那里,这里是主播端的。

现在我们来看看用户端,用户端和主播端没有什么变化,来看看后台用户传的参数
 //七牛生成流地址
        $chars = "abcdefghijklmnopqrstuvwxyz123456789";
        mt_srand(10000000*(double)microtime());
        for ($i = 0, $str = '', $lc = strlen($chars)-1; $i < 6; $i++){
            $str .= $chars[mt_rand(0, $lc)];

        }
        $qiniu_room_id = 'qiniu-'.$str.rand(10, 99).'-b'.rand(100.999).'-'.rand(1000,9999);
        $qiniu_room_name = $live['qiniu_room_name'];
//        $qiniu_room_id = 'qiniu-1b5d0c9a-b239-4223-8a3a-d2c846cc2577';
//        $qiniu_room_name = 'qiniu-123';

        $qn = new QiniuPili();
        $a = $qn->watch_room($qiniu_room_id,$qiniu_room_name);    //七牛创建房间
        $live['user_qiniu_id'] = $qiniu_room_id;
        $live['user_qiniu_token'] = $a;

下面是七牛云那边进行授权的连麦的东西

    /**
     * @观众端
     */
    function watch_room($id,$room_name){
        $ak = $this->ak;
        $sk = $this->sk;
//        $room_name = '22173';
//        $id = 'admin';
        //创建hubuser
        $mac = new \Qiniu\Pili\Mac($ak, $sk);
        $client = new \Qiniu\Pili\RoomClient($mac);
        try {
//            $client->createRoom($id,$room_name);
            $client->createRoom($room_name);
            $room = $client->getRoom($room_name);
            //鉴权的有效时间: 24个小时.
            $token = $client->roomToken($room_name, $id,'user', (time()+3600*24));
        } catch (\Exception $e) {
            //echo "Error:", $e, "\n";
        }
//        $result = ['user_room_id'=>$room['owner_id'],'user_room_name'=>$room['room_name'],'user_token'=>$token];
        return $token;

    }

然后app端拿到参数进行配置,连麦就可以进行。如有不好,欢迎拍砖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值