发布和订阅

  • Android

更新时间不可用

enableDualStreamMode [1/2]

在发送端启用或禁用双流模式。

Java
public abstract int enableDualStreamMode(boolean enabled)

废弃

自 v4.2.0 版本废弃,请改用 setDualStreamMode。

启用双流模式后,你可以调用 setRemoteVideoStreamType 方法,在订阅端选择接收视频大流或视频小流。 双流由以下两种视频流组成:

  • 视频大流:高码率、高分辨率。
  • 视频小流:低码率、低分辨率。

注:

  • 该方法适用于发送端的所有类型视频流,包括但不限于摄像头采集的视频流、屏幕共享流和自定义采集的视频流。
  • 如果你需要在多频道场景中启用双流模式,可以调用 enableDualStreamModeEx 方法。
  • 你可以在加入频道前或加入频道后调用该方法。

参数

参数名描述
enabled

是否启用双流模式:

  • true:启用双流模式。
  • false:(默认)禁用双流模式。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

enableDualStreamMode [2/2]

设置发送端的双流模式和视频小流。

Java
public abstract int enableDualStreamMode(boolean enabled, SimulcastStreamConfig streamConfig)

废弃

自 v4.2.0 版本废弃,请改用 setDualStreamMode。

你可以调用此方法在发送端启用或关闭双流模式。双流由一路视频大流和一路视频小流组成:

  • 视频大流:高码率、高分辨率。
  • 视频小流:低码率、低分辨率。

启用双流模式后,你可以调用 setRemoteVideoStreamType 方法,在接收端选择接收视频大流或视频小流。

注:

  • 该方法适用于发送端的所有类型视频流,包括但不限于摄像头采集的视频流、屏幕共享流和自定义采集的视频流。
  • 如果你需要在多频道场景中启用双流模式,可以调用 enableDualStreamModeEx 方法。
  • 你可以在加入频道前或加入频道后调用此方法。

参数

参数名描述
enabled

是否启用双流模式:

  • true:启用双流模式。
  • false:(默认)关闭双流模式。
streamConfig

视频小流的配置,详见 SimulcastStreamConfig。

注: 当 mode 设置为 DISABLE_SIMULCAST_STREAM 时,设置 streamConfig 不生效。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

enableDualStreamModeEx

在发送端启用或关闭双流模式。

Java
public abstract int enableDualStreamModeEx(boolean enabled, SimulcastStreamConfig streamConfig, RtcConnection connection);

废弃

自 v4.2.0 版本废弃。请使用 setDualStreamModeEx 代替。

你可以调用此方法在发送端启用或关闭双流模式。双流由一对视频大流和视频小流组成:

  • 视频大流:高码率,高分辨率。
  • 视频小流:低码率,低分辨率。

启用双流模式后,你可以调用 setRemoteVideoStreamType 方法,在订阅端选择接收视频大流或视频小流。

注: 该方法适用于发送端的所有类型视频流,包括但不限于摄像头采集的视频流、屏幕共享流和自定义采集的视频流。

适用场景

该方法适用于多频道场景。

参数

参数名描述
enabled

是否启用双流模式:

  • true:启用双流模式。
  • false:(默认)关闭双流模式。
streamConfig

视频小流的配置,详见 SimulcastStreamConfig。

注: 当 mode 设置为 DISABLE_SIMULCAST_STREAM 时,设置 streamConfig 不生效。

connection

连接信息,详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

muteAllRemoteAudioStreams

停止或恢复订阅所有远端用户的音频流。

Java
public abstract int muteAllRemoteAudioStreams(boolean muted);

请在加入频道后调用该方法。本地用户将停止或恢复订阅所有远端用户的音频流,包括之后加入频道的用户。

注: 如果你调用该方法后又调用了 enableAudio 或 disableAudio,以最后一次调用为准。默认情况下,加入频道时 SDK 会自动订阅所有远端用户的音频流。你可以在调用 joinChannel 加入频道时将 ChannelMediaOptions 中的 autoSubscribeAudio 设置为 false,以取消加入频道时对所有用户音频流的订阅。

调用时机

请在加入频道后调用该方法。

参数

参数名描述
muted

是否停止订阅所有远端用户的音频流:

  • true:停止订阅所有远端用户的音频流。
  • false:(默认)订阅所有远端用户的音频流。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

muteAllRemoteAudioStreamsEx

停止或恢复订阅所有远端用户的音频流。

Java
public abstract int muteAllRemoteAudioStreamsEx(boolean muted, RtcConnection connection);

适用场景

该方法适用于多频道场景。

调用时机

  • 请在加入频道后调用该方法。
  • 如果你希望在加入频道前不订阅远端用户的音频流,可以在调用 joinChannel 时将 ChannelMediaOptions 中的 autoSubscribeAudio 设置为 false。

参数

参数名描述
muted

是否停止订阅所有远端用户的音频流:

  • true:停止订阅所有远端用户的音频流。
  • false:(默认)订阅所有远端用户的音频流。
connection

连接信息。详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

muteAllRemoteVideoStreams

停止或恢复订阅所有远端用户的视频流。

