Skip to content

Commit d719e79

Browse files
committed
feat: add function stopMerge
1 parent 8e7ca08 commit d719e79

File tree

1 file changed

+88
-67
lines changed

1 file changed

+88
-67
lines changed

src/Qiniu/Rtc/AppClient.php

Lines changed: 88 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
<?php
2+
23
namespace Qiniu\Rtc;
34

4-
use Qiniu\Http\Client;
5-
use Qiniu\Http\Error;
6-
use Qiniu\Config;
75
use Qiniu\Auth;
6+
use Qiniu\Config;
7+
use Qiniu\Http\Error;
8+
use Qiniu\Http\Client;
89

910
class AppClient
1011
{
@@ -18,15 +19,17 @@ public function __construct(Auth $auth)
1819
$this->baseURL = sprintf("%s/%s/apps", Config::RTCAPI_HOST, Config::RTCAPI_VERSION);
1920
}
2021

21-
/*
22+
/**
2223
* 创建应用
23-
* hub: 直播空间名
24-
* title: app 的名称 注意,Title 不是唯一标识,重复 create 动作将生成多个 app
25-
* maxUsers:人数限制
26-
* NoAutoKickUser: bool 类型,可选,禁止自动踢人(抢流)。默认为 false ,
27-
即同一个身份的 client (app/room/user) ,新的连麦请求可以成功,旧连接被关闭。
24+
*
25+
* @param string $hub 绑定的直播 hub
26+
* @param string $title app 的名称 注意,Title 不是唯一标识,重复 create 动作将生成多个 app
27+
* @param int $maxUsers 连麦房间支持的最大在线人数
28+
* @param bool $noAutoKickUser 禁止自动踢人(抢流),默认为 false
29+
* @return array
30+
* @link https://doc.qnsdk.com/rtn/docs/server_overview#2_1
2831
*/
29-
public function createApp($hub, $title, $maxUsers = null, $noAutoKickUser = null)
32+
public function createApp($hub, $title, $maxUsers = null, $noAutoKickUser = false)
3033
{
3134
$params['hub'] = $hub;
3235
$params['title'] = $title;
@@ -37,27 +40,22 @@ public function createApp($hub, $title, $maxUsers = null, $noAutoKickUser = null
3740
$params['noAutoKickUser'] = $noAutoKickUser;
3841
}
3942
$body = json_encode($params);
40-
$ret = $this->post($this->baseURL, $body);
41-
return $ret;
43+
return $this->post($this->baseURL, $body);
4244
}
4345

44-
/*
45-
* 更新应用
46-
* appId: app 的唯一标识,创建的时候由系统生成。
47-
* Title: app 的名称, 可选。
48-
* Hub: 绑定的直播 hub,可选,用于合流后 rtmp 推流。
49-
* MaxUsers: int 类型,可选,连麦房间支持的最大在线人数。
50-
* NoAutoKickUser: bool 类型,可选,禁止自动踢人。
51-
* MergePublishRtmp: 连麦合流转推 RTMP 的配置,可选择。其详细配置包括如下
52-
Enable: 布尔类型,用于开启和关闭所有房间的合流功能。
53-
AudioOnly: 布尔类型,可选,指定是否只合成音频。
54-
Height, Width: int64,可选,指定合流输出的高和宽,默认为 640 x 480。
55-
OutputFps: int64,可选,指定合流输出的帧率,默认为 25 fps 。
56-
OutputKbps: int64,可选,指定合流输出的码率,默认为 1000 。
57-
URL: 合流后转推旁路直播的地址,可选,支持魔法变量配置按照连麦房间号生成不同的推流地址。如果是转推到七牛直播云,不建议使用该配置。
58-
StreamTitle: 转推七牛直播云的流名,可选,支持魔法变量配置按照连麦房间号生成不同的流名。例如,配置 Hub 为 qn-zhibo ,配置 StreamTitle 为 $(roomName) ,则房间 meeting-001 的合流将会被转推到 rtmp://pili-publish.qn-zhibo.***.com/qn-zhibo/meeting-001地址。详细配置细则,请咨询七牛技术支持。
46+
/**
47+
* 更新一个应用的配置信息
48+
*
49+
* @param string $appId app 的唯一标识,创建的时候由系统生成
50+
* @param string $hub app 的名称,可选
51+
* @param string $title 绑定的直播 hub,可选,用于合流后 rtmp 推流
52+
* @param int $maxUsers 连麦房间支持的最大在线人数,可选
53+
* @param bool $noAutoKickUser 禁止自动踢人,可选
54+
* @param null $mergePublishRtmp 连麦合流转推 RTMP 的配置,可选择。其详细配置可以参考文档
55+
* @return array
56+
* @link https://doc.qnsdk.com/rtn/docs/server_overview#2_1
5957
*/
60-
public function updateApp($appId, $hub, $title, $maxUsers = null, $mergePublishRtmp = null, $noAutoKickUser = null)
58+
public function updateApp($appId, $hub, $title, $maxUsers = null, $noAutoKickUser = false, $mergePublishRtmp = null)
6159
{
6260
$url = $this->baseURL . '/' . $appId;
6361
$params['hub'] = $hub;
@@ -72,64 +70,87 @@ public function updateApp($appId, $hub, $title, $maxUsers = null, $mergePublishR
7270
$params['mergePublishRtmp'] = $mergePublishRtmp;
7371
}
7472
$body = json_encode($params);
75-
$ret = $this->post($url, $body);
76-
return $ret;
73+
return $this->post($url, $body);
7774
}
7875

