跳到主要内容

主播端

以主播身份加入房间后,需发布资源,房间内的其他主播和观众才能看到并听到。若直播间有多名主播,主播之间也需要相互订阅,才能彼此看见、听见。

发布

直播房间发布音视频流时,可调用 RCRTCLocalUserpublishDefaultLiveStreams 发布本地默认音视频流。默认音视频流指麦克风采集的音频与摄像头采集的视频。您也可以调用 publishLiveStream 指定资源进行发布,例如仅发布音频或视频,或发布媒体文件、屏幕共享流。

发布成功回调返回的 RCRTCLiveInfo 为直播资源对象,可通过它调用 CDN、合流布局等直播相关接口。

提示

从 5.3.1 版本起,若您在加入房间前开启了网络质量探测,发布资源时 SDK 会在网络较差时自适应降低发布资源的分辨率,避免远端订阅资源的观众或主播无法正常查看该资源;网络恢复后会自动恢复到初始分辨率。

Java
// 直播模式下,发布默认音视频流,即麦克风、摄像头采集数据
room.getLocalUser().publishDefaultLiveStreams(new IRCRTCResultDataCallback<RCRTCLiveInfo>() {
@Override
public void onSuccess(RCRTCLiveInfo liveInfo) {
// 发布成功
}

@Override
public void onFailed(RTCErrorCode code) {
// 发布失败
}
});

取消发布

当需要取消发布时,调用 RCRTCLocalUserunpublishDefaultLiveStreams 取消发布默认音视频流;也可调用 unpublishLiveStream 取消发布指定资源。取消发布接口通常与发布接口配对使用。若您退出房间,无需手动取消发布;调用退出房间接口时,SDK 会自动进行取消处理。

Java
room.getLocalUser().unpublishDefaultLiveStreams(new IRCRTCResultCallback() {
@Override
public void onSuccess() {
// 取消发布成功
}

@Override
public void onFailed(RTCErrorCode rtcErrorCode) {
// 取消发布失败
}
});

仅自己发布、不与他人连麦注1PK注2时,无需执行订阅逻辑。若连麦或 PK,主播的订阅流程与会议模式相同。

提示
  • 注1:连麦 指在当前直播间内,主播邀请观众上麦,观众切换为主播后,主播之间互相发布订阅。
  • 注2:PK 指不同直播间的主播,相互订阅建立连接。

订阅资源

当直播房间内有多名主播时,主播之间需要互相订阅才能相互看见、听见。请调用 RCRTCLocalUsersubscribeStreamsubscribeStreams 订阅单个或多个媒体流。

Java
rtcRoom.getLocalUser().subscribeStreams(inputStreams, new IRCRTCResultDataCallback<List<RCRTCInputStream>>() {
@Override
public void onSuccess() {

}
@Override
public void onSuccess(List<RCRTCInputStream> data) {

}

@Override
// 如果 SDK ≥ 5.3.4,您可以使用 IRCRTCResultDataCallback,onFailed 方法会返回订阅失败的流列表和错误码。
// 如果 SDK < 5.3.4,仅支持使用 IRCRTCResultCallback,onFailed 方法仅返回错误码。
public void onFailed(List<RCRTCInputStream> failedStreams, RTCErrorCode errorCode) {

}
});

取消订阅

当需要取消订阅时,调用 RCRTCLocalUserunsubscribeStreamunsubscribeStreams 取消订阅一道或多道流。取消订阅接口通常与订阅接口配对使用。若用户主动退出房间,无需手动取消订阅;调用退出房间接口时,SDK 会自动进行取消处理。

参数说明

参数类型说明
streamsList<? extends RCRTCInputStream>要取消订阅的音视频流
callBackIRCRTCResultCallback取消订阅结果回调

示例代码

Java
rtcRoom.getLocalUser().unsubscribeStreams(unPublishResource, new IRCRTCResultCallback() {
@Override
public void onSuccess() {
// 取消成功
}

@Override
public void onFailed(RTCErrorCode errorCode) {
// 取消失败
}
});
参数类型说明
streamsList<? extends RCRTCInputStream>要取消订阅的音视频流
callBackIRCRTCResultCallback取消订阅结果回调