Java
public abstract int muteAllRemoteVideoStreams(boolean muted);

请在加入频道后调用该方法。调用该方法后,本地用户将停止或恢复订阅所有远端用户的视频流,包括之后加入频道的用户。

注: 如果你调用该方法后又调用了 enableVideo 或 disableVideo,以最后一次调用为准。默认情况下,加入频道时 SDK 会自动订阅所有远端用户的视频流。你可以在调用 joinChannel 加入频道时将 ChannelMediaOptions 中的 autoSubscribeVideo 设置为 false,以取消加入频道时对所有用户的视频流订阅。

调用时机

请在加入频道后调用该方法。

参数

参数名描述
muted

是否停止订阅所有远端用户的视频流。

注:

  • true:停止订阅所有远端用户的视频流。
  • false:(默认)订阅所有远端用户的视频流。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

muteAllRemoteVideoStreamsEx

停止或恢复订阅所有远端用户的视频流。

Java
public abstract int muteAllRemoteVideoStreamsEx(boolean muted, RtcConnection connection);

调用该方法后,你将停止或恢复订阅所有远端用户的视频流,包括之后加入频道的用户。

适用场景

该方法适用于多频道场景。

参数

参数名描述
muted

是否停止订阅所有远端用户的视频流:

  • true:停止订阅所有远端用户的视频流。
  • false:默认订阅所有远端用户的视频流。
connection

连接信息。详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

muteLocalAudioStream

停止或恢复发布本地采集音频流。

Java
public abstract int muteLocalAudioStream(boolean muted);

调用该方法停止发布本地音频流时,音频采集设备仍会正常工作,不受影响。

调用时机

该方法可以在加入频道前或加入频道后调用。

相关回调

调用该方法成功后,本地会触发回调 onAudioPublishStateChanged;远端会触发回调 onUserMuteAudio 和 onRemoteAudioStateChanged。

参数

参数名描述
muted

是否停止发布本地音频流:

  • true:停止发布本地音频流。
  • false:(默认)恢复发布本地音频流。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

muteLocalAudioStreamEx

停止或恢复发布本地音频流。

Java
public abstract int muteLocalAudioStreamEx(boolean muted, RtcConnection connection);

成功调用该方法后,远端客户端会收到 onUserMuteAudio 和 onRemoteAudioStateChanged 回调。

注: 该方法不会影响任何正在进行的音频录制,因为它不会禁用音频采集设备。

适用场景

该方法适用于多频道场景。

参数

参数名描述
muted

是否停止发布本地音频流:

  • true:停止发布本地音频流。
  • false:(默认)恢复发布本地音频流。
connection

连接信息。详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

muteLocalVideoStream

停止或恢复发布本地视频流。

Java
public abstract int muteLocalVideoStream(boolean muted);

该方法用于控制是否发布本地采集的视频流。调用该方法停止发布本地视频流时,视频采集设备仍会继续工作,不受影响。相比通过将 enableLocalVideo 设为 false 来关闭本地视频采集从而取消发布视频流,该方法响应更快。

调用时机

该方法可以在加入频道前或加入频道后调用。

相关回调

调用该方法成功后,本地会触发回调 onVideoPublishStateChanged;远端会触发回调 onUserMuteVideo 和 onRemoteVideoStateChanged。

参数

参数名描述
muted

是否停止发布本地视频流。

  • true:停止发布本地视频流。
  • false:(默认)发布本地视频流。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

muteLocalVideoStreamEx

停止或恢复发布本地视频流。

Java
public abstract int muteLocalVideoStreamEx(boolean muted, RtcConnection connection);

成功调用该方法后,远端客户端会触发 onUserMuteVideo 回调。

注: 该方法不会影响正在进行的视频录制,因为它不会关闭摄像头。

适用场景

该方法适用于多频道场景。

参数

参数名描述
muted

是否停止发布本地视频流。

  • true:停止发布本地视频流。
  • false:(默认)发布本地视频流。
connection

连接信息。详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

muteRemoteAudioStream

停止或恢复订阅指定远端用户的音频流。

Java
public abstract int muteRemoteAudioStream(int uid, boolean muted);

调用时机

在加入频道后调用该方法。

相关回调

调用该方法成功后,SDK 会触发 onAudioSubscribeStateChanged 回调。

参数

参数名描述
uid

指定远端用户的用户 ID。

muted

是否订阅指定远端用户的音频流:

  • true:停止订阅该用户的音频流。
  • false:订阅该用户的音频流。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

muteRemoteAudioStreamEx

停止或恢复接收指定用户的音频流。

Java
public abstract int muteRemoteAudioStreamEx(int uid, boolean muted, RtcConnection connection);

你可以在加入频道前或加入频道后调用该方法。如果用户离开频道,方法的设置将失效。

适用场景

该方法适用于多频道场景。

参数

参数名描述
uid

指定用户的 ID。

muted

是否停止接收指定用户的音频流:

  • true:停止接收指定用户的音频流。
  • false:(默认)恢复接收指定用户的音频流。
connection

连接信息。详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

muteRemoteVideoStream

停止或恢复订阅指定远端用户的视频流。

