发布和订阅

  • C++

更新时间不可用

enableDualStreamMode [1/2]

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

C++
virtual int enableDualStreamMode(bool enabled) __deprecated = 0;

废弃

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

双流由一对视频大流和视频小流组成:

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

启用双流模式后,你可以调用 setRemoteVideoStreamType 方法,在接收端选择接收高质量或低质量的视频流。

注:

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

参数

参数名描述
enabled

是否启用双流模式:

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

返回值

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

所属接口类

enableDualStreamMode [2/2]

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

C++
virtual int enableDualStreamMode(bool enabled, const SimulcastStreamConfig& streamConfig) __deprecated = 0;

废弃

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

你可以调用此方法在发送端启用或关闭双流模式。双流模式指同时发送视频大流和视频小流:

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

启用双流模式后,你可以调用 setRemoteVideoStreamType 方法,在接收端选择接收高质量或低质量的视频流。

注:

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

参数

参数名描述
enabled

是否启用双流模式:

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

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

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

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

返回值

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

所属接口类

enableDualStreamModeEx

在发送端启用或关闭不同质量层级的视频流。

C++
virtual int enableDualStreamModeEx(bool enabled, const SimulcastStreamConfig& streamConfig, const RtcConnection& connection) = 0;

废弃

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

不同质量层级的视频流由一对视频大流和视频小流组成:

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

启用该功能后,你可以调用 setRemoteVideoStreamType 方法,在订阅端选择接收高质量或低质量的视频流。

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

适用场景

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

参数

参数名描述
enabled

是否启用不同质量层级的视频流:

  • true:启用不同质量层级的视频流。
  • false:(默认)关闭不同质量层级的视频流。
streamConfig

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

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

connection

连接信息。详见 RtcConnection。

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

返回值

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

所属接口类

muteAllRemoteAudioStreams

停止或恢复接收所有远端音频流。

C++
virtual int muteAllRemoteAudioStreams(bool mute) = 0;

该方法用于停止或恢复接收所有通过 joinChannel 加入或将要加入频道的远端用户的音频流。该方法等效于 ChannelMediaOptions 中的 autoSubscribeAudio。

注: 请确保在加入频道后调用该方法。如果在加入频道后调用 muteAllRemoteAudioStreams(true),本地用户将停止接收频道中所有用户的音频流,包括在调用该方法后加入频道的用户。

参数

参数名描述
mute

是否停止接收所有远端音频流:

  • true:停止接收所有远端音频流。
  • false:恢复接收所有远端音频流。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

所属接口类

muteAllRemoteAudioStreamsEx

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

C++
virtual int muteAllRemoteAudioStreamsEx(bool mute, const RtcConnection& connection) = 0;

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

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

适用场景

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

参数

参数名描述
mute

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

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

连接信息。详见 RtcConnection。

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

返回值

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

所属接口类

muteAllRemoteVideoStreams

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

C++
virtual int muteAllRemoteVideoStreams(bool mute) = 0;

该方法对所有通过 joinChannel 加入或将要加入频道的远端用户生效,等效于 ChannelMediaOptions 中的 autoSubscribeVideo。请确保在加入频道后调用该方法。

注: 如果在加入频道后调用 muteAllRemoteVideoStreams(true),本地用户将停止接收频道中所有用户的视频流,包括在调用该方法后加入频道的用户。

参数

参数名描述
mute

是否停止接收所有远端视频流:

  • true:停止接收所有远端视频流。
  • false:恢复接收所有远端视频流。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

所属接口类

muteAllRemoteVideoStreamsEx

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

C++
virtual int muteAllRemoteVideoStreamsEx(bool mute, const RtcConnection& connection) = 0;

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

适用场景

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

参数

参数名描述
mute

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

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

连接信息。详见 RtcConnection。

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

返回值

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

所属接口类

muteLocalAudioStream

控制是否发布本地采集的音频流。

