加入和退出音视频房间
更新时间: 2023/09/13 10:04:29
本文介绍如何通过 NERoom SDK 加入或退出音视频房间、设置画布以及订阅远端视频流。
功能介绍
NERoom SDK 支持通过 joinRtcChannel 加入音视频房间,您可以进行实时音视频通话。
注意事项
- 您需要先调用 joinRoom 方法加入 NERoom 的房间。
- 加入或退出音视频房间后,房间内其他成员会收到 onMemberJoinRtcChannel 或 onMemberLeaveRtcChannel 回调。
加入音视频房间
配置步骤
- 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将
roomUuid
设置为您所加入房间的 ID。 - 调用 joinRtcChannel 方法加入音视频房间。调用此方法时,房间内其他成员会收到 onMemberJoinRtcChannel 回调。
示例代码
NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
NERoomContext roomContext = roomService.getRoomContext(roomUuid);
if (roomContext!=null){
roomContext.getRtcController().joinRtcChannel(new NECallback2<Unit>() {
@Override
public void onSuccess(@Nullable Unit unit) {
super.onSuccess(unit);
Log.d(TAG,"success");
}
@Override
public void onError(int code, @Nullable String message) {
super.onError(code, message);
Log.d(TAG,"error");
}
});
}
设置本端主流画布
配置步骤
- 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将
roomUuid
设置为您所加入房间的 ID。 - 调用 setupLocalVideoCanvas 方法设置本端主流画布。
示例代码
NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
NERoomContext roomContext = roomService.getRoomContext(roomUuid);
if (roomContext!=null){
NERoomVideoView localVideoView = findViewById(R.id.localView);
roomContext.getRtcController().setupLocalVideoCanvas(localVideoView,new NECallback2<Unit>() {
@Override
public void onSuccess(@Nullable Unit unit) {
super.onSuccess(unit);
Log.d(TAG,"success");
}
@Override
public void onError(int code, @Nullable String message) {
super.onError(code, message);
Log.d(TAG,"error");
}
});
}
设置远端主流画布
配置步骤
- 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将
roomUuid
设置为您所加入房间的 ID。 - 调用 setupRemoteVideoCanvas 方法设置远端主流画布。调用此方法时,您需要将
userUuid
设置为指定订阅的用户 ID。
示例代码
NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
NERoomContext roomContext = roomService.getRoomContext(roomUuid);
if (roomContext!=null){
NERoomVideoView remoteView = findViewById(R.id.remoteView);
roomContext.getRtcController().setupRemoteVideoCanvas(userUuid,remoteView,new NECallback2<Unit>() {
@Override
public void onSuccess(@Nullable Unit unit) {
super.onSuccess(unit);
Log.d(TAG,"success");
}
@Override
public void onError(int code, @Nullable String message) {
super.onError(code, message);
Log.d(TAG,"error");
}
});
}
设置远端辅流画布
配置步骤
- 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将
roomUuid
设置为您所加入房间的 ID。 - 调用 setupRemoteVideoSubStreamCanvas 方法设置远端辅流画布。调用此方法时,您需要将
userUuid
设置为指定订阅的用户 ID。
示例代码
// 设置远端辅流画布 可观看到成员的屏幕共享画面
NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
NERoomContext roomContext = roomService.getRoomContext(roomUuid);
if (roomContext!=null){
NERoomVideoView remoteView = findViewById(R.id.remoteView);
roomContext.getRtcController().setupRemoteVideoSubStreamCanvas(userUuid,remoteView,new NECallback2<Unit>() {
@Override
public void onSuccess(@Nullable Unit unit) {
super.onSuccess(unit);
Log.d(TAG,"success");
}
@Override
public void onError(int code, @Nullable String message) {
super.onError(code, message);
Log.d(TAG,"error");
}
});
}
订阅远端视频主流
配置步骤
- 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将
roomUuid
设置为您所加入房间的 ID。 - 调用 subscribeRemoteVideoStream 方法订阅远端视频主流。调用此方法时,您需要将
userUuid
设置为指定订阅的用户 ID,并将subscribe
参数设置为 true 开启订阅该远端用户的视频流。
示例代码
// 只有订阅远端视频 才能看到房间成员画面
NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
NERoomContext roomContext = roomService.getRoomContext(roomUuid);
if (roomContext!=null){
roomContext.getRtcController().subscribeRemoteVideoStream(userUuid,
new NECallback2<Unit>() {
@Override
public void onSuccess(
@Nullable Unit unit) {
Log.d(TAG,"success");
}
@Override
public void onError(int code,
@Nullable String message) {
Log.d(TAG,"error");
}
});
}
取消订阅远端视频主流
配置步骤
- 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将
roomUuid
设置为您所加入房间的 ID。 - 调用 unsubscribeRemoteVideoStream 方法取消订阅远端视频主流。调用此方法时,您需要将
userUuid
设置为指定订阅的用户 ID,并将subscribe
参数设置为 false 取消订阅该远端用户的视频流。
示例代码
NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
NERoomContext roomContext = roomService.getRoomContext(roomUuid);
if (roomContext!=null){
roomContext.getRtcController().unsubscribeRemoteVideoStream(userUuid,
new NECallback2<Unit>() {
@Override
public void onSuccess(
@Nullable Unit unit) {
Log.d(TAG,"success");
}
@Override
public void onError(int code,
@Nullable String message) {
Log.d(TAG,"error");
}
});
}
订阅远端视频辅流
配置步骤
- 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将
roomUuid
设置为您所加入房间的 ID。 - 调用 subscribeRemoteVideoSubStream 方法订阅远端视频辅流。调用此方法时,您需要将
userUuid
设置为指定订阅的用户 ID,并将subscribe
参数设置为 true 订阅该远端用户的视频辅流。
示例代码
// 只有订阅成员的远端辅流,才能通过设置远端辅流画布看到成员的屏幕共享画面
NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
NERoomContext roomContext = roomService.getRoomContext(roomUuid);
if (roomContext!=null){
roomContext.getRtcController().subscribeRemoteSubStreamVideo(userUuid,
new NECallback2<Unit>() {
@Override
public void onSuccess(
@Nullable Unit unit) {
Log.d(TAG,"success");
}
@Override
public void onError(int code,
@Nullable String message) {
Log.d(TAG,"error");
}
});
}
取消订阅远端视频辅流
配置步骤
- 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将
roomUuid
设置为您所加入房间的 ID。 - 调用 unsubscribeRemoteVideoSubStream 方法取消订阅远端视频辅流。调用此方法时,您需要将
userUuid
设置为指定订阅的用户 ID,并将subscribe
参数设置为 false 取消订阅该远端用户的视频辅流。
示例代码
NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
NERoomContext roomContext = roomService.getRoomContext(roomUuid);
if (roomContext!=null){
roomContext.getRtcController().unsubscribeRemoteVideoSubStream(userUuid,
new NECallback2<Unit>() {
@Override
public void onSuccess(
@Nullable Unit unit) {
Log.d(TAG,"success");
}
@Override
public void onError(int code,
@Nullable String message) {
Log.d(TAG,"error");
}
});
}
退出音视频房间
配置步骤
- 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将
roomUuid
设置为您所加入房间的 ID。 - 调用 leaveRtcChannel 方法退出音视频房间。调用此方法时,房间内其他成员会收到 onMemberLeaveRtcChannel 回调。
示例代码
NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
NERoomContext roomContext = roomService.getRoomContext(roomUuid);
if (roomContext!=null){
roomContext.getRtcController().leaveRtcChannel(new NECallback2<Unit>() {
@Override
public void onSuccess(
@Nullable Unit unit) {
Log.d(TAG,"success");
}
@Override
public void onError(int code,
@Nullable String message) {
Log.d(TAG,"error");
}
});
}
API 参考
方法 | 功能描述 |
---|---|
joinRoom | 加入 NERoom 的房间。 |
getRoomContext | 获取房间上下文。 |
joinRtcChannel | 加入音视频房间。 |
setupLocalVideoCanvas | 设置本端画布。 |
setupRemoteVideoCanvas | 设置远端画布。 |
setupRemoteVideoSubStreamCanvas | 设置远端辅流画布。 |
subscribeRemoteVideoStream | 订阅远端视频主流。 |
subscribeRemoteVideoSubStream | 订阅远端视频辅流。 |
leaveRtcChannel | 离开音视频房间。 |
onMemberJoinRtcChannel | 成员加入音视频房间回调。 |
onMemberLeaveRtcChannel | 成员离开音视频房间回调。 |
此文档是否对你有帮助?