Java
public abstract int muteRemoteVideoStream(int uid, boolean muted);

调用时机

请在加入频道后调用该方法。

相关回调

调用该方法成功后,SDK 会触发 onVideoSubscribeStateChanged 回调。

参数

参数名描述
uid

指定远端用户的用户 ID。

muted

是否订阅指定远端用户的视频流:

  • true:停止订阅该用户的视频流。
  • false:订阅该用户的视频流(默认)。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

muteRemoteVideoStreamEx

停止或恢复接收指定用户的视频流。

Java
public abstract int muteRemoteVideoStreamEx(int uid, boolean muted, RtcConnection connection);

你可以在加入频道前或加入频道后调用该方法。如果该用户离开频道,设置将失效。

适用场景

该方法适用于多频道场景。

参数

参数名描述
uid

远端用户 ID。

muted

是否停止接收指定用户的视频流:

  • true:停止接收指定用户的视频流。
  • false:(默认)恢复接收指定用户的视频流。
connection

连接信息。详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setDualStreamMode [1/2]

设置发送端的视频流模式,用于控制是否发送视频小流。

Java
public abstract int setDualStreamMode(Constants.SimulcastStreamMode mode);

你可以调用该方法设置发送端的视频流模式。 SDK 默认在发送端启用视频小流自适应模式(AUTO_SIMULCAST_STREAM),即发送端不会主动发送视频小流。角色为主播的接收端可以通过调用 setRemoteVideoStreamType 发起视频小流请求,发送端在收到请求后会自动开始发送视频小流。

  • 如果你希望修改此行为,可以调用该方法并将 mode 设置为 DISABLE_SIMULCAST_STREAM(从不发送视频小流)或 ENABLE_SIMULCAST_STREAM(始终发送视频小流)。
  • 如果你希望恢复默认行为,可以再次调用该方法并将 mode 设置为 AUTO_SIMULCAST_STREAM。

注: 该方法与 enableDualStreamMode 的区别如下:

  • 当调用该方法并将 mode 设置为 DISABLE_SIMULCAST_STREAM 时,效果等同于调用 enableDualStreamMode(false)。
  • 当调用该方法并将 mode 设置为 ENABLE_SIMULCAST_STREAM 时,效果等同于调用 enableDualStreamMode(true)。
  • 两个方法都可以在加入频道前或后调用。如果两个方法都被调用,则以后调用的方法设置优先生效。

参数

参数名描述
mode

发送视频流的模式。详见 SimulcastStreamMode。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setDualStreamMode [2/2]

设置发送端的不同质量层级的视频流模式配置。

Java
public abstract int setDualStreamMode(Constants.SimulcastStreamMode mode, SimulcastStreamConfig streamConfig);

SDK 默认在发送端开启视频小流自适应模式(AUTO_SIMULCAST_STREAM),即发送端不会主动发送视频小流。角色为主播的接收端可以通过调用 setRemoteVideoStreamType 发起视频小流请求,发送端在收到请求后会自动开始发送视频小流。

  • 如果你希望修改该行为,可以调用该方法,并将 mode 设置为 DISABLE_SIMULCAST_STREAM(从不发送视频小流)或 ENABLE_SIMULCAST_STREAM(始终发送视频小流)。
  • 如果你希望恢复默认行为,可以再次调用该方法,并将 mode 设置为 AUTO_SIMULCAST_STREAM。

注: 该方法与 enableDualStreamMode 的区别如下:

  • 当调用该方法并将 mode 设置为 DISABLE_SIMULCAST_STREAM 时,效果等同于调用 enableDualStreamMode 并将 enabled 设置为 false。
  • 当调用该方法并将 mode 设置为 ENABLE_SIMULCAST_STREAM 时,效果等同于调用 enableDualStreamMode 并将 enabled 设置为 true。
  • 两个方法都可以在加入频道前或后调用。如果两个方法都被调用,则以后调用的方法设置优先生效。

参数

参数名描述
mode

发送视频流的模式,详见 SimulcastStreamMode。

streamConfig

视频小流的配置,详见 SimulcastStreamConfig。

注: 当 mode 设置为 DISABLE_SIMULCAST_STREAM 时,设置该参数无效。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setDualStreamModeEx

设置发送端的视频流模式,用于控制是否发送视频小流。

Java
public abstract int setDualStreamModeEx(Constants.SimulcastStreamMode mode, SimulcastStreamConfig streamConfig, RtcConnection connection);

SDK 默认在发送端开启视频小流自适应模式(AUTO_SIMULCAST_STREAM)。角色为主播的接收端可以通过调用 setRemoteVideoStreamTypeEx 发起视频小流请求,发送端在收到请求后会自动开始发送视频小流。

  • 如果你希望修改此行为,可以调用该方法并将 mode 设置为 DISABLE_SIMULCAST_STREAM(从不发送视频小流)或 ENABLE_SIMULCAST_STREAM(始终发送视频小流)。
  • 如果你希望恢复默认行为,可以再次调用该方法并将 mode 设置为 AUTO_SIMULCAST_STREAM。