C++
virtual int muteLocalAudioStream(bool mute) = 0;

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

调用时机

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

相关回调

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

参数

参数名描述
mute

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

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

返回值

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

所属接口类

muteLocalAudioStreamEx

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

C++
virtual int muteLocalAudioStreamEx(bool mute, const RtcConnection& connection) = 0;

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

适用场景

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

相关回调

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

参数

参数名描述
mute

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

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

连接信息。详见 RtcConnection。

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

返回值

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

所属接口类

muteLocalVideoStream

控制是否发布本地采集的视频流。

C++
virtual int muteLocalVideoStream(bool mute) = 0;

该方法用于控制是否发布本地采集的视频流。如果你调用该方法停止发布本地视频流,视频采集设备仍然正常工作,不受影响。 相比通过将 enableLocalVideo 设为 false 来关闭本地视频采集并停止发布视频流,该方法响应更快。

调用时机

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

相关回调

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

参数

参数名描述
mute

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

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

返回值

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

所属接口类

muteLocalVideoStreamEx

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

C++
virtual int muteLocalVideoStreamEx(bool mute, const RtcConnection& connection) = 0;

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

适用场景

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

相关回调

调用该方法后,远端会触发 onUserMuteVideo 回调。

参数

参数名描述
mute

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

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

连接信息。详见 RtcConnection。

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

返回值

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

所属接口类

muteRemoteAudioStream

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

C++
virtual int muteRemoteAudioStream(uid_t uid, bool mute) = 0;

调用时机

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

相关回调

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

参数

参数名描述
uid

指定远端用户的用户 ID。

mute

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

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

返回值

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

所属接口类

muteRemoteAudioStreamEx

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

C++
virtual int muteRemoteAudioStreamEx(uid_t uid, bool mute, const RtcConnection& connection) = 0;

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

适用场景

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

参数

参数名描述
uid

指定用户的 ID。

mute

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

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

连接信息。详见 RtcConnection。

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

返回值

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

所属接口类

muteRemoteVideoStream

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

C++
virtual int muteRemoteVideoStream(uid_t uid, bool mute) = 0;

调用时机

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

相关回调

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

参数

参数名描述
uid

指定远端用户的用户 ID。

mute

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

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

返回值

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

所属接口类

muteRemoteVideoStreamEx

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

C++
virtual int muteRemoteVideoStreamEx(uid_t uid, bool mute, const RtcConnection& connection) = 0;

适用场景

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

调用时机

你可以在加入频道前或加入频道后调用该方法,用于停止或恢复接收指定远端用户的视频流。如果该用户离开频道,该设置将失效。

参数

参数名描述
uid

远端用户 ID。

mute

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

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

连接信息。详见 RtcConnection。

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

返回值

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

所属接口类

setDualStreamMode [1/2]

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

C++
virtual int setDualStreamMode(SIMULCAST_STREAM_MODE mode) = 0;

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

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

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

返回值

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

所属接口类

setDualStreamMode [2/2]

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

C++
virtual int setDualStreamMode(SIMULCAST_STREAM_MODE mode, const SimulcastStreamConfig& streamConfig) = 0;

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

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

与 setDualStreamMode 方法(参数为 SIMULCAST_STREAM_MODE mode)的区别在于:该方法还支持配置视频小流,SDK 会根据 streamConfig 中的配置发送视频流。

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

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

参数

参数名描述
mode

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

streamConfig

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

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

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

返回值

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

所属接口类

setDualStreamModeEx

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

C++
virtual int setDualStreamModeEx(SIMULCAST_STREAM_MODE mode, const SimulcastStreamConfig& streamConfig, const RtcConnection& connection) = 0;

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

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

streamConfig

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

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

connection

连接信息。详见 RtcConnection。

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

返回值

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

所属接口类

setRemoteDefaultVideoStreamType

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

C++
virtual int setRemoteDefaultVideoStreamType(VIDEO_STREAM_TYPE streamType) = 0;

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

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

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

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

