ChannelMediaOptions
频道媒体设置选项。
Dart
(explicitToJson: true, includeIfNull: false)
class ChannelMediaOptions {
const ChannelMediaOptions(
{this.publishCameraTrack,
this.publishSecondaryCameraTrack,
this.publishThirdCameraTrack,
this.publishFourthCameraTrack,
this.publishMicrophoneTrack,
this.publishScreenCaptureVideo,
this.publishScreenCaptureAudio,
this.publishScreenTrack,
this.publishSecondaryScreenTrack,
this.publishThirdScreenTrack,
this.publishFourthScreenTrack,
this.publishCustomAudioTrack,
this.publishCustomAudioTrackId,
this.publishCustomVideoTrack,
this.publishEncodedVideoTrack,
this.publishMediaPlayerAudioTrack,
this.publishMediaPlayerVideoTrack,
this.publishTranscodedVideoTrack,
this.autoSubscribeAudio,
this.autoSubscribeVideo,
this.enableAudioRecordingOrPlayout,
this.publishMediaPlayerId,
this.clientRoleType,
this.audienceLatencyLevel,
this.defaultVideoStreamType,
this.channelProfile,
this.audioDelayMs,
this.mediaPlayerAudioDelayMs,
this.token,
this.enableBuiltInMediaEncryption,
this.publishRhythmPlayerTrack,
this.isInteractiveAudience,
this.customVideoTrackId,
this.isAudioFilterable});
(name: 'publishCameraTrack')
final bool? publishCameraTrack;
(name: 'publishSecondaryCameraTrack')
final bool? publishSecondaryCameraTrack;
(name: 'publishThirdCameraTrack')
final bool? publishThirdCameraTrack;
(name: 'publishFourthCameraTrack')
final bool? publishFourthCameraTrack;
(name: 'publishMicrophoneTrack')
final bool? publishMicrophoneTrack;
(name: 'publishScreenCaptureVideo')
final bool? publishScreenCaptureVideo;
(name: 'publishScreenCaptureAudio')
final bool? publishScreenCaptureAudio;
(name: 'publishScreenTrack')
final bool? publishScreenTrack;
(name: 'publishSecondaryScreenTrack')
final bool? publishSecondaryScreenTrack;
(name: 'publishThirdScreenTrack')
final bool? publishThirdScreenTrack;
(name: 'publishFourthScreenTrack')
final bool? publishFourthScreenTrack;
(name: 'publishCustomAudioTrack')
final bool? publishCustomAudioTrack;
(name: 'publishCustomAudioTrackId')
final int? publishCustomAudioTrackId;
(name: 'publishCustomVideoTrack')
final bool? publishCustomVideoTrack;
(name: 'publishEncodedVideoTrack')
final bool? publishEncodedVideoTrack;
(name: 'publishMediaPlayerAudioTrack')
final bool? publishMediaPlayerAudioTrack;
(name: 'publishMediaPlayerVideoTrack')
final bool? publishMediaPlayerVideoTrack;
(name: 'publishTranscodedVideoTrack')
final bool? publishTranscodedVideoTrack;
(name: 'autoSubscribeAudio')
final bool? autoSubscribeAudio;
(name: 'autoSubscribeVideo')
final bool? autoSubscribeVideo;
(name: 'enableAudioRecordingOrPlayout')
final bool? enableAudioRecordingOrPlayout;
(name: 'publishMediaPlayerId')
final int? publishMediaPlayerId;
(name: 'clientRoleType')
final ClientRoleType? clientRoleType;
(name: 'audienceLatencyLevel')
final AudienceLatencyLevelType? audienceLatencyLevel;
(name: 'defaultVideoStreamType')
final VideoStreamType? defaultVideoStreamType;
(name: 'channelProfile')
final ChannelProfileType? channelProfile;
(name: 'audioDelayMs')
final int? audioDelayMs;
(name: 'mediaPlayerAudioDelayMs')
final int? mediaPlayerAudioDelayMs;
(name: 'token')
final String? token;
(name: 'enableBuiltInMediaEncryption')
final bool? enableBuiltInMediaEncryption;
(name: 'publishRhythmPlayerTrack')
final bool? publishRhythmPlayerTrack;
(name: 'isInteractiveAudience')
final bool? isInteractiveAudience;
(name: 'customVideoTrackId')
final int? customVideoTrackId;
(name: 'isAudioFilterable')
final bool? isAudioFilterable;
factory ChannelMediaOptions.fromJson(Map<String, dynamic> json) =>
_$ChannelMediaOptionsFromJson(json);
Map<String, dynamic> toJson() => _$ChannelMediaOptionsToJson(this);
}
SDK 支持在同一时间、同一 RtcConnection 中发布多路音频流、一路视频流。例如,publishMicrophoneTrack、publishCustomAudioTrack 和 publishMediaPlayerAudioTrack 可以同时为
true
; publishCameraTrack、publishScreenCaptureVideo、publishScreenTrack、publishCustomVideoTrack 或 publishEncodedVideoTrack 之中同一时间只能有一个为 true
。 注意
建议你根据业务场景自行设置成员参数值,否则 SDK 会自动对成员参数进行赋值。
publishCameraTrack
设置是否发布摄像头采集的视频:
true
:发布摄像头采集的视频。false
:不发布摄像头采集的视频。
publishSecondaryCameraTrack
设置是否发布第二个摄像头采集的视频:
true
:发布第二个摄像头采集的视频。false
:不发布第二个摄像头采集的视频。
publishMicrophoneTrack
设置是否发布麦克风采集到的音频:
true
:发布麦克风采集到的音频。false
:不发布麦克风采集到的音频。
信息
- 自 v6.0.0 起,该参数名称由 publishAudioTrack 改为 publishMicrophoneTrack。
- 如果你将该参数设为
false
,SDK 也会关闭麦克风采集。 - 如果你想要发布麦克风采集到的音频流,请确保 enableAudioRecordingOrPlayout 设为
true
。
publishThirdCameraTrack
设置是否发布第三个摄像头采集的视频:
true
:发布第三个摄像头采集的视频。false
:不发布第三个摄像头采集的视频。
注意
该参数仅适用于 Android、Windows 和 macOS 平台。
publishFourthCameraTrack
设置是否发布第四个摄像头采集的视频:
true
:发布第四个摄像头采集的视频。false
:不发布第四个摄像头采集的视频。
注意
该参数仅适用于 Android、Windows 和 macOS 平台。
publishScreenTrack
设置是否发布屏幕采集的视频:
true
:发布屏幕采集到的视频。false
:不发布屏幕采集到的视频。
注意
该参数仅适用于 Windows 和 macOS 平台。
publishScreenCaptureVideo
设置是否发布屏幕采集的视频:
true
:发布屏幕采集到的视频。false
:不发布屏幕采集到的视频。
注意
该参数仅适用于 Android 和 iOS 平台。
publishScreenCaptureAudio
设置是否发布屏幕采集的音频:
true
:发布屏幕采集到的音频。false
:不发布屏幕采集到的音频。
注意
该参数仅适用于 Android 和 iOS 平台。
publishSecondaryScreenTrack
设置是否发布第二个屏幕采集的视频:
true
:发布第二个屏幕采集到的视频。false
:不发布第二个屏幕采集到的视频。
publishThirdScreenTrack
设置是否发布第三个屏幕采集的视频:
true
:发布第三个屏幕采集到的视频。false
:不发布第三个屏幕采集到的视频。
注意
该参数仅适用于 Windows 和 macOS 平台。
publishFourthScreenTrack
设置是否发布第四个屏幕采集的视频:
true
:发布第四个屏幕采集到的视频。false
:不发布第四个屏幕采集到的视频。
注意
该参数仅适用于 Windows 和 macOS 平台。
publishTranscodedVideoTrack
设置是否发布本地的转码视频:
true
:发布本地的转码视频。false
:不发布本地的转码视频。
publishCustomAudioTrack
设置是否发布自定义采集的音频:
true
:发布自定义采集到的音频。false
:不发布自定义采集到的音频。
publishCustomAudioTrackId
待发布的自定义音频轨道的 ID。默认值为 0。
如果你已在 setExternalAudioSource 中设置了 sourceNumber 大于 1,SDK 会创建对应数量的自采集音频轨道,并从 0 开始为每一个音频轨道分配一个 ID。
publishCustomVideoTrack
设置是否发布自定义采集的视频:
true
:发布自定义采集的视频。false
:不发布自定义采集到的视频。
publishEncodedVideoTrack
设置是否发布编码后的视频:
true
:发布编码后的视频 。false
:不发布编码后的视频。
publishMediaPlayerAudioTrack
设置是否发布媒体播放器的音频:
true
:发布媒体播放器的音频。false
:不发布媒体播放器的音频。
publishMediaPlayerVideoTrack
设置是否发布媒体播放器的视频:
true
:发布媒体播放器的视频。false
:不发布媒体播放器的视频。
autoSubscribeAudio
设置是否自动订阅所有音频流:
true
:自动订阅所有音频流。false
:不自动订阅任何音频流。
autoSubscribeVideo
设置是否自动订阅所有视频流:
true
:自动订阅所有视频流。false
:不自动订阅任何视频流。
enableAudioRecordingOrPlayout
设置是否开启音频录制或播放:
true
:开启音频录制或播放。-
false
:不开启音频录制或播放。
信息
如果那你需要发布麦克风采集的音频流,请确保该参数设为
true
。publishMediaPlayerId
待发布的媒体播放器的 ID。默认值为 0。
clientRoleType
用户角色。详见 ClientRoleType。
audienceLatencyLevel
观众端延时级别。详见 AudienceLatencyLevelType。
defaultVideoStreamType
默认订阅的视频流类型: VideoStreamType。
channelProfile
频道使用场景。详见 ChannelProfileType。
audioDelayMs
发送音频帧的延时(毫秒)。你可以通过该参数来设置需要发送的音频帧的延时,以确保音画同步。
如果要关闭延时,将此参数值设置为 0。
token
(可选)在服务端生成的用于鉴权的动态密钥。详见使用 Token 鉴权。
注意
- 该参数仅在调用 updateChannelMediaOptions 或 updateChannelMediaOptionsEx 时生效。
- 请确保用于生成 token 的 App ID、频道名和用户名和 initialize 方法初始化引擎时用的 App ID,以及 joinChannel 或 joinChannelEx 方法加入频道时设置的频道名和用户名是一致的。
publishRhythmPlayerTrack
设置是否发布虚拟节拍器声音至远端:
true
:发布。本地用户和远端用户都能听到节拍器。false
:不发布。只有本地用户能听到节拍器。
isInteractiveAudience
是否开启互动观众模式:
true
:开启互动观众模式。成功开启后,本地用户作为互动观众,收到低延时和流畅的远端用户视频。false
:不开启互动观众模式。本地用户作为普通观众,收到默认设置的远端用户视频。
注意
- 该参数用于实现跨直播间连麦场景。连麦主播需要调用 joinChannelEx 方法,以观众身份加入对方的直播间,并将 isInteractiveAudience 设置为
true
。 - 仅当用户角色为 clientRoleAudience 时,该参数生效。
customVideoTrackId
调用 createCustomVideoTrack 方法返回的视频轨道 ID。默认值为 0。
isAudioFilterable
设置是否让当前音频流根据音强算法参与选流。
true
:参与音强选流。如未开启音强选流功能,该参数不会生效。false
:不参与音强选流。
注意
如需启用该功能,请联系 联系销售。