注: 该方法与 enableDualStreamModeEx 的区别如下:

  • 将 mode 设置为 DISABLE_SIMULCAST_STREAM 时,效果等同于调用 enableDualStreamModeEx(false)。
  • 将 mode 设置为 ENABLE_SIMULCAST_STREAM 时,效果等同于调用 enableDualStreamModeEx(true)。
  • 两个方法均可在加入频道前或后调用。如果两个方法都被调用,则以后调用的方法设置优先生效。

适用场景

该方法适用于多频道场景。

参数

参数名描述
mode

视频流发送模式。详见 SimulcastStreamMode。

streamConfig

视频小流的配置。详见 SimulcastStreamConfig。

注: 当 mode 设置为 DISABLE_SIMULCAST_STREAM 时,该参数不生效。

connection

连接信息。详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setRemoteDefaultVideoStreamType [1/2]

设置默认订阅的视频流类型。

Java
public abstract int setRemoteDefaultVideoStreamType(Constants.VideoStreamType streamType);

根据发送端的默认行为以及调用 setDualStreamMode 时的具体设置,接收端调用该方法的场景如下:

  • SDK 默认在发送端开启视频小流自适应模式(AUTO_SIMULCAST_STREAM),即仅发送视频大流。只有角色为主播的接收端可以调用该方法发起视频小流请求。一旦发送端收到请求后,会自动开始发送视频小流。此时,频道内所有用户都可以调用该方法切换为订阅视频小流模式。
  • 如果发送端调用 setDualStreamMode 并将 mode 设置为 DISABLE_SIMULCAST_STREAM(从不发送视频小流),则调用该方法无效。
  • 如果发送端调用 setDualStreamMode 并将 mode 设置为 ENABLE_SIMULCAST_STREAM(始终发送视频小流),则主播和观众角色的接收端都可以调用该方法切换为订阅视频小流模式。

SDK 会根据视频窗口的大小动态调整对应视频流的尺寸,以节省带宽和计算资源。视频小流的默认宽高比与视频大流一致。系统会根据当前视频大流的宽高比,自动分配视频小流的分辨率、帧率和码率。

注: 如果同时调用该方法和 setRemoteVideoStreamType,则以 setRemoteVideoStreamType 的设置为准。

调用时机

请在加入频道前调用该方法。SDK 不支持在加入频道后更改默认订阅的视频流类型。

参数

参数名描述
streamType

视频流类型。详见 VideoStreamType。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setRemoteDefaultVideoStreamType [2/2]

设置默认订阅的视频流类型。

Java
public abstract int setRemoteDefaultVideoStreamType(int streamType)

废弃

该方法已废弃,请改用 setRemoteDefaultVideoStreamType [1/2]。

根据发送端的默认行为以及调用 setDualStreamMode 时的具体设置,接收端调用该方法的场景如下:

  • SDK 默认在发送端启用视频小流自适应模式(AUTO_SIMULCAST_STREAM),即仅发送视频大流。只有角色为主播的接收端可以调用该方法发起视频小流请求。一旦发送端收到请求后,会自动开始发送视频小流。此时,频道内所有用户都可以调用该方法切换为订阅视频小流模式。
  • 如果发送端调用 setDualStreamMode 并将 mode 设置为 DISABLE_SIMULCAST_STREAM(从不发送视频小流),则调用该方法无效。
  • 如果发送端调用 setDualStreamMode 并将 mode 设置为 ENABLE_SIMULCAST_STREAM(始终发送视频小流),则主播和观众角色的接收端都可以调用该方法切换为订阅视频小流模式。

SDK 会根据视频窗口的大小动态调整对应视频流的尺寸,以节省带宽和计算资源。视频小流的默认宽高比与视频大流一致。系统会根据当前视频大流的宽高比,自动分配视频小流的分辨率、帧率和码率。

注: 如果同时调用该方法和 setRemoteVideoStreamType,则以 setRemoteVideoStreamType 的设置为准。

调用时机

请在加入频道前调用该方法。SDK 不支持在加入频道后更改默认订阅的视频流类型。

参数

参数名描述
streamType

默认订阅的视频流类型:

  • VIDEO_STREAM_HIGH(0):视频大流,即高分辨率和高码率的视频流。
  • VIDEO_STREAM_LOW(1):视频小流,即低分辨率和低码率的视频流。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setRemoteVideoStreamType [1/2]

设置要订阅的视频流类型。

Java
public abstract int setRemoteVideoStreamType(int uid, Constants.VideoStreamType streamType);

根据发送端的默认行为以及调用 setDualStreamMode 时的具体设置,接收端调用该方法的场景如下:

  • SDK 默认在发送端开启视频小流自适应模式(AUTO_SIMULCAST_STREAM),即仅发送视频大流。只有角色为主播的接收端可以调用该方法发起视频小流请求。发送端收到请求后,会自动开始发送视频小流。此时,频道内所有用户都可以调用该方法切换为订阅视频小流模式。
  • 如果发送端调用 setDualStreamMode 并将 mode 设置为 DISABLE_SIMULCAST_STREAM(从不发送视频小流),则调用该方法无效。
  • 如果发送端调用 setDualStreamMode 并将 mode 设置为 ENABLE_SIMULCAST_STREAM(始终发送视频小流),则主播和观众角色的接收端都可以调用该方法切换为订阅视频小流模式。