调用时机

请在加入频道前调用此方法。

参数

参数名描述
streamType

默认订阅的视频流类型,详见 VIDEO_STREAM_TYPE。

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

返回值

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

所属接口类

setRemoteVideoStreamType

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

C++
virtual int setRemoteVideoStreamType(uid_t uid, VIDEO_STREAM_TYPE streamType) = 0;

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

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

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

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

调用时机

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

参数

参数名描述
uid

用户 ID。

streamType

视频流类型,详见 VIDEO_STREAM_TYPE。

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

返回值

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

所属接口类

setRemoteVideoStreamTypeEx

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

C++
virtual int setRemoteVideoStreamTypeEx(uid_t uid, VIDEO_STREAM_TYPE streamType, const RtcConnection& connection) = 0;

根据发送端的默认行为以及调用 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

视频流类型,详见 VIDEO_STREAM_TYPE。

connection

连接信息。详见 RtcConnection。

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

返回值

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

所属接口类

setRemoteVideoSubscriptionOptions

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

C++
virtual int setRemoteVideoSubscriptionOptions(uid_t uid, const VideoSubscriptionOptions &options) = 0;

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

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

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

参数

参数名描述
uid

远端用户的用户 ID。

options

视频订阅选项。详见 VideoSubscriptionOptions。

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

返回值

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

所属接口类

setRemoteVideoSubscriptionOptionsEx

设置是否订阅远端用户的视频流。

C++
virtual int setRemoteVideoSubscriptionOptionsEx(uid_t uid, const VideoSubscriptionOptions& options, const RtcConnection& connection) = 0;

当远端用户开启双流模式时,可以调用该方法设置是否订阅该远端用户的视频流及其具体选项。

适用场景

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

参数

参数名描述
uid

远端用户 ID。

options

视频订阅选项。详见 VideoSubscriptionOptions。

connection

连接信息。详见 RtcConnection。

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

返回值

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

所属接口类

setSubscribeAudioAllowlist

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

C++
virtual int setSubscribeAudioAllowlist(uid_t* uidList, int uidNumber) = 0;

注:

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

参数

参数名描述
uidList

你希望订阅的用户 ID 列表。如果你想订阅某个用户的音频流,请将该用户的用户 ID 添加到该列表中。如果你想将某个用户从白名单中移除,需要调用 setSubscribeAudioAllowlist 方法更新该列表,即仅保留你希望订阅的用户 ID。

uidNumber

用户 ID 列表中的用户数量。

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

返回值

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

所属接口类

setSubscribeAudioAllowlistEx

设置音频流订阅白名单。

C++
virtual int setSubscribeAudioAllowlistEx(uid_t* uidList, int uidNumber, const RtcConnection& connection) = 0;

注:

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

适用场景

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

参数

参数名描述
uidList

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

uidNumber

用户 ID 列表中的用户数量。

connection

连接信息。详见 RtcConnection。

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

返回值

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

所属接口类

setSubscribeAudioBlocklist

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

C++
virtual int setSubscribeAudioBlocklist(uid_t* uidList, int uidNumber) = 0;

注:

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

参数

参数名描述
uidList

不希望订阅其音频流的用户 ID 列表。要将某个用户从黑名单中移除,需要调用 setSubscribeAudioBlocklist 方法更新该列表,即仅在新的列表中保留不希望订阅的用户 ID。

uidNumber

用户 ID 列表中的用户数量。

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

返回值

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

所属接口类

setSubscribeAudioBlocklistEx

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

C++
virtual int setSubscribeAudioBlocklistEx(uid_t* uidList, int uidNumber, const RtcConnection& connection) = 0;

注:

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

适用场景

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

参数

参数名描述
uidList

不希望订阅其音频流的用户 ID 列表。如果你希望将某个用户从黑名单中移除,需要调用 setSubscribeAudioBlocklist 方法更新用户 ID 列表。

