跳到主要内容

远端用户流

提示

以下示例中的 remoteStream 实例为加入房间时,房间内其他人已发布的资源,或房间事件监听 onStreamPublish 收到的房间内其他人新发布的资源。

订阅资源

请确保页面已经引入 rc-liveplayer 组件,订阅完资源之后,SDK 内部会把拉流地址赋给微信的拉流组件 live-player,页面中就会展示订阅资源的画面。

调用 subscribe 方法订阅资源。

接口

typescript
room.subscribe(streams)

参数说明

参数类型必填说明
streamsRCRemoteStream[] | ISubParams[]需要订阅的流列表

示例代码

typescript
/**
* 订阅资源
* @param subParams 订阅参数列表
* * ISubParams.stream 从房间数据或房间发布资源事件监听中拿到的 RCRemoteStream 对象
* * ISubParams.subTiny 是否订阅小流,可不传,默认为订阅小流,boolean 类型,true 代表订阅小流
* @returns 订阅的状态码
*/
const { code } = await room.subscribe(subParams)

取消订阅

调用 unsubscribe 方法取消订阅。

接口

typescript
room.unsubscribe(streams)

参数说明

参数类型必填说明
streamsRCRemoteStream[]需要取消订阅的流列表

示例代码

typescript
/**
* 取消订阅
* @param streams 一组远端 stream 对象
* @returns 取消订阅的状态码
*/
const { code } = await room.unsubscribe(streams)

查询远端流是否被订阅

调用 isSubscribed 方法查询远端流是否被订阅。

接口

typescript
remoteStream.isSubscribed()

示例代码

typescript
/**
* stream 是否被订阅
* @returns boolean 为 true 时代表为订阅,false 反之
*/
remoteStream.isSubscribed()

查询远端流是否被发布者禁用

typescript
/**
* 获取音频资源是否被发布者禁用
* @returns boolean 为 true 时代表被禁用,false 反之
*/
remoteStream.isOwnerMuteAudio()
typescript
/**
* 获取视频资源是否被发布者禁用
* @returns boolean 为 true 时代表被禁用,false 反之
*/
remoteStream.isOwnerDisableVideo()

查询远端流是否包含音频/视频

  • 查询 stream 中是否有音频资源 hasAudio
typescript
/**
* stream 中是否有音频资源
* @returns boolean 为 true 时代表包含音频,false 反之
*/
remoteStream.hasAudio()
  • 查询 stream 中是否有视频资源 hasVideo
typescript
/**
* stream 中是否有视频资源
* @returns boolean 为 true 时代表包含视频,false 反之
*/
remoteStream.hasVideo()

获取远端资源信息

  • 获取远端流标识名称(Tag)。Tag 可用于区分流的类型,如 CDN 流、屏幕共享流等。创建自定义流时需要指定自定义的 tag。

    提示

    小程序端暂不支持发布自定义流、发布屏幕共享流,但支持观看其他平台发布的自定义流、屏幕共享流。

    调用 getTag 方法获取远端流标识名称。

typescript
/**
* 获取 stream 的资源名称
* @returns 返回资源名称
*/
remoteStream.getTag()
  • 获取远端资源的 ID getMsid

    流 ID 的生成规则是 userID + _ + tag

    提示

    流 ID 并不能作为区分流的唯一标识。因为同一个用户发布的默认音频和视频流的 ID 是相同的。如果需要获取一个流唯一标识,可以使用 ID + mediaType 拼接。

    调用 getMsid 方法获取远端资源的 ID。

typescript
/**
* 获取 stream 的 ID,由“资源发布者的用户名_资源名”组成
* @returns 返回 stream ID
*/
remoteStream.getMsid()
typescript
/**
* 获取 stream 里面的资源类型
* @returns 返回媒体类型 RCMediaType
* * RCMediaType.AUDIO_ONLY 为 0,代表仅是音频
* * RCMediaType.VIDEO_ONLY 为 1,代表仅是视频
* * RCMediaType.AUDIO_VIDEO 为 2,代表是音视频
*/
remoteStream.getMediaType()
  • 获取远端资源的发布者 ID getUserId

    调用 getUserId 方法获取远端资源的发布者 ID。

typescript
/**
* 获取 stream 的发布者
* @returns 资源发布者用户 ID
*/
remoteStream.getUserId()