SDK 会根据视频窗口的大小动态调整对应视频流的尺寸,以节省带宽和计算资源。视频小流的默认宽高比与视频大流一致。系统会根据当前视频大流的宽高比,自动分配视频小流的分辨率、帧率和码率。

注:

  • 可以在加入频道前或加入频道后调用该方法。
  • 如果同时调用该方法和 setRemoteDefaultVideoStreamType,则以该方法的设置为准。

参数

参数名描述
uid

远端用户 ID。

streamType

视频流类型。详见 VideoStreamType。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setRemoteVideoStreamType [2/2]

设置要订阅的视频流类型。

Java
public abstract int setRemoteVideoStreamType(int uid, int streamType)

废弃

该方法已废弃,请改用 setRemoteVideoStreamType(int uid, Constants.VideoStreamType streamType)。

根据发送端的默认行为以及调用 setDualStreamMode 时的具体设置,接收端调用此方法的场景如下:

  • SDK 默认在发送端启用视频小流自适应模式(AUTO_SIMULCAST_STREAM),即仅发送视频大流。只有角色为主播的接收端可以调用此方法发起视频小流请求。一旦发送端收到请求后,会自动开始发送视频小流。此时,频道内所有用户都可以调用此方法切换为订阅视频小流模式。
  • 如果发送端调用 setDualStreamMode 并将 mode 设置为 DISABLE_SIMULCAST_STREAM(从不发送视频小流),则调用此方法无效。
  • 如果发送端调用 setDualStreamMode 并将 mode 设置为 ENABLE_SIMULCAST_STREAM(始终发送视频小流),则主播和观众角色的接收端都可以调用此方法切换为订阅视频小流模式。

SDK 会根据视频窗口的大小动态调整对应视频流的尺寸,以节省带宽和计算资源。视频小流的默认宽高比与视频大流相同。系统会根据当前视频大流的宽高比,自动分配视频小流的分辨率、帧率和码率。

注:

  • 可以在加入频道前或后调用此方法。
  • 如果同时调用此方法和 setRemoteDefaultVideoStreamType,则以此方法的设置为准。

参数

参数名描述
uid

远端用户 ID。

streamType

视频流类型:

  • 0:视频大流。
  • 1:视频小流。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setRemoteVideoStreamTypeEx [1/2]

设置要订阅的视频流类型。

Java
public abstract int setRemoteVideoStreamTypeEx(int uid, Constants.VideoStreamType streamType, RtcConnection connection);

根据发送端的默认行为以及调用 setDualStreamModeEx 时的具体设置,接收端调用该方法的场景如下:

  • SDK 默认在发送端开启视频小流自适应模式(AUTO_SIMULCAST_STREAM),即仅发送视频大流。此时,仅角色为 Host 的接收端可以调用该方法发起视频小流请求。一旦发送端收到请求后,会自动开始发送视频小流。此时,频道内所有用户均可调用该方法切换为视频小流订阅模式。
  • 如果发送端调用 setDualStreamMode 并将 mode 设置为 DISABLE_SIMULCAST_STREAM(从不发送视频小流),则调用该方法无效。
  • 如果发送端调用 setDualStreamMode 并将 mode 设置为 ENABLE_SIMULCAST_STREAM(始终发送视频小流),则 Host 和 Audience 角色的接收端均可调用该方法切换为视频小流订阅模式。

SDK 会根据视频窗口的大小动态调整对应视频流的尺寸,以节省带宽和计算资源。视频小流的默认宽高比与视频大流一致。系统会根据当前视频大流的宽高比,自动分配视频小流的分辨率、帧率和码率。

注: 如果发送端已调用 setDualStreamModeEx 并将 mode 设置为 DISABLE_SIMULCAST_STREAM,则调用该方法无效。你需要在发送端再次调用 setDualStreamModeEx 并调整设置。

适用场景

该方法适用于多频道场景。

参数

参数名描述
uid

远端用户 ID。

streamType

视频流类型,详见 VideoStreamType。

connection

连接信息,详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setRemoteVideoStreamTypeEx [2/2]

设置要订阅的视频流类型。

Java
public abstract int setRemoteVideoStreamTypeEx(int uid, int streamType, RtcConnection connection);

废弃

该方法已废弃,请改用 setRemoteVideoStreamTypeEx [1/2]。

根据发送端的默认行为以及调用 setDualStreamModeEx 时的具体设置,接收端调用该方法的场景如下:

  • SDK 默认在发送端启用视频小流自适应模式(AUTO_SIMULCAST_STREAM),即仅发送视频大流。只有角色为主播的接收端可以调用该方法发起视频小流请求。一旦发送端收到请求,会自动开始发送视频小流。此时,频道内所有用户都可以调用该方法切换为视频小流订阅模式。
  • 如果发送端调用 setDualStreamMode 并将 mode 设置为 DISABLE_SIMULCAST_STREAM(从不发送视频小流),则调用该方法无效。
  • 如果发送端调用 setDualStreamMode 并将 mode 设置为 ENABLE_SIMULCAST_STREAM(始终发送视频小流),则主播和观众角色的接收端都可以调用该方法切换为视频小流订阅模式。

