11<?php
2+
23namespace Qiniu \Rtc ;
34
4- use Qiniu \Http \Client ;
5- use Qiniu \Http \Error ;
6- use Qiniu \Config ;
75use Qiniu \Auth ;
6+ use Qiniu \Config ;
7+ use Qiniu \Http \Error ;
8+ use Qiniu \Http \Client ;
89
910class 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