观众端(不加房间)
融云 RTC Web SDK 支持直播模式下观众直接通过资源地址(liveUrl)订阅并观看直播,即观众无需加入房间即可订阅直播。
提示
当 SDK 版本 < 5.1.0 时,仅支持通过 liveUrl 直接订阅资源(观众不加房间订阅)。此时,观众通过 liveUrl 订阅主播端资源,但 liveUrl 和 livingType 的分发逻辑需开发者自行实现。
与加入房间订阅方式的对比
-
SDK < 5.1.0
仅支持通过
liveUrl直接订阅观看直播(观众不加房间订阅),liveUrl和livingType的分发逻辑需开发者自行实现。 -
SDK ≥ 5.1.0
支持观众加入 RTC 房间,并通过房间实例订阅房间内资源。观众用户可以通过加入房间的返回值、房间事件监听器以及房间实例方法获取和订阅资源。
获取直播观众客户端实例
当观众通过资源地址 liveUrl 订阅主播端资源时,需要先通过 RCRTCClient 实例的 getAudienceClient 方法获取 RCAudienceClient 实例 。
该实例仅会在首次获取时初始化一次。
typescript
// 获取 RCAudienceClient 观众端实例
const liveUrlAudienceClient = rtcClient.getAudienceClient()
RCAudienceClient 提供以下方法:
| 方法 | 说明 |
|---|---|
| subscribe | 订阅 liveUrl 对应的资源 |
| unsubscribe | 取消订阅主播资源 |
| registerReportListener | 注册数据监控监听器 IRCRTCReportListener |
| registerTrackEventListener | 注册音视频流事件监听器 IRCRTCTrackEventListener。多次注册会覆盖前一次注册,可通过 registerTrackEventListener(null) 取消注册 |
流数据监听
通过 registerTrackEventListener 注册 IRCRTCTrackEventListener,监听远端音视频流状态。
代码示例
typescript
// 注册流数据监听
liveUrlAudienceClient.registerTrackEventListener({
/**
* 当订阅的音视频流通道建立完成时触发,track 已可播放
* @param track RCRemoteTrack 类实例
*/
onTrackReady (track: RCRemoteTrack) {
// 订阅的音视频轨道已连接,可以根据业务需求选择性播放
if (track.isAudioTrack()) {
// 音频播放无需传递组件
track.play()
} else {
// 此处的 videoNode 为 <video> 标签元素实例
track.play(videoNode)
}
}
})