SDK 会根据视频窗口的大小动态调整对应视频流的尺寸,以节省带宽和计算资源。视频小流的默认宽高比与视频大流一致。系统会根据当前视频大流的宽高比,自动分配视频小流的分辨率、帧率和码率。

注: 如果发送端已调用 setDualStreamModeEx 并将 mode 设置为 DISABLE_SIMULCAST_STREAM(从不发送视频小流),则调用该方法无效。你应在发送端重新调用 setDualStreamModeEx 并调整设置。

适用场景

该方法适用于多频道场景。

参数

参数名描述
uid

远端用户 ID。

streamType

视频流类型:

  • 0:视频大流。
  • 1:视频小流。
connection

连接信息。详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setRemoteVideoSubscriptionOptions

设置订阅远端视频流的选项。

Java
public abstract int setRemoteVideoSubscriptionOptions(int uid, VideoSubscriptionOptions options);

你可以调用该方法设置订阅远端用户发送的视频流的选项,适用于远端用户开启双流模式的场景。SDK 默认的远端视频流订阅行为取决于注册的视频观察器类型:

  • 如果注册了 IVideoFrameObserver 观察器,默认订阅原始数据和编码数据;
  • 如果注册了 IVideoEncodedFrameObserver 观察器,默认仅订阅编码数据;
  • 如果同时注册了两种观察器,默认行为遵循最后注册的视频观察器。例如,如果最后注册的是 IVideoFrameObserver,则默认订阅原始数据和编码数据。

如果你希望修改默认行为,或为不同的用户 ID 设置不同的订阅选项,可以调用该方法进行设置。

参数

参数名描述
uid

远端用户的用户 ID。

options

视频订阅选项,详见 VideoSubscriptionOptions。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setRemoteVideoSubscriptionOptionsEx

设置订阅远端视频流的选项。

Java
public abstract int setRemoteVideoSubscriptionOptionsEx(int uid, VideoSubscriptionOptions options, RtcConnection rtcConnection);

该方法适用于多频道场景。当远端用户开启双流模式时,你可以调用该方法设置订阅该远端用户发送的视频流的选项。

适用场景

该方法适用于多频道场景。

参数

参数名描述
uid

远端用户 ID。

options

视频订阅选项,详见 VideoSubscriptionOptions。

rtcConnection

连接信息,详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setSubscribeAudioAllowlist

设置音频流订阅的白名单。

Java
public abstract int setSubscribeAudioAllowlist(int[] uidList);

注:

  • 你可以在加入频道前或加入频道后调用此方法。
  • 白名单不受 muteRemoteAudioStream、muteAllRemoteAudioStreams 和 ChannelMediaOptions 中 autoSubscribeAudio 设置的影响。
  • 一旦设置了订阅白名单,即使你离开当前频道并重新加入频道,该设置仍然有效。
  • 如果某个用户同时被添加到白名单和黑名单中,则仅黑名单生效。

参数

参数名描述
uidList

你希望订阅的用户 ID 列表。调用该方法时,仅订阅该列表中用户的音频流。如果你希望将某个用户从白名单中移除,需要重新调用 setSubscribeAudioAllowlist 方法,并在新的列表中仅包含你希望订阅的用户 ID。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setSubscribeAudioAllowlistEx

设置音频流订阅的白名单。

Java
public abstract int setSubscribeAudioAllowlistEx(int[] uidList, RtcConnection connection);

注:

  • 你可以在加入频道前或加入频道后调用此方法。
  • 白名单不受 muteRemoteAudioStream、muteAllRemoteAudioStreams 和 ChannelMediaOptions 中 autoSubscribeAudio 设置的影响。
  • 一旦设置了订阅白名单,即使你离开当前频道并重新加入,该设置仍然有效。
  • 如果某个用户同时被添加到白名单和黑名单中,则以黑名单为准。

适用场景

该方法适用于多频道场景。

参数

参数名描述
uidList

你想要订阅的用户 ID 列表。如果你希望将某个用户从白名单中移除,需要调用 setSubscribeAudioAllowlist 方法更新用户 ID 列表;也就是说,你只需在新的用户 ID 列表中添加你希望订阅的用户的用户 ID。

connection

连接信息,详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setSubscribeAudioBlocklist

设置音频流订阅的黑名单。

Java
public abstract int setSubscribeAudioBlocklist(int[] uidList);

注:

  • 你可以在加入频道前或加入频道后调用此方法。
  • 黑名单设置实时生效。将已订阅用户加入黑名单后,该用户的音频流也会停止订阅。
  • 黑名单不受 muteRemoteAudioStream、muteAllRemoteAudioStreams 和 ChannelMediaOptions 中 autoSubscribeAudio 设置的影响。
  • 一旦设置了订阅黑名单,即使你离开当前频道并重新加入频道,该设置仍然有效。
  • 如果某个用户同时被加入白名单和黑名单,则仅黑名单生效。