uidNumber

用户 ID 列表中的用户数量。

connection

连接信息。详见 RtcConnection。

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

返回值

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

所属接口类

setSubscribeVideoAllowlist

设置视频流订阅的允许列表。

C++
virtual int setSubscribeVideoAllowlist(uid_t* uidList, int uidNumber) = 0;

注:

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

参数

参数名描述
uidList

希望订阅的视频流用户的用户 ID 列表。如果你想移除某个用户,需要调用 setSubscribeVideoAllowlist 更新该列表,仅保留你希望订阅的用户 ID。

uidNumber

用户 ID 列表中的用户数量。

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

返回值

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

所属接口类

setSubscribeVideoAllowlistEx

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

C++
virtual int setSubscribeVideoAllowlistEx(uid_t* uidList, int uidNumber, const RtcConnection& connection) = 0;

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

注:

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

适用场景

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

参数

参数名描述
uidList

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

uidNumber

用户 ID 列表中的用户数量。

connection

连接信息。详见 RtcConnection。

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

返回值

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

所属接口类

setSubscribeVideoBlocklist

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

C++
virtual int setSubscribeVideoBlocklist(uid_t* uidList, int uidNumber) = 0;

注:

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

参数

参数名描述
uidList

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

uidNumber

用户 ID 列表中的用户数量。

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

返回值

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

所属接口类

setSubscribeVideoBlocklistEx

设置不订阅的视频流用户名单。

C++
virtual int setSubscribeVideoBlocklistEx(uid_t* uidList, int uidNumber, const RtcConnection& connection) = 0;

注:

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

适用场景

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

参数

参数名描述
uidList

不希望订阅其视频流的用户 ID 列表。若要将某个用户从阻止名单中移除,需要调用 setSubscribeVideoBlocklist 方法更新用户 ID 列表,即在新的列表中仅包含你仍希望阻止的视频流用户的用户 ID。

uidNumber

用户 ID 列表中的用户数量。

connection

连接信息。详见 RtcConnection。

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

返回值

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

所属接口类

onAudioPublishStateChanged

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

C++
virtual void onAudioPublishStateChanged(const char* channel, STREAM_PUBLISH_STATE oldState, STREAM_PUBLISH_STATE newState, int elapseSinceLastState)

参数

参数名描述
channel

频道名。

oldState

之前的音频发布状态,详见 STREAM_PUBLISH_STATE。

newState

当前的音频发布状态,详见 STREAM_PUBLISH_STATE。

elapseSinceLastState

从上一个状态切换到当前状态所经过的时间(毫秒)。

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

所属接口类

onAudioSubscribeStateChanged

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

C++
virtual void onAudioSubscribeStateChanged(const char* channel, uid_t uid, STREAM_SUBSCRIBE_STATE oldState, STREAM_SUBSCRIBE_STATE newState, int elapseSinceLastState)

参数

参数名描述
channel

频道名。

uid

远端用户 ID。

oldState

之前的订阅状态,详见 STREAM_SUBSCRIBE_STATE。

newState

当前的订阅状态,详见 STREAM_SUBSCRIBE_STATE。

elapseSinceLastState

从前一个状态到当前状态所经历的时间(毫秒)。

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

所属接口类

onVideoSubscribeStateChanged

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

C++
virtual void onVideoSubscribeStateChanged(const char* channel, uid_t uid, STREAM_SUBSCRIBE_STATE oldState, STREAM_SUBSCRIBE_STATE newState, int elapseSinceLastState)

参数

参数名描述
channel

频道名。

uid

远端用户 ID。

oldState

之前的视频订阅状态,详见 STREAM_SUBSCRIBE_STATE。

newState

当前的视频订阅状态,详见 STREAM_SUBSCRIBE_STATE。

elapseSinceLastState

从上一个状态变更到当前状态所经过的时间(毫秒)。

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

所属接口类