##**腾讯云视频互动直播**

腾讯云视频互动直播模块,提供互动直播的功能,包括直播、连麦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开始推流。

![主播端开播](

0735a0f7b9aec398e7f293ff6dbc991e.png)

```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即可播放。

![观众端观看](

aeb86b6c0d4b1cb2b19678d3df3e8704.png)

```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即可看到连麦观众的画面。

![观众与主播连麦](https://cloud.tencent.com/document/product/647/43181)

```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。

![主播与主播PK](https://cloud.tencent.com/document/product/647/43181)

```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

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