参数

参数名描述
uidList

不希望订阅其音频流的用户 ID 列表。

  • 如果你希望将某个用户从黑名单中移除,需要调用 setSubscribeAudioBlocklist 方法更新用户 ID 列表,即在新的列表中仅保留不希望订阅的用户 ID。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setSubscribeAudioBlocklistEx

设置音频流订阅的黑名单。

Java
public abstract int setSubscribeAudioBlocklistEx(int[] uidList, RtcConnection connection);

你可以调用该方法指定不希望订阅的用户的音频流。

注:

  • 你可以在加入频道前或加入频道后调用此方法。
  • 黑名单设置实时生效。将已订阅用户加入黑名单后,该用户的音频流也会停止订阅。
  • 黑名单设置不受 muteRemoteAudioStream、muteAllRemoteAudioStreams 和 ChannelMediaOptions 中的 autoSubscribeAudio 的影响。
  • 一旦设置了订阅黑名单,即使离开当前频道并重新加入频道,该设置仍然有效。
  • 如果某个用户同时被加入白名单和黑名单,则仅黑名单生效。

适用场景

该方法适用于多频道场景。

参数

参数名描述
uidList

不希望订阅其音频流的用户 ID 列表。

注:

  • 如果你希望不订阅某个用户的音频流,请将该用户的 ID 添加到该列表中。
  • 如果你希望将某个用户从黑名单中移除,需要调用 setSubscribeAudioBlocklist 方法更新用户 ID 列表;即你只需在新的用户 ID 列表中添加不希望订阅的用户 ID。
connection

连接信息,详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setSubscribeVideoAllowlist

设置视频流订阅的白名单。

Java
public abstract int setSubscribeVideoAllowlist(int[] uidList);

注:

  • 你可以在加入频道前或加入频道后调用此方法。
  • 白名单不受 muteRemoteVideoStream、muteAllRemoteVideoStreams 和 ChannelMediaOptions 中的 autoSubscribeVideo 设置的影响。
  • 一旦设置了订阅白名单,即使你离开当前频道并重新加入,该设置仍然有效。
  • 如果某个用户同时被添加到白名单和黑名单中,则仅黑名单生效。

参数

参数名描述
uidList

希望订阅的视频流所属用户的用户 ID 列表。

  • 如果你希望订阅某个用户的视频流,请将该用户的用户 ID 添加到该列表中。
  • 如果你希望将某个用户从白名单中移除,需要调用 setSubscribeVideoAllowlist 方法更新用户 ID 列表,即在新的用户 ID 列表中仅包含你希望订阅的用户的用户 ID。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setSubscribeVideoAllowlistEx

设置视频流订阅的白名单。

Java
public abstract int setSubscribeVideoAllowlistEx(int[] uidList, RtcConnection connection);

注:

  • 你可以在加入频道前或加入频道后调用此方法。
  • 白名单不受 muteRemoteVideoStream、muteAllRemoteVideoStreams 和 ChannelMediaOptions 中的 autoSubscribeVideo 设置的影响。
  • 一旦设置了订阅白名单,即使离开当前频道并重新加入频道,白名单依然有效。
  • 如果某个用户同时被加入白名单和黑名单,则仅黑名单生效。

适用场景

该方法适用于多频道场景。

参数

参数名描述
uidList

希望订阅的视频流所属用户的用户 ID 列表。

  • 如果你希望订阅某个用户的视频流,请将该用户的用户 ID 添加到该列表中。
  • 如果你希望将某个用户从白名单中移除,需要调用 setSubscribeVideoAllowlist 方法更新用户 ID 列表;这意味着你只需在新的用户 ID 列表中添加希望订阅的用户的用户 ID。
connection

连接信息。详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setSubscribeVideoBlocklist

设置视频流订阅的阻止名单。

Java
public abstract int setSubscribeVideoBlocklist(int[] uidList);

注:

  • 你可以在加入频道前或加入频道后调用此方法。
  • 黑名单设置实时生效。将已订阅用户加入黑名单后,该用户的视频流也会停止订阅。
  • 阻止名单不受 muteRemoteVideoStream、muteAllRemoteVideoStreams 和 ChannelMediaOptions 中的 autoSubscribeVideo 的设置影响。
  • 一旦设置了订阅的阻止名单,即使你离开当前频道并重新加入频道,该设置仍然有效。
  • 如果某个用户同时被添加到允许名单和阻止名单中,则仅阻止名单生效。

参数

参数名描述
uidList

不希望订阅其视频流的用户 ID 列表。

  • 如果你希望屏蔽某个用户的视频流,请将该用户的用户 ID 添加到该列表中。
  • 如果你希望将某个用户从阻止名单中移除,需要调用 setSubscribeVideoBlocklist 方法更新该列表,即仅在新的列表中保留你仍希望屏蔽的用户 ID。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setSubscribeVideoBlocklistEx

设置视频流订阅的黑名单。

Java
public abstract int setSubscribeVideoBlocklistEx(int[] uidList, RtcConnection connection);