79-
/*
76+
/**
8077
* 获取应用信息
81-
* appId: app 的唯一标识,创建的时候由系统生成。
78+
*
79+
* @param string $appId
80+
* @return array
81+
* @link https://doc.qnsdk.com/rtn/docs/server_overview#2_1
8282
*/
8383
public function getApp($appId)
8484
{
8585
$url = $this->baseURL . '/' . $appId;
86-
$ret = $this->get($url);
87-
return $ret;
86+
return $this->get($url);
8887
}
8988

90-
/*
89+
/**
9190
* 删除应用
92-
* appId: app 的唯一标识,创建的时候由系统生成
91+
*
92+
* @param string $appId app 的唯一标识,创建的时候由系统生成
93+
* @return array
94+
* @link https://doc.qnsdk.com/rtn/docs/server_overview#2_1
9395
*/
9496
public function deleteApp($appId)
9597
{
9698
$url = $this->baseURL . '/' . $appId;
97-
list(, $err) = $this->delete($url);
98-
return $err;
99+
return $this->delete($url);
99100
}
100101

101-
/*
102+
/**
102103
* 获取房间内用户列表
103-
* appId: app 的唯一标识,创建的时候由系统生成。
104-
* roomName: 操作所查询的连麦房间。
104+
*
105+
* @param string $appId app 的唯一标识,创建的时候由系统生成
106+
* @param string $roomName 操作所查询的连麦房间
107+
* @return array
108+
* @link https://doc.qnsdk.com/rtn/docs/server_overview#2_2
105109
*/
106110
public function listUser($appId, $roomName)
107111
{
108112
$url = sprintf("%s/%s/rooms/%s/users", $this->baseURL, $appId, $roomName);
109-
$ret = $this->get($url);
110-
return $ret;
113+
return $this->get($url);
111114
}
112115

113-
/*
114-
* 踢出用户
115-
* appId: app 的唯一标识,创建的时候由系统生成。
116-
* roomName: 连麦房间
117-
* userId: 请求加入房间的用户ID
118-
*/
116+
/**
117+
* 指定一个用户踢出房间
118+
*
119+
* @param string $appId app 的唯一标识,创建的时候由系统生成
120+
* @param string $roomName 连麦房间
121+
* @param string $userId 操作所剔除的用户
122+
* @return mixed
123+
* @link https://doc.qnsdk.com/rtn/docs/server_overview#2_2
124+
*/
119125
public function kickUser($appId, $roomName, $userId)
120126
{
121127
$url = sprintf("%s/%s/rooms/%s/users/%s", $this->baseURL, $appId, $roomName, $userId);
122-
list(, $err) = $this->delete($url);
123-
return $err;
128+
return $this->delete($url);
129+
}
130+
131+
/**
132+
* 停止一个房间的合流转推
133+
*
134+
* @param string $appId
135+
* @param string $roomName
136+
* @return array
137+
* @link https://doc.qnsdk.com/rtn/docs/server_overview#2_2
138+
*/
139+
public function stopMerge($appId, $roomName)
140+
{
141+
$url = sprintf("%s/%s/rooms/%s/merge", $this->baseURL, $appId, $roomName);
142+
return $this->delete($url);
124143
}
125144

126-
/*
145+
/**
127146
* 获取应用中活跃房间
128-
* appId: app 的唯一标识,创建的时候由系统生成。
129-
* prefix: 所查询房间名的前缀索引,可以为空。
130-
* offset: int 类型,分页查询的位移标记。
131-
* limit: int 类型,此次查询的最大长度。
132-
* GET /v3/apps/<AppID>/rooms?prefix=<RoomNamePrefix>&offset=<Offset>&limit=<Limit>
147+
*
148+
* @param string $appId 连麦房间所属的 app
149+
* @param null $prefix 所查询房间名的前缀索引,可以为空。
150+
* @param int $offset 分页查询的位移标记
151+
* @param int $limit 此次查询的最大长度
152+
* @return array
153+
* @link https://doc.qnsdk.com/rtn/docs/server_overview#2_2
133154
*/
134155
public function listActiveRooms($appId, $prefix = null, $offset = null, $limit = null)
135156
{
@@ -148,19 +169,19 @@ public function listActiveRooms($appId, $prefix = null, $offset = null, $limit =
148169
} else {
149170
$url = sprintf("%s/%s/rooms", $this->baseURL, $appId);
150171
}
151-
$ret = $this->get($url);
152-
return $ret;
172+
return $this->get($url);
153173
}
154174

155-
/*
175+
/**
156176
* 生成加入房间的令牌
157-
* appId: app 的唯一标识,创建的时候由系统生成。
158-
* roomName: 房间名称,需满足规格 ^[a-zA-Z0-9_-]{3,64}$
159-
* userId: 请求加入房间的用户 ID,需满足规格 ^[a-zA-Z0-9_-]{3,50}$
160-
* expireAt: int64 类型,鉴权的有效时间,传入以秒为单位的64位Unix
161-
绝对时间,token 将在该时间后失效。
162-
* permission: 该用户的房间管理权限,"admin" 或 "user",默认为 "user" 。
163-
当权限角色为 "admin" 时,拥有将其他用户移除出房间等特权.
177+
*
178+
* @param string $appId app 的唯一标识,创建的时候由系统生成
179+
* @param string $roomName 房间名称,需满足规格 ^[a-zA-Z0-9_-]{3,64}$
180+
* @param int $userId 请求加入房间的用户 ID,需满足规格 ^[a-zA-Z0-9_-]{3,50}$
181+
* @param int $expireAt 鉴权的有效时间,传入以秒为单位的64位 Unix 绝对时间
182+
* @param string $permission 该用户的房间管理权限,"admin" 或 "user",默认为 "user"
183+
* @return string
184+
* @link https://doc.qnsdk.com/rtn/docs/server_overview#1
164185
*/
165186
public function appToken($appId, $roomName, $userId, $expireAt, $permission)
166187
{

0 commit comments

Comments
 (0)