类型定义
本页列出 Windows API 所有的类型定义。
AgoraEngineType
IAgoraRtcEngine 的进程类型。
枚举值
- MainProcess
- 使用主进程创建 IAgoraRtcEngine,用于发送摄像头视频流。
- SubProcess
- 使用子进程创建 IAgoraRtcEngine,用于发送桌面共享视频流。
AREA_CODE
访问区域,即 SDK 连接的服务器所在的区域。
枚举值
- AREA_CODE_CN
- 中国大陆。
- AREA_CODE_NA
- 北美区域。
- AREA_CODE_EU
- 欧洲区域。
- AREA_CODE_AS
- 除中国以外的亚洲区域。
- AREA_CODE_JP
- 日本。
- AREA_CODE_IN
- 印度。
- AREA_CODE_GLOB
- 全球。
AUDIENCE_LATENCY_LEVEL_TYPE
直播频道中观众的延时级别。该枚举仅在用户角色设为 CLIENT_ROLE_AUDIENCE 时才生效。
枚举值
- AUDIENCE_LATENCY_LEVEL_LOW_LATENCY
- 1: 低延时。
- AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY
- 2:(默认)超低延时。
AUDIO_CODEC_PROFILE_TYPE
推流输出音频的编解码规格,默认为 LC-AAC。
枚举值
- AUDIO_CODEC_PROFILE_LC_AAC
- 0: (默认)LC-AAC 规格。
- AUDIO_CODEC_PROFILE_HE_AAC
- 1: HE-AAC 规格。
- AUDIO_CODEC_PROFILE_HE_AAC_V2
- 2: HE-AAC v2 规格。
AudioDeviceTestVolumeType
音量类型。
枚举值
- AudioTestRecordingVolume
- 0: 音频采集设备的音量。
- AudioTestPlaybackVolume
- 1: 音频播放的音量。
AUDIO_EFFECT_PRESET
预设的音效选项。
为获取更好的人声效果,声网建议在使用以下预设音效前将 SetAudioProfile 的 profile 参数设置为 AUDIO_PROFILE_MUSIC_HIGH_QUALITY 或 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO:
- ROOM_ACOUSTICS_KTV
- ROOM_ACOUSTICS_VOCAL_CONCERT
- ROOM_ACOUSTICS_STUDIO
- ROOM_ACOUSTICS_PHONOGRAPH
- ROOM_ACOUSTICS_SPACIAL
- ROOM_ACOUSTICS_ETHEREAL
- VOICE_CHANGER_EFFECT_UNCLE
- VOICE_CHANGER_EFFECT_OLDMAN
- VOICE_CHANGER_EFFECT_BOY
- VOICE_CHANGER_EFFECT_SISTER
- VOICE_CHANGER_EFFECT_GIRL
- VOICE_CHANGER_EFFECT_PIGKING
- VOICE_CHANGER_EFFECT_HULK
- PITCH_CORRECTION
枚举值
- AUDIO_EFFECT_OFF
- 原声,即关闭人声音效。
- ROOM_ACOUSTICS_KTV
- KTV。
- ROOM_ACOUSTICS_VOCAL_CONCERT
- 演唱会。
- ROOM_ACOUSTICS_STUDIO
- 录音棚。
- ROOM_ACOUSTICS_PHONOGRAPH
- 留声机。
- ROOM_ACOUSTICS_VIRTUAL_STEREO
-
虚拟立体声,即 SDK 将单声道的音频渲染出双声道的音效。
注意: 使用该预设音效前,你需要将 SetAudioProfile 的 profile 参数设置为 AUDIO_PROFILE_MUSIC_HIGH_QUALITY 或 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO,否则该预设音效的设置无效。 - ROOM_ACOUSTICS_SPACIAL
- 空旷。
- ROOM_ACOUSTICS_ETHEREAL
- 空灵。
- ROOM_ACOUSTICS_3D_VOICE
-
3D 人声,即 SDK 将音频渲染出在用户周围环绕的效果。环绕周期默认为 10 秒。设置该音效后,你还可以调用 SetAudioEffectParameters 修改环绕周期。
注意:- 使用该预设音效前,你需要将 SetAudioProfile 的 profile 参数设置为 AUDIO_PROFILE_MUSIC_STANDARD_STEREO 或 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO,否则该预设音效的设置无效。
- 启用 3D 人声后,用户需要使用支持双声道的音频播放设备才能听到预期效果。
- VOICE_CHANGER_EFFECT_UNCLE
-
大叔。
注意: 建议用于处理男声,否则无法达到预期效果。 - VOICE_CHANGER_EFFECT_OLDMAN
-
老年男性。
注意: 建议用于处理男声,否则无法达到预期效果。 - VOICE_CHANGER_EFFECT_BOY
-
男孩。
注意: 建议用于处理男声,否则无法达到预期效果。 - VOICE_CHANGER_EFFECT_SISTER
-
少女。
注意: 建议用于处理女声,否则无法达到预期效果。 - VOICE_CHANGER_EFFECT_GIRL
-
女孩。
注意: 建议用于处理女声,否则无法达到预期效果。 - VOICE_CHANGER_EFFECT_PIGKING
- 猪八戒。
- VOICE_CHANGER_EFFECT_HULK
- 绿巨人。
- STYLE_TRANSFORMATION_RNB
-
R&B。
注意: 使用该预设音效前,你需要将 SetAudioProfile 的 profile 参数设置为 AUDIO_PROFILE_MUSIC_HIGH_QUALITY 或 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO,否则该预设音效的设置无效。 - STYLE_TRANSFORMATION_POPULAR
-
流行。
注意: 使用该预设音效前,你需要将 SetAudioProfile 的 profile 参数设置为 AUDIO_PROFILE_MUSIC_HIGH_QUALITY 或 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO,否则该预设音效的设置无效。 - PITCH_CORRECTION
- 电音,即 SDK 以主音音高为 C 的自然大调为基础修正音频的实际音高。设置该音效后,你还可以调用 SetAudioEffectParameters 调整修音的基础调式和主音音高。
AUDIO_EQUALIZATION_BAND_FREQUENCY
语音音效均衡波段的中心频率。
枚举值
- AUDIO_EQUALIZATION_BAND_31
- 0: 31 Hz
- AUDIO_EQUALIZATION_BAND_62
- 1: 62 Hz
- AUDIO_EQUALIZATION_BAND_125
- 2: 125 Hz
- AUDIO_EQUALIZATION_BAND_250
- 3: 250 Hz
- AUDIO_EQUALIZATION_BAND_500
- 4: 500 Hz
- AUDIO_EQUALIZATION_BAND_1K
- 5: 1 kHz
- AUDIO_EQUALIZATION_BAND_2K
- 6: 2 kHz
- AUDIO_EQUALIZATION_BAND_4K
- 7: 4 kHz
- AUDIO_EQUALIZATION_BAND_8K
- 8: 8 kHz
- AUDIO_EQUALIZATION_BAND_16K
- 9: 16 kHz
AUDIO_FILE_INFO_ERROR
音频文件信息的获取状态。在 OnRequestAudioFileInfo 中报告。
枚举值
- AUDIO_FILE_INFO_ERROR_OK
- 0: 获取成功。
- AUDIO_FILE_INFO_ERROR_FAILURE
- 1: 获取
AUDIO_FRAME_TYPE
音频帧类型。
枚举值
- FRAME_TYPE_PCM16
- 0: PCM 16
AUDIO_MIXING_ERROR_TYPE
播放音乐文件时可能出现的错误。
- 弃用:
- 从 v3.4.0 起废弃。
枚举值
- AUDIO_MIXING_ERROR_CAN_NOT_OPEN
- 音乐文件打开出错。
- AUDIO_MIXING_ERROR_TOO_FREQUENT_CALL
- 音乐文件打开太频繁。
- AUDIO_MIXING_ERROR_INTERRUPTED_EOF
- 音乐文件播放中断。
- AUDIO_MIXING_ERROR_OK
- 音乐文件正常播放。
AUDIO_MIXING_REASON_TYPE
音乐文件播放状态改变的原因。在 OnAudioMixingStateChanged 回调中报告。
枚举值
- AUDIO_MIXING_REASON_CAN_NOT_OPEN
- 701: 音乐文件打开出错。例如,本地音乐文件不存在、文件格式不支持或无法访问在线音乐文件 URL。
- AUDIO_MIXING_REASON_TOO_FREQUENT_CALL
- 702: 音乐文件打开太频繁。如需多次调用 startAudioMixing,请确保调用间隔大于 500 ms。
- AAUDIO_MIXING_REASON_INTERRUPTED_EOF
- 703: 音乐文件播放中断。
- AUDIO_MIXING_REASON_STARTED_BY_USER
- 720: 成功调用 startAudioMixing 播放音乐文件。
- AUDIO_MIXING_REASON_ONE_LOOP_COMPLETED
- 721: 音乐文件完成一次循环播放。
- AUDIO_MIXING_REASON_START_NEW_LOOP
- 722: 音乐文件开始新的一次循环播放。
- AUDIO_MIXING_REASON_ALL_LOOPS_COMPLETED
- 723: 音乐文件完成所有循环播放。
- AUDIO_MIXING_REASON_STOPPED_BY_USER
- 724: 成功调用 StopAudioMixing 停止播放音乐文件。
- AUDIO_MIXING_REASON_PAUSED_BY_USER
- 725: 成功调用 PauseAudioMixing 暂停播放音乐文件。
- AUDIO_MIXING_REASON_RESUMED_BY_USER
- 726: 成功调用 ResumeAudioMixing 恢复播放音乐文件。
AUDIO_MIXING_STATE_TYPE
音乐文件播放状态。
枚举值
- AUDIO_MIXING_STATE_PLAYING
-
710: 音乐文件正常播放。
该状态可能由于以下原因导致:- AUDIO_MIXING_REASON_STARTED_BY_USER(710)
- AUDIO_MIXING_REASON_ONE_LOOP_COMPLETED(720)
- AUDIO_MIXING_REASON_START_NEW_LOOP(722)
- AUDIO_MIXING_REASON_RESUMED_BY_USER(726)
- AUDIO_MIXING_STATE_PAUSED
-
711: 音乐文件暂停播放。
该状态由 AUDIO_MIXING_REASON_PAUSED_BY_USER(725) 原因导致。
- AUDIO_MIXING_STATE_STOPPED
-
713: 音乐文件停止播放。
该状态可能由以下原因导致:- AUDIO_MIXING_REASON_ALL_LOOPS_COMPLETED(723)
- AUDIO_MIXING_REASON_STOPPED_BY_USER(724)
- AUDIO_MIXING_STATE_FAILED
-
714: 音乐文件播放出错。
该状态可能由以下原因导致:- AUDIO_MIXING_REASON_CAN_NOT_OPEN(701)
- AUDIO_MIXING_REASON_TOO_FREQUENT_CALL(702)
- AAUDIO_MIXING_REASON_INTERRUPTED_EOF(703)
AUDIO_PROFILE_TYPE
音频编码属性。
枚举值
- AUDIO_PROFILE_DEFAULT
-
0: 默认值。
- 直播场景下:48 kHz 采样率,音乐编码,单声道,编码码率最大值为 64 Kbps。
- 通信场景下:
- Windows 平台:16 kHz 采样率,语音编码,单声道,编码码率最大值为 16 Kbps。
- Android、macOS、iOS 平台:32 kHz 采样率,语音编码,单声道,编码码率最大值为 18 Kbps。
- AUDIO_PROFILE_SPEECH_STANDARD
- 1: 指定 32 kHz 采样率,语音编码,单声道,编码码率最大值为 18 Kbps。
- AUDIO_PROFILE_MUSIC_STANDARD
- 2: 指定 48 kHz 采样率,音乐编码,单声道,编码码率最大值为 64 Kbps。
- AUDIO_PROFILE_MUSIC_STANDARD_STEREO
- 3: 指定 48 kHz 采样率,音乐编码,双声道,编码码率最大值为 80 Kbps。
- AUDIO_PROFILE_MUSIC_HIGH_QUALITY
- 4: 指定 48 kHz 采样率,音乐编码,单声道,编码码率最大值为 96 Kbps。
- AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO
- 5: 指定 48 kHz 采样率,音乐编码,双声道,编码码率最大值为 128 Kbps。
- AUDIO_PROFILE_IOT
-
6: 指定 16 kHz 采样率,语音编码,单声道,应用回声消除算法 AES。
- AUDIO_PROFILE_NUM
- 枚举值边界。
AUDIO_RECORDING_QUALITY_TYPE
录音音质。
枚举值
- AUDIO_RECORDING_QUALITY_LOW
- 0: 低音质。采样率为 32 kHz,录制 10 分钟的文件大小为 1.2 M 左右。
- AUDIO_RECORDING_QUALITY_MEDIUM
- 1: 中音质。采样率为 32 kHz,录制 10 分钟的文件大小为 2 M 左右。
- AUDIO_RECORDING_QUALITY_HIGH
- 2: 高音质。采样率为 32 kHz,录制 10 分钟的文件大小为 3.75 M 左右。
- AUDIO_RECORDING_QUALITY_ULTRA_HIGH
- 3: 超高音质。采样率为 32 KHz,录制 10 分钟的文件大小约为 7.5 M 左右。
AUDIO_REVERB_PRESET
预设的语音混响效果。
- 弃用:
- 自 v3.2.0 废弃。
枚举值
- AUDIO_REVERB_OFF
- 原声,即关闭本地语音混响。
- AUDIO_REVERB_FX_KTV
- KTV(增强版)。
- AUDIO_REVERB_FX_VOCAL_CONCERT
- 演唱会(增强版)。
- AUDIO_REVERB_FX_UNCLE
- 大叔。
- AUDIO_REVERB_FX_SISTER
- 小姐姐。
- AUDIO_REVERB_FX_STUDIO
- 录音棚(增强版)。
- AUDIO_REVERB_FX_POPULAR
- 流行(增强版)。
- AUDIO_REVERB_FX_RNB
- R&B(增强版)。
- AUDIO_REVERB_FX_PHONOGRAPH
- 留声机。
- AUDIO_REVERB_POPULAR
- 流行。
- AUDIO_REVERB_RNB
- R&B。
- AUDIO_REVERB_ROCK
- 摇滚。
- AUDIO_REVERB_HIPHOP
- 嘻哈。
- AUDIO_REVERB_VOCAL_CONCERT
- 演唱会。
- AUDIO_REVERB_KTV
- KTV。
- AUDIO_REVERB_STUDIO
- 录音棚。
- AUDIO_VIRTUAL_STEREO
- 虚拟立体声。虚拟立体声是指将单声道的音轨渲染出立体声的效果。
- AUDIO_ELECTRONIC_VOICE
- 电音,即 SDK 以主音音高为 C 的自然大调为基础修正音频的实际音高。
- AUDIO_THREEDIM_VOICE
- 3D 人声,即 SDK 将音频渲染出在用户周围环绕的效果。
AUDIO_REVERB_TYPE
音频混响类型。
枚举值
- AUDIO_REVERB_DRY_LEVEL
- 0: 原始声音强度,即所谓的 dry signal,取值范围 [-20,10],单位为 dB。
- AUDIO_REVERB_WET_LEVEL
- 1: 早期反射信号强度,即所谓的 wet signal,取值范围 [-20,10],单位为 dB。
- AUDIO_REVERB_ROOM_SIZE
- 2: 所需混响效果的房间尺寸,一般房间越大,混响越强,取值范围 [0,100],单位为 dB。
- AUDIO_REVERB_WET_DELAY
- 3: Wet signal 的初始延迟长度,取值范围 [0,200],单位为毫秒。
- AUDIO_REVERB_STRENGTH
- 4: 混响持续的强度,取值范围为 [0,100]。
AUDIO_SAMPLE_RATE_TYPE
推流输出音频的采样率。
枚举值
- AUDIO_SAMPLE_RATE_32000
- 32000: 32 kHz
- AUDIO_SAMPLE_RATE_44100
- 44100: 44.1 kHz
- AUDIO_SAMPLE_RATE_48000
- 48000: (默认)48 kHz
AUDIO_SCENARIO_TYPE
设置音频应用场景。
枚举值
- AUDIO_SCENARIO_DEFAULT
- 0: 默认的音频应用场景。
- AUDIO_SCENARIO_CHATROOM_ENTERTAINMENT
- 1: 娱乐场景,适用于用户需要频繁上下麦的场景。
- AUDIO_SCENARIO_EDUCATION
- 2: 教育场景,适用于需要高流畅度和稳定性的场景。
- AUDIO_SCENARIO_GAME_STREAMING
- 3: 高音质语聊房场景,适用于音乐为主的场景。
- AUDIO_SCENARIO_SHOWROOM
- 4: 秀场场景,适用于需要高音质的单主播场景。
- AUDIO_SCENARIO_CHATROOM_GAMING
- 5: 游戏开黑场景,适用于只有人声的场景。
- AUDIO_SCENARIO_IOT
- 6: IoT(物联网)场景,适用于使用低功耗 IoT 设备的场景。
- AUDIO_SCENARIO_MEETING
- 8: 会议场景,适用于人声为主的多人会议。
- AUDIO_SCENARIO_NUM
- 枚举的数量。
BACKGROUND_SOURCE_TYPE
自定义的背景图类型。
枚举值
- BACKGROUND_COLOR
- 1:(默认)背景图为纯色。
- BACKGROUND_IMG
- 背景图为 PNG、JPG 格式的图片。
- BACKGROUND_BLUR
- 将虚化处理后的背景作为背景图。
BACKGROUND_BLUR_DEGREE
自定义背景图的虚化程度。
枚举值
- BLUR_DEGREE_LOW
- 1: 自定义背景图的虚化程度为低。用户差不多能看清背景。
- BLUR_DEGREE_MEDIUM
- 自定义背景图的虚化程度为中。用户较难看清背景。
- BLUR_DEGREE_HIGH
- (默认)自定义背景图的虚化程度为高。用户很难看清背景。
CAMERA_DIRECTION
摄像头方向。
枚举值
- CAMERA_REAR
- 后置摄像头。
- CAMERA_FRONT
- 前置摄像头。
CAPTURE_BRIGHTNESS_LEVEL_TYPE
本地采集的画质亮度级别。
- 自从
- v3.3.0
枚举值
- CAPTURE_BRIGHTNESS_LEVEL_INVALID
- -1: SDK 未检测出本地采集的画质亮度级别。请等待几秒,通过下一次回调的 captureBrightnessLevel 获取亮度级别。
- CAPTURE_BRIGHTNESS_LEVEL_NORMAL
- 0: 本地采集的画质亮度正常。
- CAPTURE_BRIGHTNESS_LEVEL_BRIGHT
- 1: 本地采集的画质亮度偏亮。
- CAPTURE_BRIGHTNESS_LEVEL_DARK
- 2: 本地采集的画质亮度偏暗。
CAPTURER_OUTPUT_PREFERENCE
摄像头采集偏好。
枚举值
- CAPTURER_OUTPUT_PREFERENCE_AUTO
- 0:(默认)自动调整采集参数。SDK 根据实际的采集设备性能及网络情况,选择合适的摄像头输出参数,在设备性能及视频预览质量之间,维持平衡。
- CAPTURER_OUTPUT_PREFERENCE_PERFORMANCE
- 1: 优先保证设备性能。SDK 根据用户在 SetVideoEncoderConfiguration 中设置编码器的分辨率和帧率,选择最接近的摄像头输出参数,从而保证设备性能。在这种情况下,预览质量接近于编码器的输出质量。
- CAPTURER_OUTPUT_PREFERENCE_PREVIEW
- 2: 优先保证视频预览质量。SDK 选择较高的摄像头输出参数,从而提高预览视频的质量。在这种情况下,会消耗更多的 CPU 及内存做视频前处理。
- CAPTURER_OUTPUT_PREFERENCE_MANUAL
-
- 自从
- v3.3.0
3: 允许用户设置本地摄像头采集的视频宽高。
CHANNEL_MEDIA_RELAY_ERROR
跨频道媒体流转发出错的错误码。
枚举值
- RELAY_OK
- 0: 一切正常。
- RELAY_ERROR_SERVER_ERROR_RESPONSE
- 1: 服务器回应出错。
- RELAY_ERROR_SERVER_NO_RESPONSE
-
2: 服务器无回应。
你可以调用 LeaveChannel 方法离开频道。
该错误也可能是由于当前的 App ID 未开启连麦鉴权导致的。你可以提交工单申请开通连麦鉴权服务。
- RELAY_ERROR_NO_RESOURCE_AVAILABLE
- 3: SDK 无法获取服务,可能是因为服务器资源有限导致。
- RELAY_ERROR_FAILED_JOIN_SRC
- 4: 发起跨频道转发媒体流请求失败。
- RELAY_ERROR_FAILED_JOIN_DEST
- 5: 接受跨频道转发媒体流请求失败。
- RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC
- 6: 服务器接收跨频道转发媒体流失败。
- RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST
- 7: 服务器发送跨频道转发媒体流失败。
- RELAY_ERROR_SERVER_CONNECTION_LOST
- 8: SDK 因网络质量不佳与服务器断开。你可以调用 LeaveChannel 方法离开当前频道。
- RELAY_ERROR_INTERNAL_ERROR
- 9: 服务器内部出错。
- RELAY_ERROR_SRC_TOKEN_EXPIRED
- 10: 源频道的 Token 已过期。
- RELAY_ERROR_DEST_TOKEN_EXPIRED
- 11: 目标频道的 Token 已过期。
CHANNEL_MEDIA_RELAY_EVENT
跨频道媒体流转发事件码。
枚举值
- RELAY_EVENT_NETWORK_DISCONNECTED
- 0: 网络中断导致用户与服务器连接断开。
- RELAY_EVENT_NETWORK_CONNECTED
- 1: 用户与服务器建立连接。
- RELAY_EVENT_PACKET_JOINED_SRC_CHANNEL
- 2: 用户已加入源频道。
- RELAY_EVENT_PACKET_JOINED_DEST_CHANNEL
- 3: 用户已加入目标频道。
- RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL
- 4: SDK 开始向目标频道发送数据包。
- RELAY_EVENT_PACKET_RECEIVED_VIDEO_FROM_SRC
- 5: 服务器收到了频道发送的视频流。
- RELAY_EVENT_PACKET_RECEIVED_AUDIO_FROM_SRC
- 6: 服务器收到了频道发送的音频流。
- RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL
- 7: 目标频道已更新。
- RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_REFUSED
- 8: 内部原因导致目标频道更新失败。
- RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE
- 9: 目标频道未发生改变,即目标频道更新失败。
- RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_IS_NULL
- 10: 目标频道名为
NULL
。 - RELAY_EVENT_VIDEO_PROFILE_UPDATE
- 11: 视频属性已发送至服务器。
- RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS
- 12: 暂停向目标频道转发媒体流成功。
- RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_FAILED
- 13: 暂停向目标频道转发媒体流失败。
- RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS
- 14: 恢复向目标频道转发媒体流成功。
- RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_FAILED
- 15: 恢复向目标频道转发媒体流失败。
CHANNEL_MEDIA_RELAY_STATE
跨频道媒体流转发状态码。
枚举值
- RELAY_STATE_IDLE
- 0: 初始状态。在成功调用 StopChannelMediaRelay 停止跨频道媒体流转发后, OnChannelMediaRelayStateChanged 会回调该状态。
- RELAY_STATE_CONNECTING
- 1: SDK 尝试跨频道。
- RELAY_STATE_RUNNING
- 2: 源频道主播成功加入目标频道。
- RELAY_STATE_FAILURE
- 3: 发生异常,详见 OnChannelMediaRelayStateChanged 的 code 参数提示的错误信息。
CHANNEL_PROFILE_TYPE
频道使用场景。
枚举值
- CHANNEL_PROFILE_COMMUNICATION
- 0: (默认)通信场景。该场景下,频道内所有用户都可以发布和接收音、视频流。适用于语音通话、视频群聊等应用场景。
- CHANNEL_PROFILE_LIVE_BROADCASTING
- 1: 直播场景。该场景有主播和观众两种用户角色,可以通过 SetClientRole [2/2] 设置。主播可以发布和接收音视频流,观众直接接收流。适用于语聊房、视频直播、互动大班课等应用场景。
- CHANNEL_PROFILE_GAME
- 2: 游戏语音场景。声网不推荐使用该场景。
CLIENT_ROLE_TYPE
直播场景里的用户角色。
枚举值
- CLIENT_ROLE_BROADCASTER
- 1: 主播。主播可以发流也可以收流。
- CLIENT_ROLE_AUDIENCE
- 2:(默认)观众。观众只能收流不能发流。
CLOUD_PROXY_TYPE
云代理类型。
枚举值
- NONE_PROXY
- 0:自动模式。在该模式下,SDK 优先连接 SD-RTN™,如果连接失败,自动切换到 TLS 443。自 v3.6.2 起,SDK 默认开启该模式。
- UDP_PROXY
- 1:UDP 协议的云代理,即 Force UDP 云代理模式。在该模式下,SDK 始终通过 UDP 协议传输数据。
- TCP_PROXY
- 2:TCP(加密)协议的云代理,即 Force TCP 云代理模式。在该模式下,SDK 始终通过 TLS 443 传输数据。
PROXY_TYPE
代理类型。
枚举值
- NONE_PROXY_TYPE
- 0: 预留参数,暂不支持。
- UDP_PROXY_TYPE
- 1: UDP 协议的云代理,即 Force UDP 云代理模式。在该模式下,SDK 始终通过 UDP 协议传输数据。
- TCP_PROXY_TYPE
- 2: TCP(加密)协议的云代理,即 Force TCP 云代理模式。在该模式下,SDK 始终通过 TLS 443 传输数据。
- LOCAL_PROXY_TYPE
- 3: 预留参数,暂不支持。
- TCP_PROXY_AUTO_FALLBACK_TYPE
- 4: 自动模式。在该模式下,SDK 优先连接 SD-RTN™,如果连接失败,自动切换为 TLS 443。
CONNECTION_CHANGED_REASON_TYPE
网络连接状态发生变化的原因。
枚举值
- CONNECTION_CHANGED_CONNECTING
- 0: 建立网络连接中。
- CONNECTION_CHANGED_JOIN_SUCCESS
- 1: 成功加入频道。
- CONNECTION_CHANGED_INTERRUPTED
- 2: 网络连接中断。
- CONNECTION_CHANGED_BANNED_BY_SERVER
- 3: 网络连接被服务器禁止。服务端踢人场景时会报这个错。
- CONNECTION_CHANGED_JOIN_FAILED
- 4: 加入频道失败。SDK 在尝试加入频道 20 分钟后还是没能加入频道,会返回该状态,并停止尝试重连。
- CONNECTION_CHANGED_LEAVE_CHANNEL
- 5: 离开频道。
- CONNECTION_CHANGED_INVALID_APP_ID
- 6: 不是有效的 APP ID。请更换有效的 APP ID 重新加入频道。
- CONNECTION_CHANGED_INVALID_CHANNEL_NAME
- 7: 不是有效的频道名。请更换有效的频道名重新加入频道。
- CONNECTION_CHANGED_INVALID_TOKEN
-
8: 生成的 Token 无效。一般有以下原因:
- 在控制台上启用了 App Certificate,但加入频道未使用 Token。当启用了 App Certificate,必须使用 Token。
- 在调用 JoinChannel [2/2] 加入频道时指定的用户 ID 与生成 Token 时传入的用户 ID 不一致。
- CONNECTION_CHANGED_TOKEN_EXPIRED
- 9: 当前使用的 Token 过期,不再有效,需要重新在你的服务端申请生成 Token。
- CONNECTION_CHANGED_REJECTED_BY_SERVER
-
10: 此用户被服务器禁止。一般有以下原因:
- 用户已进入频道,再次调用加入频道的 API,例如 JoinChannel [2/2],会返回此状态。停止调用该方法即可。
- 用户在进行通话测试时尝试加入频道。等待通话测试结束后再加入频道即可。
- CONNECTION_CHANGED_SETTING_PROXY_SERVER
- 11: 由于设置了代理服务器,SDK 尝试重连。
- CONNECTION_CHANGED_RENEW_TOKEN
- 12: 更新 Token 引起网络连接状态改变。
- CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED
- 13: 客户端 IP 地址变更,可能是由于网络类型,或网络运营商的 IP 或端口发生改变引起。
- CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT
- 14: SDK 和服务器连接保活超时,进入自动重连状态。
- 19:使用相同的 UID 从不同的设备加入同一频道。
-
20:频道内主播人数已达上限。
注意: 该枚举仅在开启 128 人功能后报告。主播人数的上限根据开启 128 人功能时实际配置的人数而定。
CONNECTION_STATE_TYPE
网络连接状态。
枚举值
- CONNECTION_STATE_DISCONNECTED
-
1: 网络连接断开。该状态表示 SDK 处于:
- 调用 JoinChannel [2/2] 加入频道前的初始化阶段。
- 或调用 LeaveChannel 后的离开频道阶段。
- CONNECTION_STATE_CONNECTING
-
2: 建立网络连接中。该状态表示 SDK 在调用 JoinChannel [2/2] 后正在与指定的频道建立连接。
- 如果成功加入频道,app 会收到 OnConnectionStateChanged 回调,通知当前网络状态变成 CONNECTION_STATE_CONNECTED。
- 建立连接后,SDK 还会初始化媒体,一切就绪后会回调 OnJoinChannelSuccess。
- CONNECTION_STATE_CONNECTED
- 3: 网络已连接。该状态表示用户已经加入频道,可以在频道内发布或订阅媒体流。如果因网络断开或切换而导致 SDK 与频道的连接中断,SDK 会自动重连,此时 app 会收到 OnConnectionStateChanged 回调,通知当前网络状态变成 CONNECTION_STATE_RECONNECTING。
- CONNECTION_STATE_RECONNECTING
-
4: 重新建立网络连接中。该状态表示 SDK 之前曾加入过频道,但因网络等原因连接中断了,此时 SDK 会自动尝试重新接入频道。
- 如果 SDK 无法在 10 秒内重新加入频道,则 OnConnectionLost 会被触发,SDK 会一直保持在 CONNECTION_STATE_RECONNECTING 的状态,并不断尝试重新加入频道。
- 如果 SDK 在断开连接后,20 分钟内还是没能重新加入频道,则应用程序会收到 OnConnectionStateChanged 回调,通知 app 的网络状态进入 CONNECTION_STATE_FAILED,SDK 停止尝试重连。
- CONNECTION_STATE_FAILED
-
5: 网络连接失败。该状态表示 SDK 已不再尝试重新加入频道,需要调用 LeaveChannel 离开频道。
- 如果用户还想重新加入频道,则需要再次调用 JoinChannel [2/2]。
- 如果 SDK 因服务器端使用 RESTful API 禁止加入频道,则 app 会收到 OnConnectionStateChanged。
DEGRADATION_PREFERENCE
带宽受限时的视频编码降级偏好。
枚举值
- MAINTAIN_QUALITY
-
0:(默认)带宽受限时,视频编码时优先降低视频帧率,维持视频质量不变。该降级偏好适用于画质优先的场景。
注意: 通信(COMMUNICATION)场景下,本地发送的视频分辨率可能改变,远端用户需能处理这种情况, 详见 OnVideoSizeChanged。 - MAINTAIN_FRAMERATE
- 1:带宽受限时,视频编码时优先降低视频质量,维持视频帧率不变。该降级偏好适用于流畅性优先且允许画质降低的场景。
- MAINTAIN_BALANCED
-
- 自从
- v3.4.0
2:带宽受限时,视频编码时同时降低视频帧率和视频质量。MAINTAIN_BALANCED 的降幅比 MAINTAIN_QUALITY 和 MAINTAIN_FRAMERATE 降幅更低, 适用于流畅性和画质均有限的场景。
注意: 本地发送的视频分辨率可能改变,远端用户需能处理这种情况,详见 OnVideoSizeChanged。 - 3: 带宽受限时,视频编码时优先降低视频帧率。
ENCRYPTION_MODE
内置加密模式。
声网推荐使用 AES_128_GCM2 或 AES_256_GCM2 加密模式。这两种模式支持使用盐,安全性更高。
枚举值
- AES_128_XTS
- 1:(默认)128 位 AES 加密,XTS 模式。
- AES_128_ECB
- 2: 128 位 AES 加密,ECB 模式。
- AES_256_XTS
- 3: 256 位 AES 加密,XTS 模式。
- SM4_128_ECB
- 4: 128 位 SM4 加密,ECB 模式。
- AES_128_GCM
- 5: 128 位 AES 加密,GCM 模式。
- AES_256_GCM
- 6: 256 位 AES 加密,GCM 模式。
- AES_128_GCM2
- 7: 128 位 AES 加密,GCM 模式。该加密模式需要设置盐(
encryptionKdfSalt
)。 - AES_256_GCM2
- 8: 256 位 AES 加密,GCM 模式。该加密模式需要设置盐(
encryptionKdfSalt
)。 - MODE_END
- 枚举值边界。
EXCLUDE_WINDOW_ERROR
屏幕共享时,屏蔽窗口的错误码。
枚举值
- EXCLUDE_WINDOW_FAIL
- -1: 屏幕共享时,屏蔽窗口失败。用户的显卡不支持窗口屏蔽功能。
- EXCLUDE_WINDOW_NONE
- 0: 预留参数。
EXPERIENCE_POOR_REASON
接收远端音频时,本地用户主观体验质量较差的原因。
- 自从
- v3.3.0
枚举值
- EXPERIENCE_REASON_NONE
- 0: 无原因,说明主观体验质量较好。
- REMOTE_NETWORK_QUALITY_POOR
- 1: 远端用户的网络较差。
- LOCAL_NETWORK_QUALITY_POOR
- 2: 本地用户的网络较差。
- WIRELESS_SIGNAL_POOR
- 4: 本地用户的 Wi-FI 或者移动数据网络信号弱。
- WIFI_BLUETOOTH_COEXIST
- 8: 本地用户同时开启 Wi-Fi 和蓝牙,二者信号互相干扰,导致音频传输质量下降。
EXPERIENCE_QUALITY_TYPE
接收远端音频时,本地用户的主观体验质量。
- 自从
- v3.3.0
枚举值
- EXPERIENCE_QUALITY_GOOD
- 0: 主观体验质量较好。
- EXPERIENCE_QUALITY_BAD
- 1: 主观体验质量较差。
FRAME_RATE
视频帧率。
枚举值
- FRAME_RATE_FPS_1
- 1: 1 fps
- FRAME_RATE_FPS_7
- 7: 7 fps
- FRAME_RATE_FPS_10
- 10: 10 fps
- FRAME_RATE_FPS_15
- 15: 15 fps
- FRAME_RATE_FPS_24
- 24: 24 fps
- FRAME_RATE_FPS_30
- 30: 30 fps
- FRAME_RATE_FPS_60
-
60: 60 fps
LASTMILE_PROBE_RESULT_STATE
Last mile 质量探测结果的状态。
枚举值
- LASTMILE_PROBE_RESULT_COMPLETE
- 1: 表示本次 last mile 质量探测的结果是完整的。
- LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE
- 2: 表示本次 last mile 质量探测未进行带宽预测,因此结果不完整。一个可能的原因是测试资源暂时受限。
- LASTMILE_PROBE_RESULT_UNAVAILABLE
- 3: 未进行 last mile 质量探测。一个可能的原因是网络连接中断。
LIGHTENING_CONTRAST_LEVEL
亮度明暗对比度。
枚举值
- LIGHTENING_CONTRAST_LOW
- 低对比度。
- LIGHTENING_CONTRAST_NORMAL
- 正常对比度。
- LIGHTENING_CONTRAST_HIGH
- 高对比度。
LOCAL_AUDIO_STREAM_ERROR
本地音频出错原因。
枚举值
- LOCAL_AUDIO_STREAM_ERROR_OK
- 0: 本地音频状态正常。
- LOCAL_AUDIO_STREAM_ERROR_FAILURE
- 1: 本地音频出错原因不明确。
- LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION
- 2: 没有权限启动本地音频采集设备。
- LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY
- 3: 本地音频采集设备已经在使用中。
- LOCAL_AUDIO_STREAM_ERROR_RECORD_FAILURE
- 4: 本地音频采集失败,建议你检查采集设备是否正常工作。
- LOCAL_AUDIO_STREAM_ERROR_ENCODE_FAILURE
- 5: 本地音频编码失败。
- LOCAL_AUDIO_STREAM_ERROR_NO_RECORDING_DEVICE
- 6: 无本地音频采集设备。请检查麦克风是否与设备连接正常,检查麦克风是否正常工作。
- LOCAL_AUDIO_STREAM_ERROR_NO_PLAYOUT_DEVICE
- 7: 无本地音频播放设备。请检查扬声器是否与设备连接正常,检查扬声器是否正常工作。
- LOCAL_AUDIO_STREAM_ERROR_RECORD_INVALID_ID
- 9: 本地音频采集设备的 ID 无效。请检查音频采集设备 ID。
- LOCAL_AUDIO_STREAM_ERROR_PLAYOUT_INVALID_ID
- 10: 本地音频播放设备的 ID 无效。请检查音频播放设备 ID。
LOCAL_AUDIO_STREAM_STATE
本地音频状态。
枚举值
- LOCAL_AUDIO_STREAM_STATE_STOPPED
- 0: 本地音频默认初始状态。
- LOCAL_AUDIO_STREAM_STATE_RECORDING
- 1: 本地音频采集设备启动成功。
- LOCAL_AUDIO_STREAM_STATE_ENCODING
- 2: 本地音频首帧编码成功。
- LOCAL_AUDIO_STREAM_STATE_FAILED
- 3: 本地音频启动失败。
LOCAL_VIDEO_STREAM_ERROR
本地视频出错原因。
枚举值
- LOCAL_VIDEO_STREAM_ERROR_OK
- 0: 本地视频状态正常。
- LOCAL_VIDEO_STREAM_ERROR_FAILURE
- 1: 出错原因不明确。
- LOCAL_VIDEO_STREAM_ERROR_DEVICE_NO_PERMISSION
- 2: 没有权限启动本地视频采集设备。
- LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY
- 3: 本地视频采集设备正在使用中。
- LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE
- 4: 本地视频采集失败,建议检查采集设备是否正常工作。
- LOCAL_VIDEO_STREAM_ERROR_ENCODE_FAILURE
- 5: 本地视频编码失败。
- LOCAL_VIDEO_STREAM_ERROR_CAPTURE_INBACKGROUND
- 6: 应用处于后台。
- LOCAL_VIDEO_STREAM_ERROR_CAPTURE_MULTIPLE_FOREGROUND_APPS
- 7: 应用窗口处于侧拉、分屏、画中画模式。
- LOCAL_VIDEO_STREAM_ERROR_DEVICE_NOT_FOUND
-
- 自从
- v3.4.0
8: 找不到本地视频采集设备。
- LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_MINIMIZED
- 11: 调用 StartScreenCaptureByWindowId 方法共享窗口时,共享窗口处于最小化的状态。
- LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_CLOSED
-
- 自从
- v3.2.0
12: 该错误码表示通过窗口 ID 共享的窗口已关闭,或通过窗口 ID 共享的全屏窗口已退出全屏。 退出全屏模式后,远端用户将无法看到共享的窗口。为避免远端用户看到黑屏,声网建议你立即结束本次共享。
报告该错误码的常见场景:- 本地用户关闭共享的窗口时,SDK 会报告该错误码。
- 本地用户先放映幻灯片,然后共享放映中的幻灯片。结束放映时,SDK 会报告该错误码。
- 本地用户先全屏观看网页视频或网页文档,然后共享网页视频或网页文档。结束全屏时,SDK 会报告该错误码。
- LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_OCCLUDED
- 13: 待共享的窗口被其他窗口遮挡住,被遮挡住的部分在共享时会被 SDK 涂黑。
- LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED
- 20: SDK 不支持共享该类型的窗口。
LOCAL_VIDEO_STREAM_STATE
本地视频状态。
枚举值
- LOCAL_VIDEO_STREAM_STATE_STOPPED
- 0: 本地视频默认初始状态。
- LOCAL_VIDEO_STREAM_STATE_CAPTURING
- 1: 本地视频采集设备启动成功。调用 StartScreenCaptureByWindowId 方法共享窗口且共享窗口为最大化时,也会报告该状态。
- LOCAL_VIDEO_STREAM_STATE_ENCODING
- 2: 本地视频首帧编码成功。
- LOCAL_VIDEO_STREAM_STATE_FAILED
- 3: 本地视频启动失败。
LOG_FILTER_TYPE
日志过滤等级。
枚举值
- LOG_FILTER_OFF
- 0: 不输出日志信息。
- LOG_FILTER_DEBUG
- 0x080f: 输出所有 API 日志信息。 如果你想获取最完整的日志,可以将日志级别设为该等级。
- LOG_FILTER_INFO
- 0x000f: 输出 CRITICAL、ERROR、WARNING 和 INFO 级别的日志信息。 我们推荐你将日志级别设为该等级。
- LOG_FILTER_WARN
- 0x000e: 输出 CRITICAL、ERROR 和 WARNING 级别的日志信息。
- LOG_FILTER_ERROR
- 0x000c: 输出 CRITICAL 和 ERROR 级别的日志信息。
- LOG_FILTER_CRITICAL
- 0x0008: 输出 CRITICAL 级别的日志信息。
LOG_LEVEL
日志输出等级。
- 自从
- v3.3.0
枚举值
- LOG_LEVEL_NONE
- 0: 不输出任何日志。
- LOG_LEVEL_INFO
- 0x0001:(默认)输出
FATAL
、ERROR
、WARN
、INFO
级别的日志。我们推荐你将日志级别设为该等级。 - LOG_LEVEL_WARN
- 0x0002: 仅输出
FATAL
、ERROR
、WARN
级别的日志。 - LOG_LEVEL_ERROR
- 0x0004: 仅输出
FATAL
、ERROR
级别的日志。 - LOG_LEVEL_FATAL
- 0x0008: 仅输出
FATAL
级别的日志。
LOW_LIGHT_ENHANCE_LEVEL
暗光增强等级。
枚举值
- LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
- 0:(默认)优先画质的暗光增强,会处理视频图像的亮度、细节、噪声,消耗的性能适中,处理速度适中,综合画质最优。
- LOW_LIGHT_ENHANCE_LEVEL_FAST
- 优先性能的暗光增强,会处理视频图像的亮度、细节,消耗的性能较少,处理速度较快。
LOW_LIGHT_ENHANCE_MODE
暗光增强模式。
枚举值
- LOW_LIGHT_ENHANCE_AUTO
- 0:(默认)自动模式。SDK 会根据环境光亮度自动开启或关闭暗光增强功能,以适时补光和防止过曝。
- LOW_LIGHT_ENHANCE_MANUAL
- 手动模式。用户需手动开启或关闭暗光增强功能。
MAX_CHANNEL_ID_LENGTH_TYPE
频道名的最大长度。
枚举值
- MAX_CHANNEL_ID_LENGTH
- 频道名的最大长度为 65 个字符。
MAX_DEVICE_ID_LENGTH_TYPE
设备 ID 的最大长度。
枚举值
- MAX_DEVICE_ID_LENGTH
- 设备 ID 的最大长度为 512 个字符。
MAX_USER_ACCOUNT_LENGTH_TYPE
用户 User Account 的最大长度。
枚举值
- MAX_USER_ACCOUNT_LENGTH
- 用户 User Account 的最大长度为 255 个字符。
MEDIA_DEVICE_STATE_TYPE
设备状态。
枚举值
- MEDIA_DEVICE_STATE_IDLE
- 0: 设备就绪。
- MEDIA_DEVICE_STATE_ACTIVE
- 1: 设备正在使用。
- MEDIA_DEVICE_STATE_DISABLED
- 2: 设备被禁用。
- MEDIA_DEVICE_STATE_NOT_PRESENT
- 4: 没有此设备。
- MEDIA_DEVICE_STATE_UNPLUGGED
- 8: 设备被拔出。
- MEDIA_DEVICE_STATE_UNRECOMMENDED
- 16: 不推荐使用该设备。
MEDIA_DEVICE_TYPE
设备类型。
枚举值
- UNKNOWN_AUDIO_DEVICE
- -1: 设备类型未知。
- AUDIO_PLAYOUT_DEVICE
- 0: 音频播放设备。
- AUDIO_RECORDING_DEVICE
- 1: 音频采集设备。
- VIDEO_RENDER_DEVICE
- 2: 视频渲染设备。
- VIDEO_CAPTURE_DEVICE
- 3: 视频采集设备。
- AUDIO_APPLICATION_PLAYOUT_DEVICE
- 4: 音频应用播放设备。
MEDIA_SOURCE_TYPE
媒体源类型。
枚举值
- AUDIO_PLAYOUT_SOURCE
- 0: 音频播放设备。
- AUDIO_RECORDING_SOURCE
- 1: 音频采集设备。
MediaRecorderContainerFormat
录制文件的格式。
枚举值
- FORMAT_MP4
- 1:(默认)MP4
- FORMAT_FLV
- 预留参数
MediaRecorderStreamType
录制内容。
枚举值
- STREAM_TYPE_AUDIO
- 仅音频。
- STREAM_TYPE_VIDEO
- 仅视频。
- STREAM_TYPE_BOTH
- (默认)音视频。
METADATA_TYPE
观测器的 Metadata 类型。当前仅支持视频类型的 Metadata 。
枚举值
- UNKNOWN_METADATA
- Metadata 类型未知。
- VIDEO_METADATA
- Metadata 类型为视频。
NETWORK_TYPE
网络连接类型。
枚举值
- NETWORK_TYPE_UNKNOWN
- -1: 网络连接类型未知。
- NETWORK_TYPE_DISCONNECTED
- 0: 网络连接已断开。
- NETWORK_TYPE_LAN
- 1: 网络类型为 LAN。
- NETWORK_TYPE_WIFI
- 2: 网络类型为 Wi-Fi (包含热点)。
- NETWORK_TYPE_MOBILE_2G
- 3: 网络类型为 2G 移动网络。
- NETWORK_TYPE_MOBILE_3G
- 4: 网络类型为 3G 移动网络。
- NETWORK_TYPE_MOBILE_4G
- 5: 网络类型为 4G 移动网络。
- NETWORK_TYPE_MOBILE_5G
- 6: 网络类型为 5G 移动网络。
ORIENTATION_MODE
视频编码的方向模式。
枚举值
- ORIENTATION_MODE_ADAPTIVE
-
0: (默认)该模式下 SDK 输出的视频方向与采集到的视频方向一致。接收端会根据收到的视频旋转信息对视频进行旋转。该模式适用于接收端可以调整视频方向的场景。
- 如果采集的视频是横屏模式,则输出的视频也是横屏模式。
- 如果采集的视频是竖屏模式,则输出的视频也是竖屏模式。
- ORIENTATION_FIXED_LANDSCAPE
- 1: 该模式下 SDK 固定输出风景(横屏)模式的视频。如果采集到的视频是竖屏模式,则视频编码器会对其进行裁剪。该模式适用于当接收端无法调整视频方向时,如使用旁路推流场景下。
- ORIENTATION_FIXED_PORTRAIT
- 2: 该模式下 SDK 固定输出人像(竖屏)模式的视频,如果采集到的视频是横屏模式,则视频编码器会对其进行裁剪。该模式适用于当接收端无法调整视频方向时,如使用旁路推流场景下。
PRIORITY_TYPE
远端用户的需求优先级。
枚举值
- PRIORITY_HIGH
- 用户需求优先级为高。
- PRIORITY_NORMAL
- (默认)用户需求优先级为正常。
QUALITY_ADAPT_INDICATION
自上次统计后本地视频质量的自适应情况(基于目标帧率和目标码率)。
枚举值
- ADAPT_NONE
- 0:本地视频质量不变。
- ADAPT_UP_BANDWIDTH
- 1:因网络带宽增加,本地视频质量改善。
- ADAPT_DOWN_BANDWIDTH
- 2:因网络带宽减少,本地视频质量变差。
QUALITY_REPORT_FORMAT_TYPE
质量报告的格式。
枚举值
- QUALITY_REPORT_JSON
- 0: 质量报告格式为 JSON。
- QUALITY_REPORT_HTML
- 1: 质量报告格式为 HTML。
QUALITY_TYPE
网络质量。
枚举值
- QUALITY_UNKNOWN
- 0: 网络质量未知。
- QUALITY_EXCELLENT
- 1: 网络质量极好。
- QUALITY_GOOD
- 2: 用户主观感觉和 excellent 差不多,但码率可能略低于 excellent。
- QUALITY_POOR
- 3: 用户主观感受有瑕疵但不影响沟通。
- QUALITY_BAD
- 4: 勉强能沟通但不顺畅。
- QUALITY_VBAD
- 5: 网络质量非常差,基本不能沟通。
- QUALITY_DOWN
- 6: 完全无法沟通。
- QUALITY_UNSUPPORTED
- 7: 暂时无法检测网络质量(未使用)。
- QUALITY_DETECTING
- 8: 网络质量检测已开始还没完成。
RAW_AUDIO_FRAME_OP_MODE_TYPE
音频数据的使用模式。
枚举值
- RAW_AUDIO_FRAME_OP_MODE_READ_ONLY
- 0: 只读模式,例如: 若用户通过声网 SDK 采集数据,自己进行旁路推流,则可以选择该模式。
- RAW_AUDIO_FRAME_OP_MODE_WRITE_ONLY
- 1: 只写模式,例如: 若用户自行采集数据,可选择该模式。
- RAW_AUDIO_FRAME_OP_MODE_READ_WRITE
- 2: 读写模式, 例如: 若用户自己有音效处理模块,且想要根据实际需要对数据进行前处理(例如变声),则可以选择该模式。
RecorderErrorCode
录制状态出错的原因。
枚举值
- RECORDER_ERROR_NONE
- 0: 一切正常。
- RECORDER_ERROR_WRITE_FAILED
- 1: 录制文件写入失败。
- RECORDER_ERROR_NO_STREAM
- 2: 没有可录制的音视频流或者录制的音视频流中断超过 5 秒。
- RECORDER_ERROR_OVER_MAX_DURATION
- 3: 录制时长超出上限。
- RECORDER_ERROR_CONFIG_CHANGED
- 4: 录制配置改变。
- RECORDER_ERROR_CUSTOM_STREAM_DETECTED
- 5: 在通信场景下,捕捉到 v3.0.0 之前版本的用户发送的音视频流。
RecorderState
当前的录制状态。
枚举值
- RECORDER_STATE_ERROR
- -1: 音视频流录制出错,错误原因详见 RecorderErrorCode。
- RECORDER_STATE_START
- 2: 音视频流录制开始。
- RECORDER_STATE_STOP
- 3: 音视频流录制停止。
REMOTE_AUDIO_STATE_REASON
远端音频流状态切换原因。
枚举值
- REMOTE_AUDIO_STATE_REASON_INTERNAL
- 0: 音频状态发生改变时,会报告该原因。
- REMOTE_AUDIO_STATE_REASON_NETWORK_CONGESTION
- 1: 网络阻塞。
- REMOTE_AUDIO_STATE_REASON_NETWORK_RECOVERY
- 2: 网络恢复正常。
- REMOTE_AUDIO_STATE_REASON_LOCAL_MUTED
- 3: 本地用户停止接收远端音频流或本地用户禁用音频模块。
- REMOTE_AUDIO_STATE_REASON_LOCAL_UNMUTED
- 4: 本地用户恢复接收远端音频流或本地用户启动音频模块。
- REMOTE_AUDIO_STATE_REASON_REMOTE_MUTED
- 5: 远端用户停止发送音频流或远端用户禁用音频模块。
- REMOTE_AUDIO_STATE_REASON_REMOTE_UNMUTED
- 6: 远端用户恢复发送音频流或远端用户启用音频模块。
- REMOTE_AUDIO_STATE_REASON_REMOTE_OFFLINE
- 7: 远端用户离开频道。
REMOTE_AUDIO_STATE
远端音频流状态。
枚举值
- REMOTE_AUDIO_STATE_STOPPED
- 0: 远端音频默认初始状态。在 REMOTE_AUDIO_STATE_REASON_LOCAL_MUTED、REMOTE_AUDIO_STATE_REASON_REMOTE_MUTED 或 REMOTE_AUDIO_STATE_REASON_REMOTE_OFFLINE的情况下,会报告该状态。
- REMOTE_AUDIO_STATE_STARTING
- 1: 本地用户已接收远端音频首包。
- REMOTE_AUDIO_STATE_DECODING
- 2: 远端音频流正在解码,正常播放。在 REMOTE_AUDIO_STATE_REASON_NETWORK_RECOVERY、REMOTE_AUDIO_STATE_REASON_LOCAL_UNMUTED 或 REMOTE_AUDIO_STATE_REASON_REMOTE_UNMUTED 的情况下, 会报告该状态。
- REMOTE_AUDIO_STATE_FROZEN
- 3: 远端音频流卡顿。在 REMOTE_AUDIO_STATE_REASON_NETWORK_CONGESTION 的情况下,会报告该状态。
- REMOTE_AUDIO_STATE_FAILED
- 4: 远端音频流播放失败。在 REMOTE_AUDIO_STATE_REASON_INTERNAL 的情况下,会报告该状态。
REMOTE_VIDEO_STATE_REASON
远端视频流状态切换原因。
枚举值
- REMOTE_VIDEO_STATE_REASON_INTERNAL
- 0: 视频状态发生改变时,会报告该原因。
- REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION
- 1: 远端用户的网络阻塞。如果网络状态持续不佳,请在应用中弹框显示“对方的网络状态不佳”。
- REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY
- 2: 远端用户的网络恢复正常。请在应用中弹框显示“对方的网络状态恢复正常”。
- REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED
- 3: 本地用户停止接收远端视频流或本地用户禁用视频模块。请关闭用于渲染该远端用户视频的窗口并在应用中弹框显示“你已停止接收对方视频”。
- REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED
- 4: 本地用户恢复接收远端视频流或本地用户启动视频模块。请恢复用于渲染该远端用户视频的窗口并在应用中弹框显示“你已恢复接收对方视频”。
- REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED
- 5: 远端用户停止发送视频流或远端用户禁用视频模块。请关闭用于渲染该远端用户视频的窗口,在应用界面的用户列表中用图标显示该远端用户已停止发送视频,在应用中弹框显示“对应已关闭摄像头”。
- REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED
- 6: 远端用户恢复发送视频流或远端用户启用视频模块。请恢复用于渲染该远端用户视频的窗口,在应用界面的用户列表中用图标显示该远端用户已恢复发送视频,在应用中弹框显示“对应已开启摄像头”。
- REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE
- 7: 远端用户离开频道。请关闭用于渲染该远端用户视频的窗口,在应用界面的用户列表中移除该远端用户。
- REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK
- 8: 弱网情况下,远端音视频流回退为音频流。请关闭用户渲染该远端用户视频的窗口,在应用中弹框显示“对方网络状态不佳”。
- REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY
- 9: 网络情况改善时,远端音频流恢复为音视频流。请恢复用于渲染该远端用户视频的窗口,在应用中弹框显示“对方网络状态恢复正常”。
REMOTE_VIDEO_STATE
远端视频流状态。
枚举值
- REMOTE_VIDEO_STATE_STOPPED
- 0: 远端视频默认初始状态。在 REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED、REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED 或 REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE 的情况下,会报告该状态。
- REMOTE_VIDEO_STATE_STARTING
- 1: 本地用户已接收远端视频首包。
- REMOTE_VIDEO_STATE_DECODING
- 2: 远端视频流正在解码,正常播放。在 REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY、REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED、REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED 或 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY 的情况下, 会报告该状态。
- REMOTE_VIDEO_STATE_FROZEN
- 3: 远端视频流卡顿。在 REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION 或 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK 的情况下,会报告该状态。
- REMOTE_VIDEO_STATE_FAILED
- 4: 远端视频流播放失败。在 REMOTE_VIDEO_STATE_REASON_INTERNAL 的情况下,会报告该状态。
REMOTE_VIDEO_STREAM_TYPE
视频流类型。
枚举值
- REMOTE_VIDEO_STREAM_HIGH
- 0: 视频大流。
- REMOTE_VIDEO_STREAM_LOW
- 1: 视频小流。
RENDER_MODE_TYPE
视频显示模式。
枚举值
- RENDER_MODE_HIDDEN
- 1: 视频尺寸等比缩放。优先保证视窗被填满。因视频尺寸与显示视窗尺寸不一致而多出的视频将被截掉。
- RENDER_MODE_FIT
- 2: 视频尺寸等比缩放。优先保证视频内容全部显示。因视频尺寸与显示视窗尺寸不一致造成的视窗未被填满的区域填充黑色。
- RENDER_MODE_ADAPTIVE
-
- 弃用:
- 3: 该模式已弃用。
- RENDER_MODE_FILL
- 4: 视频尺寸进行缩放和拉伸以充满显示视窗。
RTMP_STREAM_LIFE_CYCLE_TYPE
服务端转码推流的生命周期。
- 弃用
枚举值
- RTMP_STREAM_LIFE_CYCLE_BIND2CHANNEL
- 跟频道生命周期绑定,即频道内所有主播离开,服务端转码推流会在 30 秒之后停止。
- RTMP_STREAM_LIFE_CYCLE_BIND2OWNER
- 跟启动服务端转码推流的主播生命周期绑定,即该主播离开,服务端转码推流会立即停止。
RTMP_STREAM_PUBLISH_ERROR_TYPE
推流错误信息。
枚举值
- RTMP_STREAM_PUBLISH_ERROR_OK
- 0:推流成功。
- RTMP_STREAM_PUBLISH_ERROR_INVALID_ARGUMENT
- 1:参数无效。请检查输入参数是否正确。如果你在调用 AddPublishStreamUrl 前没有调用 SetLiveTranscoding 设置转码参数,SDK 会返回该错误。
- RTMP_STREAM_PUBLISH_ERROR_ENCRYPTED_STREAM_NOT_ALLOWED
- 2:推流已加密,不能推流。
- RTMP_STREAM_PUBLISH_ERROR_CONNECTION_TIMEOUT
- 3:推流超时未成功。可调用 AddPublishStreamUrl 重新推流。
- RTMP_STREAM_PUBLISH_ERROR_INTERNAL_SERVER_ERROR
- 4:推流服务器出现错误。请调用 AddPublishStreamUrl 重新推流。
- RTMP_STREAM_PUBLISH_ERROR_RTMP_SERVER_ERROR
- 5:CDN 服务器出现错误。
- RTMP_STREAM_PUBLISH_ERROR_TOO_OFTEN
- 6:推流请求过于频繁。
- RTMP_STREAM_PUBLISH_ERROR_REACH_LIMIT
- 7:单个主播的推流地址数目达到上限 10。请删掉一些不用的推流地址再增加推流地址。
- RTMP_STREAM_PUBLISH_ERROR_NOT_AUTHORIZED
- 8:主播操作不属于自己的流。例如更新其他主播的流参数、停止其他主播的流。请检查 App 逻辑。
- RTMP_STREAM_PUBLISH_ERROR_STREAM_NOT_FOUND
- 9:服务器未找到这个流。
- RTMP_STREAM_PUBLISH_ERROR_FORMAT_NOT_SUPPORTED
- 10:推流地址格式有错误。请检查推流地址格式是否正确。
- RTMP_STREAM_PUBLISH_ERROR_NOT_BROADCASTER
- 11:用户角色不是主播,该用户无法使用推流功能。请检查你的应用代码逻辑。
- RTMP_STREAM_PUBLISH_ERROR_TRANSCODING_NO_MIX_STREAM
- 13:非转码推流情况下,调用了 UpdateRtmpTranscoding 或 SetLiveTranscoding 方法更新转码属性。请检查你的应用代码逻辑。
- RTMP_STREAM_PUBLISH_ERROR_NET_DOWN
- 14:主播的网络出错。
- RTMP_STREAM_PUBLISH_ERROR_INVALID_APPID
- 15:你的 App ID 没有使用声网推流服务的权限。请参考旁路推流中的前提条件开启推流服务。
- RTMP_STREAM_UNPUBLISH_ERROR_OK
- 100:推流已正常结束。当你调用 RemovePublishStreamUrl 结束推流后,SDK 会返回该值。
RTMP_STREAM_PUBLISH_STATE
推流状态。
枚举值
- RTMP_STREAM_PUBLISH_STATE_IDLE
- 0:推流未开始或已结束。成功调用 RemovePublishStreamUrl 方法删除推流地址后,也会返回该状态。
- RTMP_STREAM_PUBLISH_STATE_CONNECTING
- 1:正在连接声网推流服务器和 CDN 服务器。调用 AddPublishStreamUrl 方法后,会返回该状态。
- RTMP_STREAM_PUBLISH_STATE_RUNNING
- 2:推流正在进行。成功推流后,会返回该状态。
- RTMP_STREAM_PUBLISH_STATE_RECOVERING
-
3:正在恢复推流。当 CDN 出现异常,或推流短暂中断时,SDK 会自动尝试恢复推流,并返回该状态。
- 如成功恢复推流,则进入状态 RTMP_STREAM_PUBLISH_STATE_RUNNING(2)。
- 如服务器出错或 60 秒内未成功恢复,则进入状态 RTMP_STREAM_PUBLISH_STATE_FAILURE(4)。如果觉得 60 秒太长,也可以主动调用 RemovePublishStreamUrl 和 AddPublishStreamUrl 方法尝试重连。
- RTMP_STREAM_PUBLISH_STATE_FAILURE
- 4:推流失败。失败后,你可以通过返回的错误码排查错误原因,也可以再次调用 AddPublishStreamUrl 重新尝试推流。
- RTMP_STREAM_PUBLISH_STATE_DISCONNECTING
- 5:SDK 正在与声网推流服务器和 CDN 服务器断开连接。 当你调用 RemovePublishStreamUrl 或 StopRtmpStream 方法正常结束推流时,SDK 会依次报告推流状态为 RTMP_STREAM_PUBLISH_STATE_DISCONNECTING、RTMP_STREAM_PUBLISH_STATE_IDLE。
RTMP_STREAMING_EVENT
旁路推流时发生的事件。
枚举值
- RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE
- 1: 旁路推流时,添加背景图或水印出错。
- RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE
- 2: 该推流 URL 已用于推流。如果你想开始新的推流,请使用新的推流 URL。
- RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT
- 3: 功能不支持。
- RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN
- 4: 预留参数。
STREAM_FALLBACK_OPTIONS
音视频流回退处理选项。
枚举值
- STREAM_FALLBACK_OPTION_DISABLED
- 0: 上行/下行网络较弱时,不对音视频流作回退处理,但不能保证音视频流的质量。
- STREAM_FALLBACK_OPTION_VIDEO_STREAM_LOW
- 1: 在下行网络条件较差时只接收视频小流(低分辨率、低码率视频流)。该选项只对 SetRemoteSubscribeFallbackOption 有效。对 SetLocalPublishFallbackOption 方法无效。
- STREAM_FALLBACK_OPTION_AUDIO_ONLY
- 2: 上行/下行网络较弱时,先尝试只接收视频小流(低分辨率、低码率视频流);如果网络环境无法显示视频,则再回退到只接收远端订阅的音频流。
STREAM_PUBLISH_STATE
发布状态。
枚举值
- PUB_STATE_IDLE
- 0: 加入频道后的初始发布状态。
- PUB_STATE_NO_PUBLISHED
-
1: 发布失败。可能是因为:
- 本地用户调用 MuteLocalAudioStream(
true
) 或 MuteLocalVideoStream(true
) 停止发送本地媒体流。 - 本地用户调用 DisableAudio 或 DisableVideo 关闭本地音频或视频模块。
- 本地用户调用 EnableLocalAudio(
false
) 或 EnableLocalVideo(false
) 关闭本地音频或视频采集。 - 本地用户角色为观众。
- 本地用户调用 MuteLocalAudioStream(
- PUB_STATE_PUBLISHING
- 2: 正在发布。
- PUB_STATE_PUBLISHED
- 3: 发布成功。
STREAM_SUBSCRIBE_STATE
订阅状态。
枚举值
- SUB_STATE_IDLE
- 0: 加入频道后的初始订阅状态。
- SUB_STATE_NO_SUBSCRIBED
-
1: 订阅失败。可能是因为:
- 远端用户:
- 调用 MuteLocalAudioStream(
true
) 或 MuteLocalVideoStream(true
) 停止发送本地媒体流。 - 调用 DisableAudio 或 DisableVideo 关闭本地音频或视频模块。
- 调用 EnableLocalAudio(false) 或 EnableLocalVideo(false) 关闭本地音频或视频采集。
- 用户角色为观众。
- 调用 MuteLocalAudioStream(
- 本地用户调用以下方法停止接收远端媒体流:
- 调用 MuteRemoteAudioStream(true)、 MuteAllRemoteAudioStreams(true) 或 SetDefaultMuteAllRemoteAudioStreams(true) 停止接收远端音频流。
- 调用 MuteRemoteVideoStream(true)、 MuteAllRemoteVideoStreams(true) 或 SetDefaultMuteAllRemoteVideoStreams(true) 停止接收远端视频流。
- 远端用户:
- SUB_STATE_SUBSCRIBING
- 2: 正在订阅。
- SUB_STATE_SUBSCRIBED
- 3: 收到了远端流,订阅成功。
SUPER_RESOLUTION_STATE_REASON
超分辨率功能未成功开启的原因。
- 自从
- v3.5.1
枚举值
- SR_STATE_REASON_SUCCESS
- 0: 超分辨率已成功开启。
- SR_STATE_REASON_STREAM_OVER_LIMITATION
- 1: 远端用户的原始视频分辨率超出了可以应用超分辨率功能的范围。
- SR_STATE_REASON_USER_COUNT_OVER_LIMITATION
- 2: 已对一个远端用户的视频使用超分辨率。
- SR_STATE_REASON_DEVICE_NOT_SUPPORTED
- 3: 设备不支持使用超分辨率。
UPLOAD_ERROR_REASON
日志文件上传失败的原因。
枚举值
- UPLOAD_SUCCESS
- 0: 日志上传成功。
- UPLOAD_NET_ERROR
- 1: 网络错误。请检查网络是否正常,并再次调用 UploadLogFile 进行重传。
- UPLOAD_SERVER_ERROR
- 2:声网服务器错误,请稍后尝试。
VOICE_CONVERSION_PRESET
预设的变声效果选项。
- 自从
- v3.3.1
枚举值
- VOICE_CONVERSION_OFF
- 原声,即关闭变声效果。
- VOICE_CHANGER_NEUTRAL
- 中性。为避免音频失真,请确保仅对女声设置该效果。
- VOICE_CHANGER_SWEET
- 甜美。为避免音频失真,请确保仅对女声设置该效果。
- VOICE_CHANGER_SOLID
- 稳重。为避免音频失真,请确保仅对男声设置该效果。
- VOICE_CHANGER_BASS
- 低沉。为避免音频失真,请确保仅对男声设置该效果。
USER_OFFLINE_REASON_TYPE
用户离线原因。
枚举值
- USER_OFFLINE_QUIT
- 0: 用户主动离开。
- USER_OFFLINE_DROPPED
-
1: 因过长时间收不到对方数据包,超时掉线。
注意: 由于 SDK 使用的是不可靠通道,也有可能对方主动离开频道,但是本地没收到对方离开消息而误判为超时掉线。 - USER_OFFLINE_BECOME_AUDIENCE
- 2: 用户身份从主播切换为观众。
VIDEO_BUFFER_TYPE
视频 buffer 类型。
枚举值
- VIDEO_BUFFER_RAW_DATA
- 1: 类型为原始数据。
VIDEO_CAPTURE_TYPE
外部视频源的类型。
枚举值
- VIDEO_CAPTURE_UNKNOWN
- 未知类型。
- VIDEO_CAPTURE_CAMERA
- (默认)摄像头采集的视频。
- VIDEO_CAPTURE_SCREEN
- 屏幕共享的视频。
VIDEO_CODEC_PROFILE_TYPE
旁路推流输出视频的编解码规格。
- VIDEO_CODEC_PROFILE_BASELINE
- 66: Baseline 级别的视频编码规格,一般用于低阶或需要额外容错的应用,比如视频通话、手机视频等。
- VIDEO_CODEC_PROFILE_MAIN
- 77: Main 级别的视频编码规格,一般用于主流消费类电子产品,如 MP4、便携的视频播放器、PSP、iPad 等。
- VIDEO_CODEC_PROFILE_HIGH
- 100: (默认)High 级别的视频编码规格,一般用于广播、视频碟片存储、高清电视。
VIDEO_CODEC_TYPE
视频编码格式。
枚举值
- VIDEO_CODEC_VP8
- 标准 VP8。
- VIDEO_CODEC_H264
- 标准 H.264。
- VIDEO_CODEC_EVP
- 增强 VP8。
- VIDEO_CODEC_E264
- 增强 H.264。
VideoContentHint
屏幕共享的内容类型。
枚举值
- CONTENT_HINT_NONE
- (默认)无指定的内容类型。
- CONTENT_HINT_MOTION
- 内容类型为动画。当共享的内容是视频、电影或视频游戏时,推荐选择该内容类型。
- CONTENT_HINT_DETAILS
- 内容类型为细节。当共享的内容是图片或文字时,推荐选择该内容类型。
VIDEO_DENOISER_MODE
视频降噪模式。
枚举值
- VIDEO_DENOISER_AUTO
- 0:(默认)自动模式。SDK 会根据环境光亮度自动开启或关闭视频降噪功能。
- VIDEO_DENOISER_MANUAL
- 手动模式。用户需手动开启或关闭视频降噪功能。
VIDEO_DENOISER_LEVEL
视频降噪等级。
枚举值
- VIDEO_DENOISER_LEVEL_HIGH_QUALITY
- 0:(默认)优先画质的视频降噪。VIDEO_DENOISER_LEVEL_HIGH_QUALITY 是在性能消耗和视频降噪效果中取平衡的等级。性能消耗适中,视频降噪速度适中,综合画质最优。
- VIDEO_DENOISER_LEVEL_FAST
- 优先性能的视频降噪。VIDEO_DENOISER_LEVEL_FAST 是在性能消耗和视频降噪效果中侧重于节省性能的等级。性能消耗较少,视频降噪速度较快。为避免处理后的视频有明显的拖影效果,声网推荐你在摄像头固定的情况下使用 VIDEO_DENOISER_LEVEL_FAST。
- VIDEO_DENOISER_LEVEL_STRENGTH
- 强效的视频降噪。VIDEO_DENOISER_LEVEL_STRENGTH 是在性能消耗和视频降噪效果中侧重于视频降噪效果的等级。性能消耗较多,视频降噪速度较慢,视频降噪效果较好。如果 VIDEO_DENOISER_LEVEL_HIGH_QUALITY 不能满足你的视频降噪需求,你可以使用 VIDEO_DENOISER_LEVEL_STRENGTH。
VIDEO_FRAME_TYPE
视频帧类型。
枚举值
- FRAME_TYPE_YUV420
- 0: YUV420。
- FRAME_TYPE_YUV422
- 1: YUV422。
- FRAME_TYPE_RGBA
- 2: RGBA。
VIDEO_MIRROR_MODE_TYPE
镜像模式类型。
枚举值
- VIDEO_MIRROR_MODE_AUTO
- 0:(默认)由 SDK 决定镜像模式。
- VIDEO_MIRROR_MODE_ENABLED
- 1: 启用镜像模式。
- VIDEO_MIRROR_MODE_DISABLED
- 2: 关闭镜像模式。
VIDEO_OBSERVER_POSITION
视频观测位置。
枚举值
- POSITION_POST_CAPTURER
- 1: 本地采集视频数据后的位置,对应 OnCaptureVideoFrame 回调。
- POSITION_PRE_RENDERER
- 2: 接收远端发送视频前的位置,对应 OnRenderVideoFrame 回调。
- POSITION_PRE_ENCODER
- 4: 本地视频编码前的位置,对应 OnPreEncodeVideoFrame 回调。
VIDEO_PIXEL_FORMAT
视频像素格式。
枚举值
- VIDEO_PIXEL_UNKNOWN
- 0: 视频像素格式未知。
- VIDEO_PIXEL_I420
- 1: I420 格式。
- VIDEO_PIXEL_BGRA
- 2: BGRA 格式。
- VIDEO_PIXEL_NV21
- 3: NV21 格式。
- VIDEO_PIXEL_RGBA
- 4: RGBA 格式。
- VIDEO_PIXEL_IMC2
- 5: IMC2 格式。
- VIDEO_PIXEL_ARGB
- 7: ARGB 格式。
- VIDEO_PIXEL_NV12
- 8: NV12 格式。
- VIDEO_PIXEL_I422
- 16: I422 格式。
- VIDEO_TEXTURE_2D
- 16: TEXTURE 2D 格式。
- VIDEO_TEXTURE_OES
- 16: TEXTURE OES 格式。
VIDEO_PROFILE_TYPE
视频属性。
- 弃用
枚举值
- VIDEO_PROFILE_LANDSCAPE_120P
- 0:分辨率 160 × 120,帧率 15 fps,码率 65 Kbps。
- VIDEO_PROFILE_LANDSCAPE_120P_3
- 2:分辨率 120 × 120,帧率 15 fps,码率 50 Kbps。
- VIDEO_PROFILE_LANDSCAPE_180P
- 10:分辨率 320 × 180,帧率 15 fps,码率 140 Kbps。
- VIDEO_PROFILE_LANDSCAPE_180P_3
- 12:分辨率 180 × 180,帧率 15 fps,码率 100 Kbps。
- VIDEO_PROFILE_LANDSCAPE_180P_4
- 13:分辨率 240 × 180,帧率 15 fps,码率 120 Kbps。
- VIDEO_PROFILE_LANDSCAPE_240P
- 20:分辨率 320 × 240,帧率 15 fps,码率 200 Kbps。
- VIDEO_PROFILE_LANDSCAPE_240P_3
- 22:分辨率 240 × 240,帧率 15 fps,码率 140 Kbps。
- VIDEO_PROFILE_LANDSCAPE_240P_4
- 23:分辨率 424 × 240,帧率 15 fps,码率 220 Kbps。
- VIDEO_PROFILE_LANDSCAPE_360P
- 30:分辨率 640 × 360,帧率 15 fps,码率 400 Kbps。
- VIDEO_PROFILE_LANDSCAPE_360P_3
- 32:分辨率 360 × 360,帧率 15 fps,码率 260 Kbps。
- VIDEO_PROFILE_LANDSCAPE_360P_4
- 33:分辨率 640 × 360,帧率 30 fps,码率 600 Kbps。
- VIDEO_PROFILE_LANDSCAPE_360P_6
- 35:分辨率 360 × 360,帧率 30 fps,码率 400 Kbps。
- VIDEO_PROFILE_LANDSCAPE_360P_7
- 36:分辨率 480 × 360,帧率 15 fps,码率 320 Kbps。
- VIDEO_PROFILE_LANDSCAPE_360P_8
- 37:分辨率 480 × 360,帧率 30 fps,码率 490 Kbps。
- VIDEO_PROFILE_LANDSCAPE_360P_9
-
38:分辨率 640 × 360,帧率 15 fps,码率 800 Kbps。
注意: 该视频属性仅适用于直播频道场景。 - VIDEO_PROFILE_LANDSCAPE_360P_10
-
39:分辨率 640 × 360,帧率 24 fps,码率 800 Kbps。
注意: 该视频属性仅适用于直播频道场景。 - VIDEO_PROFILE_LANDSCAPE_360P_11
-
100: 分辨率 640 × 360,帧率 24 fps,码率 1000 Kbps。
注意: 该视频属性仅适用于直播频道场景。 - VIDEO_PROFILE_LANDSCAPE_480P
- 40:分辨率 640 × 480,帧率 15 fps,码率 500 Kbps。
- VIDEO_PROFILE_LANDSCAPE_480P_3
- 42:分辨率 480 × 480,帧率 15 fps,码率 400 Kbps。
- VIDEO_PROFILE_LANDSCAPE_480P_4
- 43:分辨率 640 × 480,帧率 30 fps,码率 750 Kbps。
- VIDEO_PROFILE_LANDSCAPE_480P_6
- 45:分辨率 480 × 480,帧率 30 fps,码率 600 Kbps。
- VIDEO_PROFILE_LANDSCAPE_480P_8
- 47:分辨率 848 × 480,帧率 15 fps,码率 610 Kbps。
- VIDEO_PROFILE_LANDSCAPE_480P_9
- 48:分辨率 848 × 480,帧率 30 fps,码率 930 Kbps。
- VIDEO_PROFILE_LANDSCAPE_480P_10
- 49:分辨率 640 × 480,帧率 10 fps,码率 400 Kbps。
- VIDEO_PROFILE_LANDSCAPE_720P
- 50:分辨率 1280 × 720,帧率 15 fps,码率 1130 Kbps。
- VIDEO_PROFILE_LANDSCAPE_720P_3
- 52:分辨率 1280 × 720,帧率 30 fps,码率 1710 Kbps。
- VIDEO_PROFILE_LANDSCAPE_720P_5
- 54:分辨率 960 × 720,帧率 15 fps,码率 910 Kbps。
- VIDEO_PROFILE_LANDSCAPE_720P_6
- 55:分辨率 960 × 720,帧率 30 fps,码率 1380 Kbps。
- VIDEO_PROFILE_LANDSCAPE_1080P
- 60:分辨率 1920 × 1080,帧率 15 fps,码率 2080 Kbps。
- VIDEO_PROFILE_LANDSCAPE_1080P_3
- 62:分辨率 1920 × 1080,帧率 30 fps,码率 3150 Kbps。
- VIDEO_PROFILE_LANDSCAPE_1080P_5
- 64:分辨率 1920 × 1080,帧率 60 fps,码率 4780 Kbps。
- VIDEO_PROFILE_PORTRAIT_120P
- 1000: 分辨率 120 × 160,帧率 15 fps,码率 65 Kbps。
- VIDEO_PROFILE_PORTRAIT_120P_3
- 1002: 分辨率 120 × 120,帧率 15 fps,码率 50 Kbps。
- VIDEO_PROFILE_PORTRAIT_180P
- 1010: 分辨率 180 × 320,帧率 15 fps,码率 140 Kbps。
- VIDEO_PROFILE_PORTRAIT_180P_3
- 1012: 分辨率 180 × 180,帧率 15 fps,码率 100 Kbps。
- VIDEO_PROFILE_PORTRAIT_180P_4
- 1013: 分辨率 180 × 240,帧率 15 fps,码率 120 Kbps。
- VIDEO_PROFILE_PORTRAIT_240P
- 1020: 分辨率 240 × 320,帧率 15 fps,码率 200 Kbps。
- VIDEO_PROFILE_PORTRAIT_240P_3
- 1022: 分辨率 240 × 240,帧率 15 fps,码率 140 Kbps。
- VIDEO_PROFILE_PORTRAIT_240P_4
- 1023: 分辨率 240 × 424,帧率 15 fps,码率 220 Kbps。
- VIDEO_PROFILE_PORTRAIT_360P
- 1030: 分辨率 360 × 640,帧率 15 fps,码率 400 Kbps。
- VIDEO_PROFILE_PORTRAIT_360P_3
- 1032: 分辨率 360 × 360,帧率 15 fps,码率 260 Kbps。
- VIDEO_PROFILE_PORTRAIT_360P_4
- 1033: 分辨率 360 × 640,帧率 30 fps,码率 600 Kbps。
- VIDEO_PROFILE_PORTRAIT_360P_6
- 1035: 分辨率 360 × 360,帧率 30 fps,码率 400 Kbps。
- VIDEO_PROFILE_PORTRAIT_360P_7
- 1036: 分辨率 360 × 480,帧率 15 fps,码率 320 Kbps。
- VIDEO_PROFILE_PORTRAIT_360P_8
- 1037: 分辨率 360 × 480,帧率 30 fps,码率 490 Kbps。
- VIDEO_PROFILE_PORTRAIT_360P_9
-
1038: 分辨率 360 × 640,帧率 15 fps,码率 800 Kbps。
注意: 该视频属性仅适用于直播频道场景。 - VIDEO_PROFILE_PORTRAIT_360P_10
-
1039: 分辨率 360 × 640,帧率 24 fps,码率 800 Kbps。
注意: 该视频属性仅适用于直播频道场景。 - VIDEO_PROFILE_PORTRAIT_360P_11
-
1100: 分辨率 360 × 640,帧率 24 fps,码率 1000 Kbps。
注意: 该视频属性仅适用于直播频道场景。 - VIDEO_PROFILE_PORTRAIT_480P
- 1040: 分辨率 480 × 640,帧率 15 fps,码率 500 Kbps。
- VIDEO_PROFILE_PORTRAIT_480P_3
- 1042: 分辨率 480 × 480,帧率 15 fps,码率 400 Kbps。
- VIDEO_PROFILE_PORTRAIT_480P_4
- 1043: 分辨率 480 × 640,帧率 30 fps,码率 750 Kbps。
- VIDEO_PROFILE_PORTRAIT_480P_6
- 1045: 分辨率 480 × 480,帧率 30 fps,码率 600 Kbps。
- VIDEO_PROFILE_PORTRAIT_480P_8
- 1047: 分辨率 480 × 848,帧率 15 fps,码率 610 Kbps。
- VIDEO_PROFILE_PORTRAIT_480P_9
- 1048: 分辨率 480 × 848,帧率 30 fps,码率 930 Kbps。
- VIDEO_PROFILE_PORTRAIT_480P_10
- 1049: 分辨率 480 × 640,帧率 10 fps,码率 400 Kbps。
- VIDEO_PROFILE_PORTRAIT_720P
- 1050: 分辨率 分辨率 720 × 1280,帧率 15 fps,码率 1130 Kbps。
- VIDEO_PROFILE_PORTRAIT_720P_3
- 1052: 分辨率 分辨率 720 × 1280,帧率 30 fps,码率 1710 Kbps。
- VIDEO_PROFILE_PORTRAIT_720P_5
- 1054: 分辨率 720 × 960,帧率 15 fps,码率 910 Kbps。
- VIDEO_PROFILE_PORTRAIT_720P_6
- 1055: 分辨率 720 × 960,帧率 30 fps,码率 1380 Kbps。
- VIDEO_PROFILE_PORTRAIT_1080P
- 1060: 分辨率 1080 × 1920,帧率 15 fps,码率 2080 Kbps。
- VIDEO_PROFILE_PORTRAIT_1080P_3
- 1062: 分辨率 1080 × 1920,帧率 30 fps,码率 3150 Kbps。
- VIDEO_PROFILE_PORTRAIT_1080P_5
- 1064: 分辨率 1080 × 1920,帧率 60 fps,码率 4780 Kbps。
- VIDEO_PROFILE_DEFAULT
- (默认)分辨率 640 × 360,帧率 15 fps,码率 400 Kbps。
VIRTUAL_BACKGROUND_SOURCE_STATE_REASON
虚拟背景开启出错的原因或开启成功的提示。
- 自从
- v3.5.0
枚举值
- VIRTUAL_BACKGROUND_SOURCE_STATE_REASON_SUCCESS
- 0: 虚拟背景已成功开启。
- VIRTUAL_BACKGROUND_SOURCE_STATE_REASON_IMAGE_NOT_EXIST
- 1: 自定义的背景图不存在。请检查 VirtualBackgroundSource 中 source 的值。
- VIRTUAL_BACKGROUND_SOURCE_STATE_REASON_COLOR_FORMAT_NOT_SUPPORTED
- 2: 自定义的背景图颜色格式出错。请检查 VirtualBackgroundSource 中 color 的值。
- VIRTUAL_BACKGROUND_SOURCE_STATE_REASON_DEVICE_NOT_SUPPORTED
- 3: 设备不支持使用虚拟背景。
VOICE_BEAUTIFIER_PRESET
预设的美声效果选项。
枚举值
- VOICE_BEAUTIFIER_OFF
- 原声,即关闭美声效果。
- CHAT_BEAUTIFIER_MAGNETIC
-
磁性(男)。
注意: 该设置仅对男声有效,请勿用于设置女声,否则音频会失真。 - CHAT_BEAUTIFIER_FRESH
-
清新(女)。
注意: 该设置仅对女声有效,请勿用于设置男声,否则音频会失真。 - CHAT_BEAUTIFIER_VITALITY
-
活力(女)。
注意: 该设置仅对女声有效,请勿用于设置男声,否则音频会失真。 - SINGING_BEAUTIFIER
-
- 自从
- v3.3.0
歌唱美声。
- 如果调用 SetVoiceBeautifierPreset(SINGING_BEAUTIFIER),你可以美化男声并添加歌声在小房间的混响效果。请勿用于设置女声,否则音频会失真。
- 如果调用 SetVoiceBeautifierParameters(SINGING_BEAUTIFIER, param1, param2),你可以美化男声或女声并添加混响效果。
- TIMBRE_TRANSFORMATION_VIGOROUS
- 浑厚。
- TIMBRE_TRANSFORMATION_DEEP
- 低沉。
- TIMBRE_TRANSFORMATION_MELLOW
- 圆润。
- TIMBRE_TRANSFORMATION_FALSETTO
- 假音。
- TIMBRE_TRANSFORMATION_FULL
- 饱满。
- TIMBRE_TRANSFORMATION_CLEAR
- 清澈。
- TIMBRE_TRANSFORMATION_RESOUNDING
- 高亢。
- TIMBRE_TRANSFORMATION_RINGING
- 嘹亮。
VOICE_CHANGER_PRESET
预设的语音变声效果。
- 弃用
- 自 v3.2.0 废弃。
枚举值
- VOICE_CHANGER_OFF
- 原声,即关闭语音变声。
- VOICE_CHANGER_OLDMAN
- 变声:老男人。
- VOICE_CHANGER_BABYBOY
- 变声:小男孩。
- VOICE_CHANGER_BABYGIRL
- 变声:小女孩。
- VOICE_CHANGER_ZHUBAJIE
- 变声:猪八戒。
- VOICE_CHANGER_ETHEREAL
- 变声:空灵。
- VOICE_CHANGER_HULK
- 变声:绿巨人。
- VOICE_BEAUTY_VIGOROUS
- 美音:浑厚。
- VOICE_BEAUTY_DEEP
- 美音:深沉。
- VOICE_BEAUTY_MELLOW
- 美音:圆润。
- VOICE_BEAUTY_FALSETTO
- 美音:假音。
- VOICE_BEAUTY_FULL
- 美音:饱满。
- VOICE_BEAUTY_CLEAR
- 美音:清澈。
- VOICE_BEAUTY_RESOUNDING
- 美音:高亢。
- VOICE_BEAUTY_RINGING
- 美音:嘹亮。
- VOICE_BEAUTY_SPACIAL
- 美音:空旷。
- GENERAL_BEAUTY_VOICE_MALE_MAGNETIC
- 语聊美声:磁性(男)。此枚举为男声定制化效果,不适用于女声。若女声使用此音效设置,则音频可能会产生失真。
- GENERAL_BEAUTY_VOICE_FEMALE_FRESH
- 语聊美声:清新(女)。此枚举为女声定制化效果,不适用于男声。若男声使用此音效设置,则音频可能会产生失真。
- GENERAL_BEAUTY_VOICE_FEMALE_VITALITY
- 语聊美声:活力(女)。此枚举为女声定制化效果,不适用于男声。若男声使用此音效设置,则音频可能会产生失真。
WLACC_MESSAGE_REASON
Wi-Fi 连接质量不佳的原因。
枚举值
- WLACC_MESSAGE_REASON_WEAK_SIGNAL
- 0: Wi-Fi 信号弱。
- WLACC_MESSAGE_REASON_CHANNEL_CONGESTION
- 1: 网络拥塞。
WLACC_SUGGEST_ACTION
改善 Wi-Fi 连接质量的操作建议。
枚举值
- WLACC_SUGGEST_ACTION_CLOSE_TO_WIFI
- 0: 由于路由器接收到的 Wi-Fi 信号弱,请用户靠近路由器。
- WLACC_SUGGEST_ACTION_CONNECT_SSID
- 1: 请用户连接到指定的无线网络。无线网络名称(SSID)详见
wlAccMsg
参数。 - WLACC_SUGGEST_ACTION_CHECK_5G
- 2: 当前路由器不支持 5G 频道。请用户检查路由器是否支持并开启了 5G 频道,或更换支持 5G 频道的路由器。开启 5G 频道的步骤详见
wlAccMsg
参数。 - WLACC_SUGGEST_ACTION_MODIFY_SSID
- 3: 2.4G 频段和 5G 频道的网络名称(SSID)相同。请用户修改 2.4G 频段或 5G 频道的网络名称。修改步骤详见
wlAccMsg
参数。
AudioFileInfo
音频文件信息。在 OnRequestAudioFileInfo 中报告。
public struct AudioFileInfo { public string filePath; public int durationMs; };
属性
- filePath
- 音频文件路径。
- durationMs
- 音频文件时长 (ms)。
AudioFrame
AudioFrame 定义。
public class AudioFrame { public AudioFrame() { } public AudioFrame(AUDIO_FRAME_TYPE type, int samples, int bytesPerSample, int channels, int samplesPerSec, byte[] buffer, long renderTimeMs, int avsync_type) { this.type = type; this.samples = samples; this.bytesPerSample = bytesPerSample; this.channels = channels; this.samplesPerSec = samplesPerSec; this.buffer = buffer; this.renderTimeMs = renderTimeMs; this.avsync_type = avsync_type; } public AUDIO_FRAME_TYPE type { set; get; } public int samples { set; get; } public int bytesPerSample { set; get; } public int channels { set; get; } public int samplesPerSec { set; get; } //sampling rate public byte[] buffer { set; get; } public IntPtr bufferPtr { set; get; } public long renderTimeMs { set; get; } public int avsync_type { set; get; } }
属性
- type
-
音频帧类型,详见 AUDIO_FRAME_TYPE。
- samples
- 每个声道的采样点数。
- bytesPerSample
- 每个采样点的字节数: 对于 PCM 来说,一般使用 16 bit,即两个字节。
- channels
-
声道数量(如果是立体声,数据是交叉的)。
- 1: 单声道
- 2: 双声道
- samplesPerSec
- 每声道每秒的采样点数。
- buffer
-
声音数据缓存区(如果是立体声,数据是交叉存储的)。
缓存区数据大小
buffer
=samples
×channels
×bytesPerSample
。 - renderTimeMs
-
外部音频帧的渲染时间戳。
你可以使用该时间戳还原音频帧顺序;在有视频的场景中(包含使用外部视频源的场景),该参数可以用于实现音视频同步。
- avsync_type
- 保留参数。
AudioRecordingConfiguration
客户端录音配置。
public class AudioRecordingConfiguration { public AudioRecordingConfiguration() { filePath = null; recordingQuality = AUDIO_RECORDING_QUALITY_TYPE.AUDIO_RECORDING_QUALITY_MEDIUM; recordingPosition = AUDIO_RECORDING_POSITION.AUDIO_RECORDING_POSITION_MIXED_RECORDING_AND_PLAYBACK; recordingSampleRate = 32000; recordingChannel = 1; } public AudioRecordingConfiguration(string filePath, AUDIO_RECORDING_QUALITY_TYPE recordingQuality, AUDIO_RECORDING_POSITION recordingPosition, int recordingSampleRate, int recordingChannel ) { this.filePath = filePath; this.recordingQuality = recordingQuality; this.recordingPosition = recordingPosition; this.recordingSampleRate = recordingSampleRate; this.recordingChannel = recordingChannel; } public string filePath { set; get; } public AUDIO_RECORDING_QUALITY_TYPE recordingQuality { set; get; } public AUDIO_RECORDING_POSITION recordingPosition { set; get; } public int recordingSampleRate { set; get; } public int recordingChannel { set; get; } }
属性
- filePath
-
录音文件在本地保存的绝对路径,需精确到文件名及格式。例如:
C:\music\audio.aac
。注意: 请确保你指定的路径存在并且可写。 - recordingChannel
-
录制的音频声道。支持如下取值:
- 1: (默认)单声道。
- 2: 双声道。
注意: 实际录制的音频声道与你采集的音频声道有关:如果采集的音频为单声道, recordingChannel 为 2,则录制的音频为经过单声道数据拷贝后的双声道数据,而不是立体声。如果采集的音频为双声道, recordingChannel 为 1,则录制的音频为经过双声道数据混合后的单声道数据。此外,集成方案也会影响最终录制的音频声道。因此,如果你希望录制立体声,请联系技术支持协助。 - recordingQuality
-
录音音质。详见 AUDIO_RECORDING_QUALITY_TYPE。
注意: 该参数仅适用于 AAC 文件。 - recordingPosition
- 录音内容。详见 AUDIO_RECORDING_POSITION。
- recordingSampleRate
- 录音采样率 (Hz)。
- 16000
- (默认)32000
- 44100
- 48000
注意: 如果把该参数设为 44100 或 48000,为保证录音效果,声网推荐录制 WAV 文件 或 recordingQuality 为 AUDIO_RECORDING_QUALITY_MEDIUM 或 AUDIO_RECORDING_QUALITY_HIGH 的 AAV 文件。
AudioVolumeInfo
用户音量信息。
public class AudioVolumeInfo { public AudioVolumeInfo() { } public AudioVolumeInfo(uint uid, uint volume, uint vad, string channelId) { this.uid = uid; this.volume = volume; this.vad = vad; this.channelId = channelId; } public uint uid { set; get; } public uint volume { set; get; } public uint vad { set; get; } public string channelId { set; get; } }
属性
- uid
-
用户 ID。
- 在本地用户的回调中,uid 为 0。
- 在远端用户的回调中,uid 为瞬时音量最高的远端用户(最多 3 位)的 ID。
- volume
- 用户的音量,取值范围为 [0,255]。
- vad
-
本地用户的人声状态。
- 0:本地无人声。
- 1:本地有人声。
注意:- vad 无法报告远端用户的人声状态。对于远端用户,vad 的值始终为 0。
- 如需使用此参数,请在调用 EnableAudioVolumeIndication 时设置 reportVad 为
true
。
- channelId
- 用户所在频道的频道名称。
BeautyOptions
美颜选项。
public class BeautyOptions { public BeautyOptions() { lighteningContrastLevel = LIGHTENING_CONTRAST_LEVEL.LIGHTENING_CONTRAST_NORMAL; } public BeautyOptions( LIGHTENING_CONTRAST_LEVEL lighteningContrastLevel, float lighteningLevel, float smoothnessLevel, float rednessLevel, float sharpnessLevel) { this.lighteningContrastLevel = lighteningContrastLevel; this.lighteningLevel = lighteningLevel; this.smoothnessLevel = smoothnessLevel; this.rednessLevel = rednessLevel; this.sharpnessLevel = sharpnessLevel; } public LIGHTENING_CONTRAST_LEVEL lighteningContrastLevel { set; get; } public float lighteningLevel { set; get; } public float smoothnessLevel { set; get; } public float rednessLevel { set; get; } public float sharpnessLevel { set; get; } }
属性
- lighteningContrastLevel
-
对比度,常与
lighteningLevel
搭配使用。取值越大,明暗对比程度越大。详见 LIGHTENING_CONTRAST_LEVEL。 - lighteningLevel
- 美白程度,取值范围为 [0.0,1.0],其中 0.0 表示原始亮度,默认值为 。取值越大,美白程度越大。
- smoothnessLevel
- 磨皮程度,取值范围为 [0.0,1.0],其中 0.0 表示原始磨皮程度,默认值为 0.5。取值越大,磨皮程度越大。
- rednessLevel
- 红润度,取值范围为 [0.0,1.0],其中 0.0 表示原始红润度,默认值为 0.1。取值越大,红润程度越大。
- sharpnessLevel
- 锐化程度,取值范围为 [0.0,1.0],其中 0.0 表示原始锐度,默认值为 0.3。取值越大,锐化程度越大。
CameraCapturerConfiguration
摄像头采集配置。
public class CameraCapturerConfiguration { public CameraCapturerConfiguration() { preference = CAPTURER_OUTPUT_PREFERENCE.CAPTURER_OUTPUT_PREFERENCE_AUTO; captureWidth = 640; captureHeight = 480; cameraDirection = null; } public CameraCapturerConfiguration(int captureWidth, int captureHeight, CAMERA_DIRECTION? cameraDirection = null) { preference = CAPTURER_OUTPUT_PREFERENCE.CAPTURER_OUTPUT_PREFERENCE_MANUAL; this.captureWidth = captureWidth; this.captureHeight = captureHeight; this.cameraDirection = cameraDirection; } public CameraCapturerConfiguration(CAPTURER_OUTPUT_PREFERENCE preference, int captureWidth, int captureHeight, CAMERA_DIRECTION? cameraDirection = null) { this.preference = preference; this.captureWidth = captureWidth; this.captureHeight = captureHeight; this.cameraDirection = cameraDirection; } public CAPTURER_OUTPUT_PREFERENCE preference { set; get; } public int captureWidth { set; get; } public int captureHeight { set; get; } public CAMERA_DIRECTION? cameraDirection { set; get; } }
属性
- preference
- 摄像头采集偏好。详见 CAPTURER_OUTPUT_PREFERENCE。
- captureWidth
-
- 自从
- v3.3.0
本地采集的视频宽度 (px)。如果你需要自定义本地采集的视频宽度,请先将 preference 设为 CAPTURER_OUTPUT_PREFERENCE_MANUAL(3),再通过 captureWidth 设置采集的视频宽度。
- captureHeight
-
- 自从
- v3.3.0
本地采集的视频高度 (px)。如果你需要自定义本地采集的视频高度,请先将 preference 设为 CAPTURER_OUTPUT_PREFERENCE_MANUAL(3),再通过 captureHeight 设置采集的视频高度。
- cameraDirection
-
该参数仅适用于 Android 和 iOS 平台。
摄像头方向。详见 CAMERA_DIRECTION。
ChannelMediaInfo
ChannelMediaInfo 类定义。
struct ChannelMediaInfo { const char* channelName; const char* token; uid_t uid; };
public class ChannelMediaInfo { public ChannelMediaInfo() { } public ChannelMediaInfo(string channelName, string token, uint uid) { this.channelName = channelName; this.token = token; this.uid = uid; } public string channelName { set; get; } public string token { set; get; } public uint uid { set; get; } }
属性
- channelName
- 频道名。
- token
- 能加入频道的 Token。
- uid
- 用户 ID。
ChannelMediaOptions
频道媒体设置选项。
public class ChannelMediaOptions { public ChannelMediaOptions() { autoSubscribeAudio = true; autoSubscribeVideo = true; publishLocalAudio = true; publishLocalVideo = true; } public ChannelMediaOptions(bool autoSubscribeAudio, bool autoSubscribeVideo, bool publishLocalAudio, bool publishLocalVideo) { this.autoSubscribeAudio = autoSubscribeAudio; this.autoSubscribeVideo = autoSubscribeVideo; this.publishLocalAudio = publishLocalAudio; this.publishLocalVideo = publishLocalVideo; } public bool autoSubscribeAudio { set; get; } public bool autoSubscribeVideo { set; get; } public bool publishLocalAudio { set; get; } public bool publishLocalVideo { set; get; } }
- 自从
- v3.0.0
属性
- autoSubscribeAudio
- 是否自动订阅频道内所有远端音频流:
true
:(默认)订阅。false
: 不订阅。
- audioSubscribeVideo
- 是否自动订阅频道内所有远端视频流:
true
:(默认)订阅。false
: 不订阅。
- publishLocalAudio
- 是否自动在频道内发布本地音频流:
true
:(默认)发布。false
: 不发布。
该成员功能与 MuteLocalAudioStream 相同。加入频道后,你可以通过
muteLocalAudioStream
方法重新设置是否在频道内发布本地音频流。 - publishLocalVideo
- 是否自动在频道内发布本地视频流:
true
:(默认)发布。false
: 不发布。
该成员功能与 MuteLocalVideoStream 相同。加入频道后,你可以通过
muteLocalVideoStream
方法重新设置是否在频道内发布本地视频流。
ChannelMediaRelayConfiguration
ChannelMediaRelayConfiguration 类定义。
public class ChannelMediaRelayConfiguration { public ChannelMediaRelayConfiguration() { srcInfo = null; destInfos = new ChannelMediaInfo[0]; destCount = 0; } public ChannelMediaRelayConfiguration(ChannelMediaInfo srcInfo, ChannelMediaInfo[] destInfos, int destCount) { this.srcInfo = srcInfo; this.destInfos = destInfos ?? new ChannelMediaInfo[0]; this.destCount = destCount; } public ChannelMediaInfo srcInfo { set; get; } public ChannelMediaInfo[] destInfos { set; get; } public int destCount { set; get; } }
属性
- srcInfo
-
源频道信息 ChannelMediaInfo,包含如下成员:
channelName
:源频道名。默认值为NULL
,表示 SDK 填充当前的频道名。uid
:标识源频道中的转发媒体流的 UID。默认值为 0,表示 SDK 随机分配一个uid
。请确保设为 0。token
:能加入源频道的token
。由你在srcInfo
中设置的channelName
和uid
生成。- 如未启用 App Certificate,可直接将该参数设为默认值
NULL
,表示 SDK 填充 App ID。 - 如已启用 App Certificate,则务必填入使用
channelName
和uid
生成的token
,且其中的uid
必须为 0。
- 如未启用 App Certificate,可直接将该参数设为默认值
- destInfos
-
目标频道信息 ChannelMediaInfo,包含如下成员:
channelName
:目标频道的频道名。uid
:标识目标频道中的转发媒体流的 UID。取值范围为 0 到(232-1),请确保与目标频道中的所有 UID 不同。默认值为 0,表示 SDK 随机分配一个 UID。请确保不要将该参数设为目标频道的主播的 UID,并与目标频道中的所有 UID 都不同。token
:能加入目标频道的token
。由你在destInfos
中设置的channelName
和uid
生成。- 如未启用 App Certificate,可直接将该参数设为默认值
NULL
,表示 SDK 填充 App ID。 - 如已启用 App Certificate,则务必填入使用
channelName
和uid
生成的token
。
- 如未启用 App Certificate,可直接将该参数设为默认值
- destCount
- 目标频道数量,默认值为 0,取值范围为 [0,4]。该参数应与你在
destInfo
中定义的 ChannelMediaInfo 数组的数目一致。
ClientRoleOptions
用户角色具体设置。
struct ClientRoleOptions { AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel; ClientRoleOptions() : audienceLatencyLevel(AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY) {} };
public class ClientRoleOptions { public ClientRoleOptions() { audienceLatencyLevel = AUDIENCE_LATENCY_LEVEL_TYPE.AUDIENCE_LATENCY_LEVEL_LOW_LATENCY; } public ClientRoleOptions(AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel) { this.audienceLatencyLevel = audienceLatencyLevel; } public AUDIENCE_LATENCY_LEVEL_TYPE audienceLatencyLevel; }
属性
- audienceLatencyLevel
- 观众端延时级别。详见 AUDIENCE_LATENCY_LEVEL_TYPE。
ColorEnhanceOptions
色彩增强选项。
public class ColorEnhanceOptions { public ColorEnhanceOptions() { } public ColorEnhanceOptions(float strengthLevel, float skinProtectLevel) { this.strengthLevel = strengthLevel; this.skinProtectLevel = skinProtectLevel; } public float strengthLevel { set; get; } public float skinProtectLevel { set; get; } };
属性
- strengthLevel
- 色彩增强程度。取值范围为 [0.0,1.0]。
0.0
为默认值,表示不对视频进行色彩增强。取值越大,色彩增强的程度越大。 - skinProtectLevel
- 肤色保护程度。取值范围为 [0.0,1.0]。
0.0
表示不对肤色进行保护。取值越大,肤色保护的程度越大。默认值为1.0
。色彩增强程度较大时,人像肤色会明显失真,你需要设置肤色保护程度;肤色保护程度较大时,色彩增强效果会略微降低。因此,为获取最佳的色彩增强效果,声网建议你调节 strengthLevel 和 skinProtectLevel 以获取最合适的取值。
ContentInspectConfig
视频截图上传配置。
public struct ContentInspectConfig { public string extraInfo; public ContentInspectModule[] modules; public int moduleCount; };
属性
- extraInfo
-
附加信息,最大长度为 1024 字节。
SDK 会将附加信息和截图一起上传至声网服务器;截图完成后,声网服务器会将附加信息随回调通知一起发送给你的服务器。
- modules
-
功能模块。详见 ContentInspectModule 。
注: 一个功能模块最多只能配置一个实例。目前仅支持截图上传功能。 - moduleCount
- 功能模块数,即配置的 ContentInspectModule 实例的数量。必须与 modules 中配置的实例个数一致。最大值为 32。
ContentInspectModule
ContentInspectModule 结构体,用于配置视频截图上传的频率。
public struct ContentInspectModule { public int type; public int interval; };
- 自从
- v3.5.2
属性
- type
-
功能模块的类型,详见
- 0: (默认)该功能模块无实际功能。请不要设为该值。
- 2: 截图。SDK 会对视频流进行截图并上传。
- interval
- 视频截图上传的间隔,单位为秒,取值必须大于 0。默认值为 0,表示不进行截图上传。推荐值为 10 秒,你也可以根据业务需求自行调整。
DeviceInfo
音频设备信息。
public struct DeviceInfo { public string deviceName { set; get; } public string deviceId { set; get; } }
属性
DataStreamConfig
数据流设置。
struct DataStreamConfig { bool syncWithAudio; bool ordered; };
下表展示不同的参数设置下,SDK 的行为:
syncWithAudio |
ordered |
SDK 行为 |
---|---|---|
false |
false |
接收端接收到数据包后,SDK 立刻触发 OnStreamMessage 回调。 |
true |
false |
如果数据包的延迟在音频延迟的范围内,SDK 会在播放音频的同时触发与该音频包同步的 OnStreamMessage 回调。如果数据包的延迟超出了音频延迟,SDK 会在接收到该数据包时立刻触发 OnStreamMessage 回调;此情况会造成音频包和数据包的不同步。 |
false |
true |
如果数据包的延迟在 5 秒以内,SDK 会修正数据包的乱序问题。如果数据包的延迟超出 5 秒,SDK 会丢弃该数据包。 |
true |
true |
如果数据包的延迟在音频延迟的范围内,SDK 会修正数据包的乱序问题。如果数据包的延迟超出音频延迟,SDK 会丢弃该数据包。 |
属性
- syncWithAudio
-
是否与本地发送的音频流同步。
true
: 数据流与音频流同步。false
: 数据流与音频流不同步。
- ordered
-
是否保证接收到的数据按发送的顺序排列。
true
: 保证 SDK 按照发送方发送的顺序输出数据包。false
: 不保证 SDK 按照发送方发送的顺序输出数据包。
true
。
EchoTestConfiguration
音视频通话回路测试的配置。
public struct EchoTestConfiguration { public IntPtr view; public bool enableAudio; public bool enableVideo; public string token; public string channelId; };
属性
- view
- 用于渲染本地用户视频的视图。该参数仅适用于测试视频设备的场景,即该结构体中 enableVideo 为 true。
- enableAudio
- 是否开启音频设备:
- true: (默认) 开启音频设备。如需测试音频设备,请设为 true。
- false: 关闭音频设备。
- enableVideo
- 是否开启视频设备:
- true: (默认) 开启音频设备。如需测试视频设备,请设为 true。
- false: 关闭视频设备。
- token
- 用于保证音视频通话回路测试安全性的 Token。如果你在声网控制台未启用 App 证书,则不需要向该参数传值;
如果你在声网控制台已启用 App 证书,则必须向该参数传入 Token,且在你生成 Token 时使用的
uid
必须为 0xFFFFFFFF, 使用的频道名必须为标识每个音视频通话回路测试的频道名。服务端生成 Token 的方式请参考使用 Token 鉴权。 - channelId
- 标识每个音视频通话回路测试的频道名。为保证回路测试功能正常,同一个项目(App ID) 的各终端用户在不同设备上做音视频通话回路测试时,传入的标识每个回路测试的频道名不能相同。
EncryptionConfig
配置内置加密模式和密钥。
public class EncryptionConfig { public EncryptionConfig() { encryptionMode = ENCRYPTION_MODE.AES_128_XTS; encryptionKey = ""; encryptionKdfSalt = new byte[32]; } public EncryptionConfig(ENCRYPTION_MODE encryptionMode, string encryptionKey, byte[] encryptionKdfSalt) { this.encryptionMode = encryptionMode; this.encryptionKey = encryptionKey; this.encryptionKdfSalt = encryptionKdfSalt; } public ENCRYPTION_MODE encryptionMode { set; get; } public string encryptionKey { set; get; } private byte[] encryptionKdfSalt32 = new byte[32]; public byte[] encryptionKdfSalt { set { Buffer.BlockCopy(encryptionKdfSalt, 0, encryptionKdfSalt32, 0, 32); } get { return encryptionKdfSalt32; } } }
属性
- encryptionMode
-
内置加密模式。详见 ENCRYPTION_MODE。声网推荐使用
AES_128_GCM2
或AES_256_GCM2
加密模式。这两种模式支持使用盐,安全性更高。 - encryptionKey
-
内置加密密钥,字符串类型。
注意: 如果未指定该参数或将该参数设置为NULL
,则无法启用内置加密,且 SDK 会返回错误码-2
。 - encryptionKdfSalt
-
- 自从
- v3.4.5
盐,长度为 32 字节。声网推荐你在服务端使用 OpenSSL 生成盐,详见《媒体流加密》。
注意: 只有在AES_128_GCM2
或AES_256_GCM2
加密模式下,该参数才生效。此时,需确保填入该参数的值不全为0
。
ExternalVideoFrame
外部视频帧。
public class ExternalVideoFrame { public ExternalVideoFrame() { } public ExternalVideoFrame(VIDEO_BUFFER_TYPE type, VIDEO_PIXEL_FORMAT format, byte[] buffer, int stride, int height, long timestamp, int cropLeft = 0, int cropTop = 0, int cropRight = 0, int cropBottom = 0, int rotation = 0) { this.type = type; this.format = format; this.buffer = buffer; this.stride = stride; this.height = height; this.cropLeft = cropLeft; this.cropTop = cropTop; this.cropRight = cropRight; this.cropBottom = cropBottom; this.rotation = rotation; this.timestamp = timestamp; } public VIDEO_BUFFER_TYPE type { set; get; } public VIDEO_PIXEL_FORMAT format { set; get; } public byte[] buffer { set; get; } public int stride { set; get; } public int height { set; get; } public int cropLeft { set; get; } public int cropTop { set; get; } public int cropRight { set; get; } public int cropBottom { set; get; } public int rotation { set; get; } public long timestamp { set; get; } }
属性
- type
-
视频类型。详见 VIDEO_BUFFER_TYPE。
- format
- 像素格式。详见 VIDEO_PIXEL_FORMAT。
- buffer
- 视频 buffer。
- stride
- 传入视频帧的行间距,单位为像素而不是字节。对于 Texture,该值指的是 Texture 的宽度。
- height
- 传入视频帧的高度。
- cropLeft
- 原始数据相关字段。指定左边裁剪掉的像素数量。默认为 0。
- cropTop
- 原始数据相关字段。指定顶边裁剪掉的像素数量。默认为 0。
- cropRight
- 原始数据相关字段。指定右边裁剪掉的像素数量。默认为 0。
- cropBottom
- 原始数据相关字段。指定底边裁剪掉的像素数量。默认为 0。
- rotation
- 原始数据相关字段。指定是否对传入的视频组做顺时针旋转操作,可选值为 0, 90, 180, 270。默认为 0。
- timestamp
- 传入的视频帧的时间戳,以毫秒为单位。不正确的时间戳会导致丢帧或者音视频不同步。
IPacketObserver
IPacketObserver 定义。
onReceiveAudioPacket
本地用户收到音频包回调。
virtual bool onReceiveAudioPacket(Packet& packet) = 0;
参数
- packet
- 收到的音频包,详见 Packet 。
返回值
true
: 成功接收音频包。false
: 丢弃音频包。
onReceiveVideoPacket
本地用户收到视频包回调。
virtual bool onReceiveVideoPacket(Packet& packet) = 0;
参数
- packet
- 收到的视频包,详见 Packet 。
返回值
true
: 成功接收视频包。false
: 丢弃视频包。
onSendAudioPacket
已发送音频包回调。
virtual bool onSendAudioPacket(Packet& packet) = 0;
参数
- packet
- 发送的音频包,详见 Packet 。
返回值
true
: 成功发送音频包。false
: 丢弃音频包。
onSendVideoPacket
已发送视频包回调。
virtual bool onSendVideoPacket(Packet& packet) = 0;
参数
- packet
- 发送的视频包,详见 Packet 。
返回值
true
: 成功发送视频包;false
: 丢弃视频包。
Packet
Packet 定义。
public struct Packet { public IntPtr buffer; public IntPtr size; };
属性
- buffer
-
需要发送或接收的数据的缓存地址。
注意: 声网建议 buffer 值不要小于 2048 字节,否则有可能会出现未定义行为(例如崩溃)。 - size
- 将要发送或接收的数据的缓存大小。
LastmileProbeConfig
Last mile 网络探测配置。
public class LastmileProbeConfig { public LastmileProbeConfig() { } public LastmileProbeConfig(bool probeUplink, bool probeDownlink, uint expectedUplinkBitrate, uint expectedDownlinkBitrate) { this.probeUplink = probeUplink; this.probeDownlink = probeDownlink; this.expectedUplinkBitrate = expectedUplinkBitrate; this.expectedDownlinkBitrate = expectedDownlinkBitrate; } public bool probeUplink { set; get; } public bool probeDownlink { set; get; } public uint expectedUplinkBitrate { set; get; } public uint expectedDownlinkBitrate { set; get; } }
属性
- probeUplink
-
是否探测上行网络。有些用户,如直播频道中的普通观众,不需要进行网络探测:
true
: 探测。false
: 不探测。
- probeDownlink
-
是否探测下行网络。
true
: 探测。false
: 不探测。
- expectedUplinkBitrate
- 用户期望的最高发送码率,单位为 bps,范围为 [100000,5000000]。声网推荐参考 SetVideoEncoderConfiguration 中的码率值设置该参数的值。
- expectedDownlinkBitrate
- 用户期望的最高接收码率,单位为 bps,范围为 [100000,5000000]。
LastmileProbeOneWayResult
上行或下行 Last mile 网络质量探测结果。
public class LastmileProbeOneWayResult { public LastmileProbeOneWayResult() { } public LastmileProbeOneWayResult(uint packetLossRate, uint jitter, uint availableBandwidth) { this.packetLossRate = packetLossRate; this.jitter = jitter; this.availableBandwidth = availableBandwidth; } public uint packetLossRate { set; get; } public uint jitter { set; get; } public uint availableBandwidth { set; get; } }
属性
- packetLossRate
- 丢包率。
- jitter
- 网络抖动 (ms)。
- availableBandwidth
- 可用网络带宽预估 (bps)。
LastmileProbeResult
上下行 Last mile 网络质量探测结果。
public class LastmileProbeResult { public LastmileProbeResult() { } public LastmileProbeResult(LASTMILE_PROBE_RESULT_STATE state, LastmileProbeOneWayResult uplinkReport, LastmileProbeOneWayResult downlinkReport, uint rtt) { this.state = state; this.uplinkReport = uplinkReport; this.downlinkReport = downlinkReport; this.rtt = rtt; } public LASTMILE_PROBE_RESULT_STATE state { set; get; } public LastmileProbeOneWayResult uplinkReport { set; get; } public LastmileProbeOneWayResult downlinkReport { set; get; } public uint rtt { set; get; } }
属性
- state
-
Last mile 质量探测结果的状态。详见: LASTMILE_PROBE_RESULT_STATE 。
- uplinkReport
- 上行网络质量报告。详见 LastmileProbeOneWayResult。
- downlinkReport
- 下行网络质量报告。详见 LastmileProbeOneWayResult。
- rtt
- 往返时延 (ms)。
LiveTranscoding
旁路推流的转码属性。
public class LiveTranscoding { public LiveTranscoding() { width = 360; height = 640; videoBitrate = 400; videoFramerate = 15; lowLatency = false; videoGop = 30; videoCodecProfile = VIDEO_CODEC_PROFILE_TYPE.VIDEO_CODEC_PROFILE_HIGH; backgroundColor = 0x000000; videoCodecType = VIDEO_CODEC_TYPE_FOR_STREAM.VIDEO_CODEC_H264_FOR_STREAM; userCount = 0; transcodingUsers = new TranscodingUser[0]; transcodingExtraInfo = null; metadata = null; watermark = null; backgroundImage = null; audioSampleRate = AUDIO_SAMPLE_RATE_TYPE.AUDIO_SAMPLE_RATE_48000; audioBitrate = 48; audioChannels = 1; audioCodecProfile = AUDIO_CODEC_PROFILE_TYPE.AUDIO_CODEC_PROFILE_LC_AAC; advancedFeatures = new LiveStreamAdvancedFeature[0]; advancedFeatureCount = 0; } public LiveTranscoding(int width, int height, int videoBitrate, int videoFramerate, bool lowLatency, int videoGop, VIDEO_CODEC_PROFILE_TYPE videoCodecProfile, uint backgroundColor, VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType, uint userCount, TranscodingUser[] transcodingUsers, string transcodingExtraInfo, string metadata, RtcImage[] watermark, uint watermarkCount, RtcImage[] backgroundImage, uint backgroundImageCount, AUDIO_SAMPLE_RATE_TYPE audioSampleRate, int audioBitrate, int audioChannels, AUDIO_CODEC_PROFILE_TYPE audioCodecProfile, LiveStreamAdvancedFeature[] advancedFeatures, uint advancedFeatureCount) { this.width = width; this.height = height; this.videoBitrate = videoBitrate; this.videoFramerate = videoFramerate; this.lowLatency = lowLatency; this.videoGop = videoGop; this.videoCodecProfile = videoCodecProfile; this.backgroundColor = backgroundColor; this.videoCodecType = videoCodecType; this.userCount = userCount; this.transcodingUsers = transcodingUsers; this.transcodingExtraInfo = transcodingExtraInfo; this.metadata = metadata; this.watermark = watermark; this.watermarkCount = watermarkCount; this.backgroundImage = backgroundImage; this.backgroundImageCount = backgroundImageCount; this.audioSampleRate = audioSampleRate; this.audioBitrate = audioBitrate; this.audioChannels = audioChannels; this.audioCodecProfile = audioCodecProfile; this.advancedFeatures = advancedFeatures; this.advancedFeatureCount = advancedFeatureCount; } public int width { set; get; } public int height { set; get; } public int videoBitrate { set; get; } public int videoFramerate { set; get; } public bool lowLatency { set; get; } public int videoGop { set; get; } public VIDEO_CODEC_PROFILE_TYPE videoCodecProfile { set; get; } public uint backgroundColor { set; get; } public VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType { set; get; } public uint userCount { set; get; } public TranscodingUser[] transcodingUsers { set; get; } public string transcodingExtraInfo { set; get; } public string metadata { set; get; } public RtcImage[] watermark { set; get; } public uint watermarkCount { set; get; } public RtcImage[] backgroundImage { set; get; } public uint backgroundImageCount { set; get; } public AUDIO_SAMPLE_RATE_TYPE audioSampleRate { set; get; } public int audioBitrate { set; get; } public int audioChannels { set; get; } public AUDIO_CODEC_PROFILE_TYPE audioCodecProfile { set; get; } public LiveStreamAdvancedFeature[] advancedFeatures { set; get; } public uint advancedFeatureCount { set; get; } }
属性
- width
-
推流视频的总宽度,默认值 360,单位为像素。
- 如果推视频流,
width
取值范围为 [64,1920]。如果取值低于 64,声网服务器会自动调整为 64; 如果取值高于 1920,声网服务器会自动调整为 1920。 - 如果推音频流,请将
width
和height
设为 0。
- 如果推视频流,
- height
-
推流视频的总高度,默认值 640,单位为像素。
- 如果推视频流,
height
取值范围为 [64,1080]。如果取值低于 64,声网服务器会自动调整为 64; 如果取值高于 1080,声网服务器会自动调整为 1080。 - 如果推音频流,请将
width
和height
设为 0。
- 如果推视频流,
- videoBitrate
-
用于旁路直播的输出视频的码率。单位为 Kbps。400 Kbps 为默认值。
你可以参考旁路推流设置该参数的值。
- videoFramerate
-
用于旁路直播的输出视频的帧率。取值范围是 (0,30],单位为 fps。15 fps 为默认值。
注意: 声网服务器会将高于 30 fps 的帧率统一调整为 30 fps。 - lowLatency
-
- 弃用
- 声网不推荐使用。
低延时模式
true
: 低延时,不保证画质。false
:(默认值)高延时,保证画质。
- videoGop
- 用于旁路直播的输出视频的 GOP(Group of Pictures)。单位为帧。默认值为 30。
- videoCodecProfile
-
用于旁路直播的输出视频的编码规格。可以设置为 66、77 或 100,详见 VIDEO_CODEC_PROFILE_TYPE。
注意: 如果你把这个参数设为其他值,声网服务器会将其调整为默认值。 - videoCodecType
- 用于旁路直播的输出视频的编解码类型。详见 VIDEO_CODEC_TYPE_FOR_STREAM。
- transcodingUsers
-
用于管理参与旁路直播的视频转码合图的用户。最多支持 17 人同时参与转码合图。详见 TranscodingUser。
- transcodingExtraInfo
-
预留参数:用户自定义的发送到旁路推流客户端的信息,用于填充 H264/H265 视频中 SEI 帧内容。长度限制:4096 字节。关于 SEI 的详细信息,详见 SEI 帧相关问题。
- backgroundColor
-
用于旁路直播的输出视频的背景色,格式为 RGB 定义下的十六进制整数,不要带 # 号,如 0xFFB6C1 表示浅粉色。默认0x000000,黑色。
- userCount
- 参与合图的用户数量,默认 0。取值范围为 [0,17]。
- metadata
-
- 弃用
- 已废弃,声网不推荐使用。
发送给 CDN 客户端的 metadata。
- backgroundImage
- 直播视频上的背景图。详见 RtcImage。你可以添加一张背景图,或使用数组的方式添加多张背景图。该参数与 backgroundImageCount 搭配使用。
- watermark
-
直播视频上的水印。必须为 PNG 格式。详见 RtcImage。
你可以添加一个水印,或使用数组的方式添加多个水印。该参数与 watermarkCount搭配使用。
- audioSampleRate
-
用于旁路推流的输出媒体流的音频采样率 (Hz),详见 AUDIO_SAMPLE_RATE_TYPE。
- audioBitrate
-
用于旁路直播的输出音频的码率。单位为 Kbps,默认值为 48,最大值为 128。
- audioChannels
-
用于旁路直播的输出音频的声道数,默认值为 1。取值范围为 [1,5] 中的整型,建议取 1 或 2。3、4、5 需要特殊播放器支持:
- 1: (默认)单声道
- 2: 双声道
- 3: 三声道
- 4: 四声道
- 5: 五声道
- audioCodecProfile
- 用于旁路直播输出音频的编码规格。详见 AUDIO_CODEC_PROFILE_TYPE。
- watermarkCount
- 直播视频上的水印的数量。水印和背景图的总数量需大于等于 0 且小于等于 10。该参数与 watermark 搭配使用。
- backgroundImageCount
- 直播视频上的背景图的数量。水印和背景图的总数量需大于等于 0 且小于等于 10。该参数与 backgroundImage 搭配使用。
- advancedFeatures
- 转码推流的高级功能。
- advancedFeatureCount
- 开启的高级功能数量。默认值为 0。
LocalAudioStats
本地音频统计数据。
public class LocalAudioStats { public LocalAudioStats() { } public LocalAudioStats(int numChannels, int sentSampleRate, int sentBitrate, ushort txPacketLossRate) { this.numChannels = numChannels; this.sentSampleRate = sentSampleRate; this.sentBitrate = sentBitrate; this.txPacketLossRate = txPacketLossRate; } public int numChannels { set; get; } public int sentSampleRate { set; get; } public int sentBitrate { set; get; } public ushort txPacketLossRate { set; get; } }
属性
- numChannels
- 声道数。
- sentSampleRate
- 发送本地音频的采样率,单位为 Hz。
- sentBitrate
- 发送本地音频的码率平均值,单位为 Kbps。
- txPacketLossRate
- 弱网对抗前本端到声网边缘服务器的丢包率 (%)。
LocalVideoStats
本地视频流统计信息。
public class LocalVideoStats { public LocalVideoStats() { } public LocalVideoStats(int sentBitrate, int sentFrameRate, int encoderOutputFrameRate, int rendererOutputFrameRate, int targetBitrate, int targetFrameRate, QUALITY_ADAPT_INDICATION qualityAdaptIndication, int encodedBitrate, int encodedFrameWidth, int encodedFrameHeight, int encodedFrameCount, VIDEO_CODEC_TYPE codecType, ushort txPacketLossRate, int captureFrameRate) { this.sentBitrate = sentBitrate; this.sentFrameRate = sentFrameRate; this.encoderOutputFrameRate = encoderOutputFrameRate; this.rendererOutputFrameRate = rendererOutputFrameRate; this.targetBitrate = targetBitrate; this.targetFrameRate = targetFrameRate; this.qualityAdaptIndication = qualityAdaptIndication; this.encodedBitrate = encodedBitrate; this.encodedFrameWidth = encodedFrameWidth; this.encodedFrameHeight = encodedFrameHeight; this.encodedFrameCount = encodedFrameCount; this.codecType = codecType; this.txPacketLossRate = txPacketLossRate; this.captureFrameRate = captureFrameRate; } public int sentBitrate { set; get; } public int sentFrameRate { set; get; } public int encoderOutputFrameRate { set; get; } public int rendererOutputFrameRate { set; get; } public int targetBitrate { set; get; } public int targetFrameRate { set; get; } public QUALITY_ADAPT_INDICATION qualityAdaptIndication { set; get; } public int encodedBitrate { set; get; } public int encodedFrameWidth { set; get; } public int encodedFrameHeight { set; get; } public int encodedFrameCount { set; get; } public VIDEO_CODEC_TYPE codecType { set; get; } public ushort txPacketLossRate { set; get; } public int captureFrameRate { set; get; } }
属性
- sentBitrate
-
实际发送码率 (Kbps)注意: 不包含丢包后重传视频等的发送码率。
- sentFrameRate
- 实际发送帧率 (fps)。
注意: 不包含丢包后重传视频等的发送帧率。
- encoderOutputFrameRate
- 本地视频编码器的输出帧率,单位为 fps。
- rendererOutputFrameRate
- 本地视频渲染器的输出帧率,单位为 fps。
- targetBitrate
- 当前编码器的目标编码码率 (Kbps),该码率为 SDK 根据当前网络状况预估的一个值。
- targetFrameRate
- 当前编码器的目标编码帧率 (fps)。
- qualityAdaptIndication
- 统计周期内本地视频质量(基于目标帧率和目标码率)的自适应情况。详见 QUALITY_ADAPT_INDICATION。
- encodedBitrate
-
视频编码码率(Kbps)。注意: 不包含丢包后重传视频等的编码码率。
- encodedFrameWidth
- 视频编码宽度(px)。
- encodedFrameHeight
- 视频编码高度(px)。
- encodedFrameCount
- 视频发送的帧数,累计值。
- codecType
- 视频的编码类型。详见 VIDEO_CODEC_TYPE。
- txPacketLossRate
- 弱网对抗前本端到声网边缘服务器的视频丢包率 (%)。
- captureFrameRate
- 本地视频采集帧率 (fps)。
LogConfig
声网 SDK 日志文件的配置。
public class LogConfig { public LogConfig() { filePath = null; fileSize = -1; level = LOG_LEVEL.LOG_LEVEL_INFO; } public LogConfig(string filePath, int fileSize = 1024, LOG_LEVEL level = LOG_LEVEL.LOG_LEVEL_INFO) { this.filePath = filePath; this.fileSize = fileSize; this.level = level; } public string filePath { set; get; } public int fileSize { set; get; } public LOG_LEVEL level { set; get; } };
- 自从
- v3.3.0
属性
- filePath
-
日志文件的绝对路径或相对路径(以 \ 或 / 结尾)。请确保你指定的目录存在且可写。你可以通过该参数修改日志文件名。
- fileSize
- 单个日志文件的大小,单位为 KB。默认值为 2014 KB。如果你将 fileSize 设为 1024 KB,SDK 会最多输出总计 5 MB 的日志文件。如果你将 fileSize 设为小于 1024 KB,则设置不生效,单个日志文件最大仍为 1024 KB。
- level
- 声网 SDK 的日志输出等级,详见 LOG_LEVEL。
MediaRecorderConfiguration
本地音视频流录制配置。
public struct MediaRecorderConfiguration { public string storagePath; public MediaRecorderContainerFormat containerFormat; public MediaRecorderStreamType streamType; public int maxDurationMs; public int recorderInfoUpdateInterval; };
属性
- storagePath
- 录音文件在本地保存的绝对路径,需精确到文件名及格式。例如:
- Windows:
C:\Users\<user_name>\AppData\Local\Agora\<process_name>\example.mp4
- iOS:
/App Sandbox/Library/Caches/example.mp4
- macOS:
/Library/Logs/example.mp4
- Android:
/storage/emulated/0/Android/data/<package name>/files/example.mp4
注意: 请确保你指定的路径存在并且可写。 - Windows:
- containerFormat
- 录制文件的格式。详见 MediaRecorderContainerFormat。
- streamType
- 录制内容。详见 MediaRecorderStreamType。
- maxDurationMs
- 最大录制时长,单位为毫秒,默认值为 120,000。
- recorderInfoUpdateInterval
- 录制信息更新间隔,单位为毫秒,取值范围为 [1000,10000]。SDK 会根据该值的设置触发 OnRecorderInfoUpdated 回调,报告更新后的录制信息。
RecorderInfo
录制文件信息。
public struct RecorderInfo { public string fileName; public uint durationMs; public uint fileSize; };
属性
- fileName
- 录制文件的绝对存储路径。
- durationMs
- 录制文件的时长,单位为毫秒。
- fileSize
- 录制文件的大小,单位为字节。
Rect
屏幕共享区域。
public class Rect { public Rect() { } public Rect(int top, int left, int bottom, int right) { this.top = top; this.left = left; this.bottom = bottom; this.right = right; } public int top { set; get; } public int left { set; get; } public int bottom { set; get; } public int right { set; get; } }
- 弃用:
- 该类已废弃,请使用 updateScreenCaptureRegion 方法更新屏幕共享区域。
属性
- top
- 已废弃。共享区域顶部在纵轴上的坐标。
- left
- 已废弃。共享区域左侧在横轴上的坐标。
- bottom
- 已废弃。共享区域底部在纵轴上的坐标。
- right
- 已废弃。共享区域右侧在横轴上的坐标。
Rectangle
目标区域相对于整个屏幕或窗口的位置,如不填,则表示整个屏幕或窗口。
public class Rectangle { public Rectangle() { } public Rectangle(int x, int y, int width, int height) { this.x = x; this.y = y; this.width = width; this.height = height; } public int x { set; get; } public int y { set; get; } public int width { set; get; } public int height { set; get; } }
属性
- x
- 左上角的横向偏移。
- y
- 左上角的纵向偏移。
- width
- 目标区域的宽度。
- height
- 目标区域的高度。
RemoteAudioStats
远端用户的音频统计数据。
public class RemoteAudioStats { public RemoteAudioStats() { } public RemoteAudioStats(uint uid, int quality, int networkTransportDelay, int jitterBufferDelay, int audioLossRate, int numChannels, int receivedSampleRate, int receivedBitrate, int totalFrozenTime, int frozenRate, int totalActiveTime, int publishDuration, int qoeQuality, int qualityChangedReason, int mosValue) { this.uid = uid; this.quality = quality; this.networkTransportDelay = networkTransportDelay; this.jitterBufferDelay = jitterBufferDelay; this.audioLossRate = audioLossRate; this.numChannels = numChannels; this.receivedSampleRate = receivedSampleRate; this.receivedBitrate = receivedBitrate; this.totalFrozenTime = totalFrozenTime; this.frozenRate = frozenRate; this.totalActiveTime = totalActiveTime; this.publishDuration = publishDuration; this.qoeQuality = qoeQuality; this.qualityChangedReason = qualityChangedReason; this.mosValue = mosValue; } public uint uid { set; get; } public int quality { set; get; } public int networkTransportDelay { set; get; } public int jitterBufferDelay { set; get; } public int audioLossRate { set; get; } public int numChannels { set; get; } public int receivedSampleRate { set; get; } public int receivedBitrate { set; get; } public int totalFrozenTime { set; get; } public int frozenRate { set; get; } public int totalActiveTime { set; get; } public int publishDuration { set; get; } public int qoeQuality { set; get; } public int qualityChangedReason { set; get; } public int mosValue { set; get; } }
属性
- uid
- 远端用户的用户 ID。
- quality
- 远端用户发送的音频流质量。详见 QUALITY_TYPE。
- networkTransportDelay
- 音频发送端到接收端的网络延迟(毫秒)。
- jitterBufferDelay
-
音频接收端到网络抖动缓冲的网络延迟(毫秒)。
- audioLossRate
- 统计周期内的远端音频流的丢帧率 (%)。
- numChannels
- 声道数。
- receivedSampleRate
- 统计周期内接收到的远端音频流的采样率。
- receivedBitrate
- 接收到的远端音频流在统计周期内的平均码率(Kbps)。
- totalFrozenTime
- 远端用户在加入频道后发生音频卡顿的累计时长(毫秒)。通话过程中,音频丢帧率达到 4% 即记为一次音频卡顿。
- frozenRate
- 音频卡顿的累计时长占音频总有效时长的百分比 (%)。音频有效时长是指远端用户加入频道后音频未被停止发送或禁用的时长。
- totalActiveTime
-
远端用户在音频通话开始到本次回调之间的有效时长(毫秒)。
有效时长是指去除了远端用户进入静音状态的总时长。
- publishDuration
-
远端音频流的累计发布时长(毫秒)。
- qoeQuality
-
接收远端音频时,本地用户的主观体验质量,详见 EXPERIENCE_QUALITY_TYPE。
- qualityChangedReason
-
接收远端音频时,本地用户主观体验质量较差的原因,详见 EXPERIENCE_POOR_REASON。
- mosValue
-
统计周期内,声网实时音频 MOS(平均主观意见分)评估方法对接收到的远端音频流的质量评分。返回值范围为 [0,500]。返回值除以 100 即可得到 MOS 分数,范围为 [0,5] 分,分数越高,音频质量越好。
声网实时音频 MOS 评分对应的主观音质感受如下:MOS分数 音质感受 大于 4 分 音频质量佳,清晰流畅。 3.5 - 4 分 音频质量较好,偶有音质损伤,但依然清晰。 3 - 3.5 分 音频质量一般,偶有卡顿,不是非常流畅,需要一点注意力才能听清。 2.5 - 3 分 音频质量较差,卡顿频繁,需要集中精力才能听清。 2 - 2.5 分 音频质量很差,偶有杂音,部分语义丢失,难以交流。 小于 2 分 音频质量非常差,杂音频现,大量语义丢失,完全无法交流。
RemoteVideoStats
远端视频流的统计信息。
public class RemoteVideoStats { public RemoteVideoStats() { } public RemoteVideoStats(uint uid, int delay, int width, int height, int receivedBitrate, int decoderOutputFrameRate, int rendererOutputFrameRate, int packetLossRate, REMOTE_VIDEO_STREAM_TYPE rxStreamType, int totalFrozenTime, int frozenRate, int totalActiveTime, int publishDuration) { this.uid = uid; this.delay = delay; this.width = width; this.height = height; this.receivedBitrate = receivedBitrate; this.decoderOutputFrameRate = decoderOutputFrameRate; this.rendererOutputFrameRate = rendererOutputFrameRate; this.packetLossRate = packetLossRate; this.rxStreamType = rxStreamType; this.totalFrozenTime = totalFrozenTime; this.frozenRate = frozenRate; this.totalActiveTime = totalActiveTime; this.publishDuration = publishDuration; } public uint uid { set; get; } public int delay { set; get; } public int width { set; get; } public int height { set; get; } public int receivedBitrate { set; get; } public int decoderOutputFrameRate { set; get; } public int rendererOutputFrameRate { set; get; } public int packetLossRate { set; get; } public REMOTE_VIDEO_STREAM_TYPE rxStreamType { set; get; } public int totalFrozenTime { set; get; } public int frozenRate { set; get; } public int totalActiveTime { set; get; } public int publishDuration { set; get; } }
属性
- uid
- 用户 ID,指定是哪个用户的视频流。
- delay
-
- 弃用:
- 在有音画同步机制的音视频场景中,你可以参考 RemoteAudioStats 里的 networkTransportDelay 和 jitterBufferDelay 成员的值,了解视频的延迟数据。
延时(毫秒)。
- width
- 视频流宽(像素)。
- height
- 视频流高(像素)。
- receivedBitrate
- (上次统计后)接收到的码率(Kbps)。
- decoderOutputFrameRate
- 远端视频解码器的输出帧率,单位为 fps。
- rendererOutputFrameRate
- 远端视频渲染器的输出帧率,单位为 fps。
- packetLossRate
- 远端视频在使用抗丢包技术之后的丢包率(%)。
- rxStreamType
- 视频流类型,大流或小流。详见 REMOTE_VIDEO_STREAM_TYPE。
- totalFrozenTime
- 远端用户在加入频道后发生视频卡顿的累计时长(ms)。通话过程中,视频帧率设置不低于 5 fps 时,连续渲染的两帧视频之间间隔超过 500 ms,则记为一次视频卡顿。
- frozenRate
- 远端用户在加入频道后发生视频卡顿的累计时长占视频总有效时长的百分比 (%)。视频有效时长是指远端用户加入频道后视频未被停止发送或禁用的时长。
- totalActiveTime
-
- 自从
- v3.0.1
视频有效时长(毫秒)。
视频总有效时长是远端用户或主播加入频道后,既没有停止发送视频流,也没有禁用视频模块的通话时长。
- publishDuration
-
- 自从
- v3.1.0
远端视频流的累计发布时长(毫秒)。
RtcEngineContext
声网 SDK 初始化设置。
public class RtcEngineContext { public RtcEngineContext(string appId, AREA_CODE areaCode = AREA_CODE.AREA_CODE_GLOB, LogConfig logConfig = null) { this.appId = appId; _areaCode = (uint) areaCode; this.logConfig = logConfig ?? new LogConfig(); } public string appId { set; get; } private uint _areaCode; public LogConfig logConfig { set; get; } public AREA_CODE areaCode { get { return (AREA_CODE) _areaCode; } set { _areaCode = (uint) areaCode; } } };
属性
- appId
-
声网为 app 开发项目签发的 App ID。使用同一个 App ID 的用户才能进入同一个频道进行通话或直播。
- context
- 视频窗口句柄。如设值,则表示支持设备热插拔。
- areaCode
-
服务器的访问区域。该功能为高级设置,适用于有访问安全限制的场景。支持的区域详见 AREA_CODE。
指定访问区域后,声网 SDK 会连接指定区域内的声网服务器。
- logConfig
-
声网 SDK 日志文件配置,详见 LogConfig。
默认情况下,SDK 会生成
agorasdk.log
、agorasdk_1.log
、agorasdk_2.log
、agorasdk_3.log
、agorasdk_4.log
这 5 个日志文件。每个日志文件的默认大小为 1024 KB,编码格式为 UTF-8。最新的日志永远写在
agorasdk.log
中。agorasdk.log
写满后,SDK 会从 1-4 中删除修改时间最早的一个文件,然后将agorasdk.log
重命名为该文件,并建立新的 agorasdk.log 写入最新的日志。
RtcImage
图像属性。
public class RtcImage { public RtcImage() { } public RtcImage(string url, int x, int y, int width, int height, int zOrder, double alpha) { this.url = url; this.x = x; this.y = y; this.width = width; this.height = height; this.zOrder = zOrder; this.alpha = alpha; } public string url { set; get; } public int x { set; get; } public int y { set; get; } public int width { set; get; } public int height { set; get; } public int zOrder { set; get; } public double alpha { set; get; } }
用于设置直播视频的水印和背景图片的属性。
属性
- url
- 直播视频上图片的 HTTP/HTTPS 地址。字符长度不得超过 1024 字节。
- x
- 图片在视频画面上的 x 坐标 (pixel),以输出视频画面的左上角为原点。
- y
- 图片在视频画面上的 y 坐标 (pixel),以输出视频画面的左上角为原点。
- width
- 图片在视频画面上的宽度 (pixel)。
- height
- 图片在视频画面上的高度 (pixel)。
- zOrder
- 视频帧图层编号。取值范围为 [1,100] 中的整型。1 表示该区域图像位于最下层,而 100 表示该区域图像位于最上层。
- alpha
- 水印或背景图片的透明度。取值范围为 [0.0,1.0]:
- 0.0: 完全透明。
- 1.0:(默认)完全不透明。
RtcStats
通话相关的统计信息。
public class RtcStats { public RtcStats() { } public RtcStats(uint duration, uint txBytes, uint rxBytes, uint txAudioBytes, uint txVideoBytes, uint rxAudioBytes, uint rxVideoBytes, ushort txKBitRate, ushort rxKBitRate, ushort rxAudioKBitRate, ushort txAudioKBitRate, ushort rxVideoKBitRate, ushort txVideoKBitRate, ushort lastmileDelay, ushort txPacketLossRate, ushort rxPacketLossRate, uint userCount, double cpuAppUsage, double cpuTotalUsage, int gatewayRtt, double memoryAppUsageRatio, double memoryTotalUsageRatio, int memoryAppUsageInKbytes) { this.duration = duration; this.txBytes = txBytes; this.rxBytes = rxBytes; this.txAudioBytes = txAudioBytes; this.txVideoBytes = txVideoBytes; this.rxAudioBytes = rxAudioBytes; this.rxVideoBytes = rxVideoBytes; this.txKBitRate = txKBitRate; this.rxKBitRate = rxKBitRate; this.rxAudioKBitRate = rxAudioKBitRate; this.txAudioKBitRate = txAudioKBitRate; this.rxVideoKBitRate = rxVideoKBitRate; this.txVideoKBitRate = txVideoKBitRate; this.lastmileDelay = lastmileDelay; this.txPacketLossRate = txPacketLossRate; this.rxPacketLossRate = rxPacketLossRate; this.userCount = userCount; this.cpuAppUsage = cpuAppUsage; this.cpuTotalUsage = cpuTotalUsage; this.gatewayRtt = gatewayRtt; this.memoryAppUsageRatio = memoryAppUsageRatio; this.memoryTotalUsageRatio = memoryTotalUsageRatio; this.memoryAppUsageInKbytes = memoryAppUsageInKbytes; } public uint duration { set; get; } public uint txBytes { set; get; } public uint rxBytes { set; get; } public uint txAudioBytes { set; get; } public uint txVideoBytes { set; get; } public uint rxAudioBytes { set; get; } public uint rxVideoBytes { set; get; } public ushort txKBitRate { set; get; } public ushort rxKBitRate { set; get; } public ushort rxAudioKBitRate { set; get; } public ushort txAudioKBitRate { set; get; } public ushort rxVideoKBitRate { set; get; } public ushort txVideoKBitRate { set; get; } public ushort lastmileDelay { set; get; } public ushort txPacketLossRate { set; get; } public ushort rxPacketLossRate { set; get; } public uint userCount { set; get; } public double cpuAppUsage { set; get; } public double cpuTotalUsage { set; get; } public int gatewayRtt { set; get; } public double memoryAppUsageRatio { set; get; } public double memoryTotalUsageRatio { set; get; } public int memoryAppUsageInKbytes { set; get; } }
属性
- duration
- 本地用户通话时长(秒),累计值。
- txBytes
- 发送字节数(bytes)。
- rxBytes
- 接收字节数(bytes)。
- txAudioBytes
- 发送音频字节数(bytes),累计值。
- txVideoBytes
- 发送视频字节数(bytes),累计值。
- rxAudioBytes
- 接收音频字节数(bytes),累计值。
- rxVideoBytes
- 接收视频字节数(bytes),累计值。
- txKBitRate
- 发送码率(Kbps)。
- rxKBitRate
- 接收码率(Kbps)。
- rxAudioKBitRate
- 音频接收码率 (Kbps)。
- txAudioKBitRate
- 音频包的发送码率 (Kbps)。
- rxVideoKBitRate
- 视频接收码率 (Kbps)。
- txVideoKBitRate
- 视频发送码率 (Kbps)。
- lastmileDelay
- 客户端-接入服务器延时 (毫秒)。
- txPacketLossRate
- 使用抗丢包技术前,客户端上行发送到服务器丢包率 (%)。
- rxPacketLossRate
- 使用抗丢包技术前,服务器下行发送到客户端丢包率 (%)。
- userCount
- 当前频道内的用户人数。
- cpuAppUsage
- 当前 App 的 CPU 使用率 (%)。
- cpuTotalUsage
-
当前系统的 CPU 使用率 (%)。
对于 Windows 平台,在多核环境中,该成员指多核 CPU 的平均使用率。 计算方式为 (100 - 任务管理中显示的系统空闲进程 CPU)/100。
注意: OnLeaveChannel 回调中报告的 cpuTotalUsage 恒为 0。 - gatewayRtt
- 客户端到本地路由器的往返时延 (ms)。
- memoryAppUsageRatio
-
当前 App 的内存占比 (%)。
注意: 该值仅作参考。受系统限制可能无法获取。 - memoryTotalUsageRatio
-
当前系统的内存占比 (%)。
注意: 该值仅作参考。受系统限制可能无法获取。 - memoryAppUsageInKbytes
-
当前 App 的内存大小 (KB)。
注意: 该值仅作参考。受系统限制可能无法获取。
ScreenCaptureInfo
屏幕共享信息。
public class ScreenCaptureInfo { public ScreenCaptureInfo() { } public ScreenCaptureInfo(string graphicsCardType, EXCLUDE_WINDOW_ERROR errCode) { this.graphicsCardType = graphicsCardType; this.errCode = errCode; } public string graphicsCardType; public EXCLUDE_WINDOW_ERROR errCode; };
属性
- graphicsCardType
-
显卡类型,包含显卡的型号信息。
- errCode
-
屏幕共享时,屏蔽窗口的错误码。详见 EXCLUDE_WINDOW_ERROR。
ScreenCaptureParameters
屏幕共享的参数配置。
public class ScreenCaptureParameters { public ScreenCaptureParameters() { dimensions = new VideoDimensions(1920, 1080); frameRate = 5; bitrate = (int) BITRATE.STANDARD_BITRATE; captureMouseCursor = true; windowFocus = false; excludeWindowList = new view_t[0]; excludeWindowCount = 0; } public ScreenCaptureParameters(int width, int height, int frameRate, BITRATE bitrate, bool captureMouseCursor, bool windowFocus, view_t[] excludeWindowList = null, int excludeWindowCount = 0) { dimensions = new VideoDimensions(width, height); this.frameRate = frameRate; this.bitrate = (int) bitrate; this.captureMouseCursor = captureMouseCursor; this.windowFocus = windowFocus; this.excludeWindowList = excludeWindowList ?? new view_t[0]; this.excludeWindowCount = excludeWindowCount; } public ScreenCaptureParameters(VideoDimensions dimensions, int frameRate, BITRATE bitrate, bool captureMouseCursor, bool windowFocus, view_t[] excludeWindowList = null, int excludeWindowCount = 0) { this.dimensions = dimensions; this.frameRate = frameRate; this.bitrate = (int) bitrate; this.captureMouseCursor = captureMouseCursor; this.windowFocus = windowFocus; this.excludeWindowList = excludeWindowList ?? new view_t[0]; this.excludeWindowCount = excludeWindowCount; } public VideoDimensions dimensions { set; get; } public int frameRate { set; get; } public int bitrate { set; get; } public bool captureMouseCursor { set; get; } public bool windowFocus { set; get; } public view_t[] excludeWindowList { set; get; } public int excludeWindowCount { set; get; } }
属性
- dimensions
-
编码共享视频的最大像素值。
当共享的屏幕分辨率宽高比与该值设置不一致时,SDK 按如下策略进行编码。假设dimensions
设为 1920 × 1080:- 如果屏幕分辨率小于
dimensions
,如 1000 × 1000,SDK 直接按 1000 × 1000 进行编码。 - 如果屏幕分辨率大于
dimensions
,如 2000 × 1500,SDK 按屏幕分辨率的宽高比,即 4:3,取 dimensions 以内的最大分辨率进行编码,即 1440 × 1080。
- 如果屏幕分辨率小于
- frameRate
- 共享视频的帧率,单位为 fps;默认值为 5,建议不要超过 15。
- bitrate
- 共享视频的码率,单位为 Kbps;默认值为 0,表示 SDK 根据当前共享屏幕的分辨率计算出一个合理的值。
- captureMouseCursor
-
- 自从
- v2.4.1
是否采集鼠标用于屏幕共享:true
:(默认)采集鼠标。false
: 不采集鼠标。
- windowFocus
-
- 自从
- v3.1.0
调用 StartScreenCaptureByWindowId 方法共享窗口时,是否将该窗口前置:true
: 前置窗口。false
:(默认)不前置窗口。
- excludeWindowList
-
- 自从
- v3.1.0
待屏蔽窗口的 ID 列表。调用 StartScreenCaptureByScreenRect开启屏幕共享时,你可以通过该参数屏蔽指定的窗口。你可以在调用 UpdateScreenCaptureParameters 更新屏幕共享的配置参数时,通过该参数动态屏蔽指定的窗口。
- excludeWindowCount
-
- 自从
- v3.1.0
待屏蔽窗口的数量。
TranscodingUser
参与转码合流的每个主播的设置。
public class TranscodingUser
{
public TranscodingUser()
{
alpha = 1.0;
}
public TranscodingUser(uint uid, int x, int y, int width, int height, int zOrder, double alpha,
int audioChannel)
{
this.uid = uid;
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.zOrder = zOrder;
this.alpha = alpha;
this.audioChannel = audioChannel;
}
public uint uid { set; get; }
public int x { set; get; }
public int y { set; get; }
public int width { set; get; }
public int height { set; get; }
public int zOrder { set; get; }
public double alpha { set; get; }
public int audioChannel { set; get; }
}
属性
- uid
-
主播的用户 ID。
- x
-
主播视频画面在输出视频画面的 x 坐标 (pixel),以输出视频画面的左上角为原点。取值范围为[0,width],width 为 LiveTranscoding 中设置的
width
。 - y
- 主播视频画面在输出视频画面的 y 坐标 (pixel),以输出视频画面的左上角为原点。取值范围为[0,height],height 为 LiveTranscoding 中设置的
height
。 - width
- 主播视频画面的宽 (pixel)。
- height
-
主播视频画面的高 (pixel)。
- zOrder
-
主播视频画面的图层编号。取值范围为 [0,100]。
- 0:(默认)视频画面位于图层的最下层。
- 100: 视频画面位于图层的最上层。
注意:- 如果取值小于 0 或大于 100,会返回错误
ERR_INVALID_ARGUMENT
。 - 从 v2.3 开始,支持将 zOrder 设置为 0。
- alpha
-
主播视频画面的透明度。取值范围为 [0.0,1.0]。
- 0.0: 完全透明。
- 1.0:(默认)完全不透明。
- audioChannel
-
主播音频在输出音频中占用的声道。默认值为 0,取值范围为 [0,5]:
0
: (推荐)默认混音设置,最多支持双声道,与主播上行音频相关。1
: 主播音频在输出音频的 FL 声道。如果主播上行音频是多声道,声网 服务器会先把多声道混音成单声道。2
: 主播音频在输出音频的 FC 声道。如果主播上行音频是多声道,声网 服务器会先把多声道混音成单声道。3
: 主播音频在输出音频的 FR 声道。如果主播上行音频是多声道,声网 服务器会先把多声道混音成单声道。4
: 主播音频在输出音频的 BL 声道。如果主播上行音频是多声道,声网 服务器会先把多声道混音成单声道。5
: 主播音频在输出音频的 BR 声道。如果主播上行音频是多声道,声网 服务器会先把多声道混音成单声道。0xFF
或取值大于5
: 该主播音频静音,声网 服务器移除该主播的音频。
注意: 取值不为0
时,需要使用特殊的播放器。
UserInfo
用户的信息。
struct UserInfo { uid_t uid; char userAccount[MAX_USER_ACCOUNT_LENGTH]; UserInfo() : uid(0) { userAccount[0] = '\0'; } };
ublic class UserInfo { public UserInfo() { userAccount = ""; } public UserInfo(uint uid = 0, string userAccount = "") { this.uid = uid; this.userAccount = userAccount; } public uint uid { set; get; } public string userAccount { set; get; } }
- 自从
- v2.8.0
属性
- uid
- 用户 ID。
- userAccount
- 用户 Account。长度限制为MAX_USER_ACCOUNT_LENGTH_TYPE。
VideoCanvas
视频显示设置。
public class VideoCanvas { public VideoCanvas() { view = 0; renderMode = (int) RENDER_MODE_TYPE.RENDER_MODE_HIDDEN; channelId = ""; uid = 0; mirrorMode = VIDEO_MIRROR_MODE_TYPE.VIDEO_MIRROR_MODE_AUTO; } public VideoCanvas(view_t? view, RENDER_MODE_TYPE renderMode, string channelId = "", uint uid = 0, VIDEO_MIRROR_MODE_TYPE mirrorMode = VIDEO_MIRROR_MODE_TYPE.VIDEO_MIRROR_MODE_AUTO) { this.view = view ?? 0; this.renderMode = (int) renderMode; this.channelId = channelId; this.uid = uid; this.mirrorMode = mirrorMode; } public view_t view { set; get; } public int renderMode { set; get; } public string channelId { set; get; } public uint uid { set; get; } public VIDEO_MIRROR_MODE_TYPE mirrorMode { set; get; } }
属性
- view
-
用于显示视频的视图。
- renderMode
- 视频渲染模式,详见 RENDER_MODE_TYPE 。
- channelId
-
- 自从
- v3.0.0
频道名,即能够唯一标识频道、长度在 64 字节以内的字符。以下为支持的字符集范围(共 89 个字符):- 26 个小写英文字母 a~z
- 26 个大写英文字母 A~Z
- 10 个数字 0~9
- 空格
- "!"、"#"、"$"、"%"、"&"、"("、")"、"+"、"-"、":"、";"、"<"、"="、"."、">"、"?"、"@"、"["、"]"、"^"、"_"、"{"、"}"、"|"、"~"、","
注意:-
该参数默认值为空字符 ""。如果用户是通过
IAgoraRtcEngine
类的
JoinChannel [2/2]
方法加入频道的,则将参数设为默认值。此时
VideoCanvas
设置的是该用户在频道内的视图。 -
如果用户是通过
IAgoraRtcChannel
类的
JoinChannel [2/2]
方法加入频道的,则将该参数设为该
IAgoraRtcChannel
类对应的
channelId
。此时VideoCanvas
设置的是用户在该channelId
对应频道内的视图。
- uid
- 用户 ID。
- mirrorMode
-
- 自从
- v3.0.0
视图镜像模式,详见 VIDEO_MIRROR_MODE_TYPE 。注意:-
对于本地用户:
- 如果使用前置摄像头,默认启动镜像模式。
- 如果使用后置摄像头,默认关闭镜像模式。
- 对于远端用户:默认关闭镜像模式。
VideoDenoiserOptions
视频降噪选项。
public class VideoDenoiserOptions { public VideoDenoiserOptions() { } public VideoDenoiserOptions(VIDEO_DENOISER_MODE mode, VIDEO_DENOISER_LEVEL level) { this.mode = mode; this.level = level; } public VIDEO_DENOISER_MODE mode { set; get; } public VIDEO_DENOISER_LEVEL level { set; get; } };
属性
- level
-
视频降噪等级。详见 VIDEO_DENOISER_LEVEL。
- mode
-
视频降噪模式。详见 VIDEO_DENOISER_MODE。
VideoDimensions
视频尺寸。
public class VideoDimensions { public VideoDimensions() { width = 640; height = 480; } public VideoDimensions(int width, int height) { this.width = width; this.height = height; } public int width { set; get; } public int height { set; get; } }
属性
- width
-
视频宽度,单位为像素。
- height
- 视频高度,单位为像素。
VideoFrame
视频帧的属性设置。
public class VideoFrame { public VIDEO_FRAME_TYPE type; public int width; public int height; public int yStride; public int uStride; public int vStride; public byte[] yBuffer; public IntPtr yBufferPtr; public byte[] uBuffer; public IntPtr uBufferPtr; public byte[] vBuffer; public IntPtr vBufferPtr; public int rotation; public long renderTimeMs; public int avsync_type; };
视频数据的格式为 YUV420。缓冲区给出的是指向指针的指针,该接口不能修改缓冲区的指针,只能修改缓冲区的内容。
属性
- type
- 视频帧类型,详见 VIDEO_FRAME_TYPE。
- width
- 视频像素宽度。
- height
- 视频像素高度。
- yStride
- YUV 数据中的 Y 缓冲区的行跨度。
- uStride
- YUV 数据中的 U 缓冲区的行跨度。
- vStride
- YUV 数据中的 V 缓冲区的行跨度。
- yBuffer
- 指向 YUV 数据中的 Y 缓冲区指针的指针。
- uBuffer
- 指向 YUV 数据中的 U 缓冲区指针的指针。
- vBuffer
- 指向 YUV 数据中的 V 缓冲区指针的指针。
- rotation
- 在渲染视频前设置该帧的顺时针旋转角度,目前支持 0 度、90 度、180 度,和 270 度。
- renderTimeMs
- 外部音频帧的时间戳。该参数为必填。你可以使用该时间戳还原音频帧顺序;在有视频的场景中(包含使用外部视频源的场景),该参数可以帮助实现音视频同步。
- avsync_type
- 保留参数。
VideoEncoderConfiguration
视频编码器的配置。
public class VideoEncoderConfiguration { public VideoEncoderConfiguration() { dimensions = null; frameRate = FRAME_RATE.FRAME_RATE_FPS_15; minBitrate = -1; bitrate = (int) BITRATE.STANDARD_BITRATE; minBitrate = (int) BITRATE.DEFAULT_MIN_BITRATE; orientationMode = ORIENTATION_MODE.ORIENTATION_MODE_ADAPTIVE; degradationPreference = DEGRADATION_PREFERENCE.MAINTAIN_QUALITY; mirrorMode = VIDEO_MIRROR_MODE_TYPE.VIDEO_MIRROR_MODE_AUTO; } public VideoEncoderConfiguration(VideoDimensions dimensions, FRAME_RATE frameRate = FRAME_RATE.FRAME_RATE_FPS_15, int minFrameRate = -1, BITRATE bitrate = BITRATE.STANDARD_BITRATE, BITRATE minBitrate = BITRATE.DEFAULT_MIN_BITRATE, ORIENTATION_MODE orientationMode = ORIENTATION_MODE.ORIENTATION_MODE_ADAPTIVE, DEGRADATION_PREFERENCE degradationPreference = DEGRADATION_PREFERENCE.MAINTAIN_QUALITY, VIDEO_MIRROR_MODE_TYPE mirrorMode = VIDEO_MIRROR_MODE_TYPE.VIDEO_MIRROR_MODE_AUTO) { this.dimensions = dimensions ?? new VideoDimensions(); this.frameRate = frameRate; this.minFrameRate = minFrameRate; this.bitrate = (int) bitrate; this.minBitrate = (int) minBitrate; this.orientationMode = orientationMode; this.degradationPreference = degradationPreference; this.mirrorMode = mirrorMode; } public VideoEncoderConfiguration(int width, int height, FRAME_RATE frameRate = FRAME_RATE.FRAME_RATE_FPS_15, int minFrameRate = -1, BITRATE bitrate = BITRATE.STANDARD_BITRATE, BITRATE minBitrate = BITRATE.DEFAULT_MIN_BITRATE, ORIENTATION_MODE orientationMode = ORIENTATION_MODE.ORIENTATION_MODE_ADAPTIVE, DEGRADATION_PREFERENCE degradationPreference = DEGRADATION_PREFERENCE.MAINTAIN_QUALITY, VIDEO_MIRROR_MODE_TYPE mirrorMode = VIDEO_MIRROR_MODE_TYPE.VIDEO_MIRROR_MODE_AUTO) { dimensions = new VideoDimensions(width, height); this.frameRate = frameRate; this.minFrameRate = minFrameRate; this.bitrate = (int) bitrate; this.minBitrate = (int) minBitrate; this.orientationMode = orientationMode; this.degradationPreference = degradationPreference; this.mirrorMode = mirrorMode; } public VideoDimensions dimensions { set; get; } public FRAME_RATE frameRate { set; get; } public int minFrameRate { set; get; } public int bitrate { set; get; } public int minBitrate { set; get; } public ORIENTATION_MODE orientationMode { set; get; } public DEGRADATION_PREFERENCE degradationPreference { set; get; } public VIDEO_MIRROR_MODE_TYPE mirrorMode { set; get; } }
属性
- dimensions
-
视频编码的分辨率(px),详见 VideoDimensions。该参数用于衡量编码质量,以长 × 宽表示,默认值为 640 × 360。用户可以自行设置分辨率。
- frameRate
-
视频编码的帧率(fps),默认值为 15。详见 FRAME_RATE。
- bitrate
-
视频编码码率,单位为 Kbps。
你可以根据场景需要参照下表手动设置你想要的码率。若设置的视频码率超出合理范围,SDK 会自动按照合理区间处理码率。你也可以直接选择如下任意一种模式进行设置:
- STANDARD_BITRATE : (推荐) 标准码率模式。该模式下,视频在直播场景下的码率是通信场景的两倍。
- COMPATIBLE_BITRATE: 适配码率模式。该模式下,视频在通信和直播场景下的码率一致。直播时如果选择该模式,视频帧率可能会低于设置的值。
声网在通信和直播场景下采用不同的编码方式,以提升不同场景下的用户体验。通信场景保证流畅,而直播场景则更注重画面质量,因此直播场景对码率的需求大于通信场景。所以声网推荐将该参数设置为 STANDARD_BITRATE。你也可以直接将直播场景的码率值设为通信场景码率值的 2 倍。
分辨率 帧率(fps) 通信码率(Kbps) 直播码率(Kbps) 160 × 120 15 65 130 120 × 120 15 50 100 320 × 180 15 140 280 180 × 180 15 100 200 240 × 180 15 120 240 320 × 240 15 200 400 240 × 240 15 140 280 424 × 240 15 220 440 640 × 360 15 400 800 360 × 360 15 260 520 640 × 360 30 600 1200 360 × 360 30 400 800 480 × 360 15 320 640 480 × 360 30 490 980 640 × 480 15 500 1000 480 × 480 15 400 800 640 × 480 30 750 1500 480 × 480 30 600 1200 848 × 480 15 610 1220 848 × 480 30 930 1860 640 × 480 10 400 800 1280 × 720 15 1130 2260 1280 × 720 30 1710 3420 960 × 720 15 910 1820 960 × 720 30 1380 2760 1920 × 1080 15 2080 4160 1920 × 1080 30 3150 6300 1920 × 1080 60 4780 6500 - minBitrate
-
最低编码码率,单位为 Kbps。
SDK 会根据网络状况自动调整视频编码码率。将参数设为高于默认值可强制视频编码器输出高质量图片,但在网络状况不佳情况下可能导致网络丢包并影响视频播放的流畅度造成卡顿。因此如非对画质有特殊需求,声网建议不要修改该参数的值。
注意: 该参数仅适用于直播场景。 - orientationMode
- 视频编码的方向模式,详见 ORIENTATION_MODE。
- degradationPreference
- 带宽受限时,视频编码降级偏好。详见 DEGRADATION_PREFERENCE 。
- mirrorMode
-
发送编码视频时是否开启镜像模式,只影响远端用户看到的视频画面。详见 VIDEO_MIRROR_MODE_TYPE。
注意: 默认关闭镜像模式。
VirtualBackgroundSource
自定义的背景。
public class VirtualBackgroundSource
{
public VirtualBackgroundSource()
{
color = 0xFFFFFF;
source = null;
background_source_type = BACKGROUND_SOURCE_TYPE.BACKGROUND_COLOR;
}
public BACKGROUND_SOURCE_TYPE background_source_type { set; get; }
public uint color { set; get; }
public string source { set; get; }
public BACKGROUND_BLUR_DEGREE blur_degree { set; get; }
}
属性
- background_source_type
- 自定义的背景图类型。详见 BACKGROUND_SOURCE_TYPE。
- color
- 自定义的背景图颜色。格式为 RGB 定义下的十六进制整数,不要带 # 号,如 0xFFB6C1 表示浅粉色。 默认值为 0xFFFFFF,表示白色。 取值范围为 [0x000000,0xffffff]。如果取值非法,SDK 会用白色背景图替换原背景图。
注意: 该参数仅在自定义背景图类型为 BACKGROUND_COLOR 时生效。
- source
- 自定义背景图的本地绝对路径。支持 PNG 和 JPG 格式。如果路径无效,SDK 会用白色背景图替换原背景图。
注意: 该参数仅在自定义背景图类型为 BACKGROUND_IMG 时生效。
- blur_degree
- 自定义背景图的模糊程度。详见 BACKGROUND_BLUR_DEGREE。
注意: 该参数仅在自定义背景图类型为 BACKGROUND_BLUR 时生效。
WatermarkOptions
水印图片的设置。
public class WatermarkOptions { public WatermarkOptions() { visibleInPreview = true; positionInLandscapeMode = new Rectangle(); positionInPortraitMode = new Rectangle(); } public WatermarkOptions(bool visibleInPreview, Rectangle positionInLandscapeMode, Rectangle positionInPortraitMode) { this.visibleInPreview = visibleInPreview; this.positionInLandscapeMode = positionInLandscapeMode ?? new Rectangle(); this.positionInPortraitMode = positionInPortraitMode ?? new Rectangle(); } public bool visibleInPreview { set; get; } public Rectangle positionInLandscapeMode { set; get; } public Rectangle positionInPortraitMode { set; get; } }
属性
WlAccStats
Wi-Fi 加速效果。
属性
- e2eDelayPercent
- 端到端延时下降百分比。
- frozenRatioPercent
- 音视频卡顿率下降百分比。
- lossRatePercent
- 丢包率下降百分比。