注:

  • 你可以在加入频道前或加入频道后调用此方法。
  • 黑名单设置实时生效。将已订阅用户加入黑名单后,该用户的视频流也会停止订阅。
  • 黑名单设置不受 muteRemoteVideoStream、muteAllRemoteVideoStreams 和 ChannelMediaOptions 中的 autoSubscribeVideo 的影响。
  • 一旦设置了订阅黑名单,即使你离开当前频道并重新加入,该设置仍然有效。
  • 如果某个用户同时被加入白名单和黑名单,则仅黑名单生效。

适用场景

该方法适用于多频道场景。

参数

参数名描述
uidList

不希望订阅其视频流的远端用户 ID 列表。如果你希望取消订阅某个用户的视频流,请将该用户的用户 ID 添加到该列表中。如果你希望将某个用户从黑名单中移除,需要调用 setSubscribeVideoBlocklist 方法更新用户 ID 列表,即仅在新的列表中添加你不希望订阅的用户的用户 ID。

connection

连接信息。详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

onAudioPublishStateChanged

音频发布状态发生变化回调。

Java
public void onAudioPublishStateChanged(String channel, int oldState, int newState, int elapseSinceLastState)

触发时机

该回调在音频发布状态发生变化时被触发。

参数

参数名描述
channel

频道名。

oldState

之前的音频发布状态:

  • PUB_STATE_IDLE(0):加入频道后的初始发布状态。
  • PUB_STATE_NO_PUBLISHED(1):发布本地流失败。
  • PUB_STATE_PUBLISHING(2):正在发布本地流。
  • PUB_STATE_PUBLISHED(3):成功发布本地流。
newState

当前的音频发布状态:

  • PUB_STATE_IDLE(0):加入频道后的初始发布状态。
  • PUB_STATE_NO_PUBLISHED(1):发布本地流失败。
  • PUB_STATE_PUBLISHING(2):正在发布本地流。
  • PUB_STATE_PUBLISHED(3):成功发布本地流。
elapseSinceLastState

从上一个状态到当前状态所经过的时间,单位为毫秒。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

onAudioSubscribeStateChanged

音频订阅状态发生变化回调。

Java
public void onAudioSubscribeStateChanged(String channel, int uid, int oldState, int newState, int elapseSinceLastState)

该回调在本地用户订阅远端音频流的状态发生变化时触发。

触发时机

该回调在本地用户订阅远端音频流的状态发生变化时被触发。

参数

参数名描述
channel

频道名。

uid

远端用户 ID。

oldState

之前的订阅状态:

  • SUB_STATE_IDLE (0):加入频道后的初始订阅状态。

  • SUB_STATE_NO_SUBSCRIBED (1):订阅远端音频流失败。可能原因包括:

  • SUB_STATE_SUBSCRIBING (2):正在订阅中。

  • SUB_STATE_SUBSCRIBED (3):已成功接收远端音频流。

newState

当前的订阅状态:

  • SUB_STATE_IDLE (0):加入频道后的初始订阅状态。

  • SUB_STATE_NO_SUBSCRIBED (1):订阅远端音频流失败。可能原因包括:

  • SUB_STATE_SUBSCRIBING (2):正在订阅中。

  • SUB_STATE_SUBSCRIBED (3):已成功接收远端音频流。

elapseSinceLastState

从上一个状态到当前状态所经过的时间,单位为毫秒。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

onVideoSubscribeStateChanged

视频订阅状态发生变化回调。

Java
public void onVideoSubscribeStateChanged(String channel, int uid, int oldState, int newState, int elapseSinceLastState)

触发时机

该回调在本地用户订阅远端视频流的状态发生变化时被触发。

参数

参数名描述
channel

频道名。

uid

远端用户 ID。

oldState

之前的订阅状态:

  • SUB_STATE_IDLE (0):加入频道后的初始订阅状态。

  • SUB_STATE_NO_SUBSCRIBED (1):订阅远端流失败。可能原因包括:

    • 远端用户:

      • 调用 muteLocalVideoStream(true) 停止发送本地视频流。
      • 调用 disableVideo 禁用本地视频模块。
      • 调用 enableLocalVideo(false) 禁用本地视频采集。
      • 远端用户的角色为观众。
    • 本地用户:

  • SUB_STATE_SUBSCRIBING (2):正在订阅中。

  • SUB_STATE_SUBSCRIBED (3):已成功接收远端流。

newState

当前的订阅状态:

  • SUB_STATE_IDLE (0):加入频道后的初始订阅状态。

  • SUB_STATE_NO_SUBSCRIBED (1):订阅远端流失败。可能原因包括:

    • 远端用户:

      • 调用 muteLocalVideoStream(true) 停止发送本地视频流。
      • 调用 disableVideo 禁用本地视频模块。
      • 调用 enableLocalVideo(false) 禁用本地视频采集。
      • 远端用户的角色为观众。
    • 本地用户:

  • SUB_STATE_SUBSCRIBING (2):正在订阅中。

  • SUB_STATE_SUBSCRIBED (3):已成功接收远端流。

elapseSinceLastState

从上一个状态到当前状态所经过的时间,单位为毫秒。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类