标准低延迟直播流程
在开始之前,请您再次确认您已经完成了开通音视频服务、导入 SDK以及初始化。
提示
多人之间想要发起音视频通话,需要加入同一个音视频房间。对于直播需求来讲,资源类型需选择 AudioVideo
或 Audio
,即音视频直播间或纯音频直播间。加入房间的角色也分为主播 LiveBroadcaster
和观众 LiveAudience
,下面就这两种身份,分别进行说明。
主播端
用户加入房间的角色为主播 RCRTCRole.LiveBroadcaster
。
步骤 1.1:设置监听
设置本地事件监听
设置加入房间事件回调
方法
JavaScript
rtcEngine.setOnRoomJoinedListener(callback);
回调参数
参数 | 类型 | 说明 |
---|---|---|
code | Number | 错误码,0 表示成功 |
message | String | 错误信息 |
示例代码
JavaScript
rtcEngine.setOnRoomJoinedListener((code, message) => {
if (code === 0) {
// 加入房间成功
console.log('主播加入房间成功');
} else {
// 加入房间失败
console.log('主播加入房间失败:', message);
}
});
设置发布资源事件回调
方法
JavaScript
rtcEngine.setOnPublishedListener(callback);
回调参数
参数 | 类型 | 说明 |
---|---|---|
type | RCRTCMediaType | 发布资源的类型 |
code | Number | 错误码,0 表示成功 |
message | String | 错误信息 |
示例代码
JavaScript
rtcEngine.setOnPublishedListener((type, code, message) => {
if (code === 0) {
// 发布成功
console.log('主播发布资源成功:', type);
} else {
// 发布失败
console.log('主播发布资源失败:', message);
}
});
设置取消发布资源事件回调
方法
JavaScript
rtcEngine.setOnUnpublishedListener(callback);
回调参数
参数 | 类型 | 说明 |
---|---|---|
type | RCRTCMediaType | 取消发布资源的类型 |
code | Number | 错误码,0 表示成功 |
message | String | 错误信息 |
示例代码
JavaScript
rtcEngine.setOnUnpublishedListener((type, code, message) => {
if (code === 0) {
// 取消发布成功
console.log('主播取消发布资源成功:', type);
} else {
// 取消发布失败
console.log('主播取消发布资源失败:', message);
}
});
设置订阅资源事件回调
方法
JavaScript
rtcEngine.setOnSubscribedListener(callback);
回调参数
参数 | 类型 | 说明 |
---|---|---|
userId | String | 远端用户 ID |
type | RCRTCMediaType | 订阅资源的类型 |
code | Number | 错误码,0 表示成功 |
message | String | 错误信息 |
示例代码
JavaScript
rtcEngine.setOnSubscribedListener((userId, type, code, message) => {
if (code === 0) {
// 订阅成功
console.log('主播订阅资源成功:', userId, type);
} else {
// 订阅失败
console.log('主播订阅资源失败:', message);
}
});
设置取消订阅资源事件回调
方法
JavaScript
rtcEngine.setOnUnsubscribedListener(callback);
回调参数
参数 | 类型 | 说明 |
---|---|---|
userId | String | 远端用户 ID |
type | RCRTCMediaType | 取消订阅资源的类型 |
code | Number | 错误码,0 表示成功 |
message | String | 错误信息 |
示例代码
JavaScript
rtcEngine.setOnUnsubscribedListener((userId, type, code, message) => {
if (code === 0) {
// 取消订阅成功
console.log('主播取消订阅资源成功:', userId, type);
} else {
// 取消订阅失败
console.log('主播取消订阅资源失败:', message);
}
});
设置远端事件监听
设置远端用户加入房间事件回调
方法
JavaScript
rtcEngine.setOnUserJoinedListener(callback);
回调参数
参数 | 类型 | 说明 |
---|---|---|
roomId | String | 房间 ID |
userId | String | 远端用户 ID |
示例代码
JavaScript
rtcEngine.setOnUserJoinedListener((roomId, userId) => {
console.log('远端用户加入房间:', userId, roomId);
});
设置远端用户离开房间事件回调
方法
JavaScript
rtcEngine.setOnUserLeftListener(callback);
回调参数
参数 | 类型 | 说明 |
---|---|---|
roomId | String | 房间 ID |
userId | String | 远端用户 ID |
示例代码
JavaScript
rtcEngine.setOnUserLeftListener((roomId, userId) => {
console.log('远端用户离开房间:', userId, roomId);
});
设置远端用户发布资源回调
方法
JavaScript
rtcEngine.setOnRemotePublishedListener(callback);
回调参数
参数 | 类型 | 说明 |
---|---|---|
roomId | String | 房间 ID |
userId | String | 远端用户 ID |
type | RCRTCMediaType | 远端用户发布的资源类型 |
示例代码
JavaScript
rtcEngine.setOnRemotePublishedListener((roomId, userId, type) => {
console.log('远端用户发布资源:', userId, type);
});
设置远端用户取消发布资源回调
方法
JavaScript
rtcEngine.setOnRemoteUnpublishedListener(callback);
回调参数
参数 | 类型 | 说明 |
---|---|---|
roomId | String | 房间 ID |
userId | String | 远端用户 ID |
type | RCRTCMediaType | 远端用户发布的资源类型 |
示例代码
JavaScript
rtcEngine.setOnRemoteUnpublishedListener((roomId, userId, type) => {
console.log('远端用户取消发布资源:', userId, type);
});
步骤 1.2:加入房间
- 构建 RCRTCRoomSetup,指定主播身份和房间类型:
方法
JavaScript
rtcEngine.joinRoom(roomId, roomSetup);
参数说明
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
roomId | String | 是 | 直播间 ID |
roomSetup | RCRTCRoomSetup | 是 | 房间配置 |
示例代码
JavaScript
let roomSetup = {
// 根据实际场景,选择音视频直播:AudioVideo 或纯音频直播:Audio
type: RCRTCMediaType.AudioVideo,
role: RCRTCRole.LiveBroadcaster
};
rtcEngine.joinRoom('直播间 ID', roomSetup);
console.log('主播加入直播间');
提示
客户端通过 joinRoom
传入的"直播间 ID" 来加入不同房间。房间不需要客户端创建或销毁,融云服务若发现该房间不存在时会自动创建,当没有任何主播时(只有观众不算),过一段时间也会自动销毁该房间。