腾讯互动直播php,【模块教程】腾讯云视频互动直播(tencentTrtcLiveRoom)教程
##**腾讯云视频互动直播**腾讯云视频互动直播模块,提供互动直播的功能,包括直播、连麦PK、主播 PK、低延时观看、弹幕聊天等在互动直播场景下的相关能力。##**技术支持**原生模块本身使用复杂,音视频功能强大,造成接入难度不小。建议使用前先联系我们的客服,协助接入。我们的客服微信: ruanyunkeji001或ruanyunkeji002##**快速开始**###**步骤一: 腾讯云配置**
##**腾讯云视频互动直播**
腾讯云视频互动直播模块,提供互动直播的功能,包括直播、连麦PK、主播 PK、低延时观看、弹幕聊天等在互动直播场景下的相关能力。
##**技术支持**
原生模块本身使用复杂,音视频功能强大,造成接入难度不小。
建议使用前先联系我们的客服,协助接入。
我们的客服微信: ruanyunkeji001或ruanyunkeji002
##**快速开始**
###**步骤一: 腾讯云配置**
这个步骤比较繁琐,可以联系我们上文中的客服进行指引
注册或登录[腾讯云](https://partners.cloud.tencent.c ... 2835035382f0964dc2f)账号,实名认证后,点击[实时音视频](https://console.cloud.tencent.com/trtc),
1. 点击应用管理[许可证](https://console.cloud.tencent.com/trtc/app),
- 如果还没有,可以点击"创建应用"
- 或选择对应的应用, 并复制”SDKAppId“,这个ID保存为配置的文件的sdkAppId;
2. 点击辅助工具,选择[UserSig生成&校验](https://console.cloud.tencent.com/trtc/usersigtool),选择对应的应用的ID,生成userId和userSig
###**步骤二: 开始使用模块**
1. 模块申明
模块名称为: tencentTrtcVideoCall
```js
var liveRoom = null;
liveRoom = api.require('tencentTrtcLiveRoom');
```
2. 参数配置
```js
var sdkAppId = 1400387416;
var userId = 'test001';
var userSig = 'eJwtzxxxxxx9v0BcAQx6A__';
var userName = 'userName';
var avatarUrl = '';
var roomId = 10001;
var remoteRoomId = 1;
var streamId = 'stream01';
var roomName = 'room01';
...
```
3. 模块初始化
```js
liveRoom.init({}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
```
###**步骤三: 设置监听器**
```js
liveRoom.setLiveRoomListener({}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
```
###**步骤四: 登录**
```js
liveRoom.login({
sdkAppId: sdkAppId,
userId: userId,
userSig: userSig
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
```
###**步骤五: 主播端开播**
1. 主播登录后,可以调用setSelfProfile设置自己的昵称和头像。
2. 主播在开播前可先调用startCameraPreview开启摄像头预览,也可以配置美颜相关功能进行美颜设置。
3. 主播调整美颜效果后,可以调用createRoom创建新的直播间。
4. 主播调用startPublish开始推流。

```js
liveRoom.setSelfProfile({
userName: userName,
avatarUrl: avatarUrl
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
```
```js
liveRoom.startCameraPreview({
isFront: isFront,
rect: {
x: 0,
y: 0,
w: api.winWidth / 2,
h: api.winHeight / 2
}
}, function(ret) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
```
```js
liveRoom.createRoom({
roomId: roomId,
roomName: roomName,
coverUrl: coverUrl
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
```
```js
liveRoom.startPublish({
streamId: streamId
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
```
###**步骤六: 观众端观看**
1. 观众端执行登录后,可以调用setSelfProfile设置自己的昵称和头像。
2. 观众端向业务后台获取最新的直播房间列表。
3. 观众端调用getRoomInfos获取房间的详细信息,该信息是在主播端调用createRoom创建直播间时设置的简单描述信息。
4. 观众选择一个直播间,调用enterRoom并传入房间号即可进入该房间。
5. 调用startPlay并传入主播的 userId 开始播放。
- 若直播间列表已包含主播端的 userId 信息,观众端可直接调用startPlay并传入主播的 userId 即可开始播放;
- 若在进房前暂未获取主播的 userId,观众端在进房后会收到主播setLiveRoomListener#onAnchorEnter的事件回调,该回调中携带主播的 userId 信息,调用startPlay即可播放。

```js
liveRoom.getRoomInfos({
roomIdList: roomIdList
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
```
```js
liveRoom.enterRoom({
roomId: roomId,
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
```
```js
liveRoom.startPlay({
userId: remoteUserId,
rect: {
x: 0,
y: 0,
w: api.winWidth / 4,
h: api.winHeight / 4
}
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
```
###**步骤七: 观众与主播连麦**
1. 观众端调用requestJoinAnchor向主播端发起连麦请求。
2. 主播端会收到setLiveRoomListener#onRequestJoinAnchor(即有观众请求与您连麦)的事件通知。
3. 主播端可以通过调用responseJoinAnchor决定是否接受来自观众端的连麦请求。
4. 主播端会收到返回结果,该结果通知会携带来自主播端的处理结果。
5. 如果主播同意连麦请求,观众端可调用startCameraPreview开启本地摄像头,随后调用startPublish启动观众端的推流。
6. 主播端会在观众端启动通知后收到 setLiveRoomListener#onAnchorEnter (即另一路音视频流已到来)通知,该通知会携带观众端的 userId。
7. 主播端调用startPlay即可看到连麦观众的画面。

```js
liveRoom.requestJoinAnchor({
reason: reason
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
```
```js
liveRoom.responseJoinAnchor({
userId: remoteUserId,
isAgree: isAgree,
reason: reason
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
```
###**步骤八:主播与主播 PK**
1. 主播 A 调用requestRoomPK向主播 B 发起 PK 请求。
2. 主播 B 会收到setLiveRoomListener#onRequestRoomPK回调通知。
3. 主播 B 调用responseRoomPK决定是否接受主播 A 的 PK 请求。
4. 主播 B 接受主播 A 的请求,等待setLiveRoomListener#onAnchorEnter通知,调用startPlay显示主播 A。
5. 主播 A 收到responseCallback回调通知,PK 请求是否被同意。
6. 主播 A 请求被同意,等待setLiveRoomListener#onAnchorEnter通知,调用startPlay显示主播 B。

```js
liveRoom.requestRoomPK({
roomId: remoteRoomId,
userId: remoteUserId
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
```
```js
liveRoom.responseRoomPK({
userId: remoteUserId,
isAgree: isAgree,
reason: reason
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
```
###**步骤九:实现文字聊天和弹幕消息**
- 通过sendRoomTextMsg可以发送普通的文本消息,所有在该房间内的主播和观众均可以收到setLiveRoomListener#onRecvRoomTextMsg回调。
即时通信 IM 后台有默认的敏感词过滤规则,被判定为敏感词的文本消息不会被云端转发。
```js
liveRoom.sendRoomTextMsg({
msg: msg
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
```
- 通过sendRoomCustomMsg可以发送自定义(信令)的消息,所有在该房间内的主播和观众均可以收到setLiveRoomListener#onRecvRoomCustomMsg回调。
自定义消息常用于传输自定义信令,例如用于点赞消息的发送和广播。、
```js
liveRoom.sendRoomCustomMsg({
cmd: cmd,
msg: msg
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
```
##**技术支持**
如果您有以下需求:
- 方案咨询;
- 接入流程协助;
- 测试DEMO功能;
- 高级功能测试;
- 问题反馈;
- 需求反馈;
联系我们,获取技术支持,微信号为:
ruanyunkeji001或ruanyunkeji002
##**示例代码**
附件为示例代码,您如果接入遇到问题,请联系我们上方的技术支持微信号。
本帖子中包含更多资源 您需要 登录 才可以下载或查看,没有帐号?立即注册
x
更多推荐
所有评论(0)