类型定义
本页列出 Windows API 所有的类型定义。
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 规格。
- HE_AAC_V2
- 2: HE-AAC v2 规格。
AUDIO_CODEC_TYPE
音频编解码格式。
枚举值
- AUDIO_CODEC_OPUS
- 1: OPUS。
- AUDIO_CODEC_PCMA
- 3: PCMA。
- AUDIO_CODEC_PCMU
- 4: PCMU。
- AUDIO_CODEC_G722
- 5: G722。
- AUDIO_CODEC_AACLC
- 8: LC-AAC。
- AUDIO_CODEC_HEAAC
- 9: HE-AAC。
- AUDIO_CODEC_JC1
- 10: JC1。
- AUDIO_CODEC_HEAAC2
- 11: HE-AAC v2。
AUDIO_DUAL_MONO_MODE
声道模式。
枚举值
- AUDIO_DUAL_MONO_STEREO
- 0: 原始模式。
- AUDIO_DUAL_MONO_L
- 1: 左声道模式。该模式用左声道的音频替换右声道的音频,即用户只能听到左声道的音频。
- AUDIO_DUAL_MONO_R
- 2: 右声道模式。该模式用右声道的音频替换左声道的音频,即用户只能听到右声道的音频。
- AUDIO_DUAL_MONO_MIX
- 3: 混合模式。该模式将左右声道的数据叠加,即用户能同时听到左声道和右声道的音频。
AUDIO_EFFECT_PRESET
预设的音效选项。
预设音效 | profile |
---|---|
|
AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO 或 AUDIO_PROFILE_MUSIC_STANDARD_STEREO |
其他预设音效(除 AUDIO_EFFECT_OFF 以外) | AUDIO_PROFILE_MUSIC_HIGH_QUALITY 或 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO |
枚举值
- AUDIO_EFFECT_OFF
- 原声,即关闭人声音效。
- ROOM_ACOUSTICS_KTV
- KTV。
- ROOM_ACOUSTICS_VOCAL_CONCERT
- 演唱会。
- ROOM_ACOUSTICS_STUDIO
- 录音棚。
- ROOM_ACOUSTICS_PHONOGRAPH
- 留声机。
- ROOM_ACOUSTICS_VIRTUAL_STEREO
- 虚拟立体声,即 SDK 将单声道的音频渲染出双声道的音效。
- ROOM_ACOUSTICS_SPACIAL
- 空旷。
- ROOM_ACOUSTICS_ETHEREAL
- 空灵。
- ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND
- 虚拟环绕声,即 SDK 在双声道的基础上产生仿真的环绕声场,从而营造出具有环绕感的音效。
注意: 启用虚拟环绕声后,用户需要使用支持双声道的音频播放设备才能听到预期效果。
- ROOM_ACOUSTICS_3D_VOICE
-
3D 人声,即 SDK 将音频渲染出在用户周围环绕的效果。环绕周期默认为 10 秒。设置该音效后,你还可以调用 setAudioEffectParameters 修改环绕周期。
注意: 启用 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。
- STYLE_TRANSFORMATION_POPULAR
- 流行。
- PITCH_CORRECTION
- 电音,即 SDK 以主音音高为 C 的自然大调为基础修正音频的实际音高。设置该音效后,你还可以调用 setAudioEffectParameters 调整修音的基础调式和主音音高。
AUDIO_ENCODED_FRAME_OBSERVER_POSITION
音频编码内容。
枚举值
- AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD
- 1: 仅编码本地用户的音频。
- AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK
- 2: 仅编码所有远端用户的音频。
- AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED
- 3: 编码本地和所有远端用户混音后的音频。
AUDIO_ENCODING_TYPE
音频编码类型。
枚举值
- AUDIO_ENCODING_TYPE_AAC_16000_LOW
- AAC 编码格式,16000 Hz 采样率,低音质。音频时长为 10 分钟的文件编码后大小约为 1.2 MB。
- AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM
- AAC 编码格式,16000 Hz 采样率,中音质。音频时长为 10 分钟的文件编码后大小约为 2 MB。
- AUDIO_ENCODING_TYPE_AAC_32000_LOW
- AAC 编码格式,32000 Hz 采样率,低音质。音频时长为 10 分钟的文件编码后大小约为 1.2 MB。
- AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM
- AAC 编码格式,32000 Hz 采样率,中音质。音频时长为 10 分钟的文件编码后大小约为 2 MB。
- AUDIO_ENCODING_TYPE_AAC_32000_HIGH
- AAC 编码格式,32000 Hz 采样率,高音质。音频时长为 10 分钟的文件编码后大小约为 3.5 MB。
- AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM
- AAC 编码格式,48000 Hz 采样率,中音质。音频时长为 10 分钟的文件编码后大小约为 2 MB。
- AUDIO_ENCODING_TYPE_AAC_48000_HIGH
- AAC 编码格式,48000 Hz 采样率,高音质。音频时长为 10 分钟的文件编码后大小约为 3.5 MB。
- AUDIO_ENCODING_TYPE_OPUS_16000_LOW
- OPUS 编码格式,16000 Hz 采样率,低音质。音频时长为 10 分钟的文件编码后大小约为 2 MB。
- AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM
- OPUS 编码格式,16000 Hz 采样率,中音质。音频时长为 10 分钟的文件编码后大小约为 2 MB。
- AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM
- OPUS 编码格式,48000 Hz 采样率,中音质。音频时长为 10 分钟的文件编码后大小约为 2 MB。
- AUDIO_ENCODING_TYPE_OPUS_48000_HIGH
- OPUS 编码格式,48000 Hz 采样率,高音质。音频时长为 10 分钟的文件编码后大小约为 3.5 MB。
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_FRAME_TYPE
音频帧类型。
枚举值
- FRAME_TYPE_PCM16
- 0: PCM 16
AUDIO_FILE_RECORDING_TYPE
录音内容。在 startAudioRecording 中设置。
枚举值
- AUDIO_FILE_RECORDING_MIC
- 1: 仅录制本地用户的音频。
- AUDIO_FILE_RECORDING_PLAYBACK
- 2: 仅录制所有远端用户的音频。
- AUDIO_FILE_RECORDING_MIXED
- 3: 录制本地和所有远端用户混音后的音频。
AUDIO_MIXING_DUAL_MONO_MODE
声道模式。
枚举值
- AUDIO_MIXING_DUAL_MONO_AUTO
- 0:原始模式。
- AUDIO_MIXING_DUAL_MONO_L
- 1:左声道模式。该模式用左声道的音频替换右声道的音频,即用户只能听到左声道的音频。
- AUDIO_MIXING_DUAL_MONO_R
- 2:右声道模式。该模式用右声道的音频替换左声道的音频,即用户只能听到右声道的音频。
- AUDIO_MIXING_DUAL_MONO_MIX
- 3:混合模式。该模式将左右声道的数据叠加,即用户能同时听到左声道和右声道的音频。
AUDIO_MIXING_REASON_TYPE
音乐文件播放状态改变的原因。在 onAudioMixingStateChanged 回调中报告。
枚举值
- AUDIO_MIXING_REASON_OK
- 0: 成功打开音乐文件。
- AUDIO_MIXING_REASON_CAN_NOT_OPEN
- 701: 音乐文件打开出错。例如,本地音乐文件不存在、文件格式不支持或无法访问在线音乐文件 URL。
- AUDIO_MIXING_REASON_TOO_FREQUENT_CALL
- 702: 音乐文件打开太频繁。如需多次调用 startAudioMixing,请确保调用间隔大于 500 ms。
- AUDIO_MIXING_REASON_INTERRUPTED_EOF
- 703: 音乐文件播放中断。
- AUDIO_MIXING_REASON_ONE_LOOP_COMPLETED
- 721: 音乐文件完成一次循环播放。
- AUDIO_MIXING_REASON_ALL_LOOPS_COMPLETED
- 723: 音乐文件完成所有循环播放。
- AUDIO_MIXING_REASON_STOPPED_BY_USER
- 724: 成功调用 stopAudioMixing 停止播放音乐文件。
AUDIO_MIXING_STATE_TYPE
音乐文件播放状态。
枚举值
- AUDIO_MIXING_STATE_PLAYING
-
710: 音乐文件正常播放。
- AUDIO_MIXING_STATE_PAUSED
-
711: 音乐文件暂停播放。
- 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)
- AUDIO_MIXING_REASON_INTERRUPTED_EOF(703)
AUDIO_PROCESSING_CHANNELS
音频前处理的声道数。
在演唱会等需要增强真实感的场景中,本地用户可能需要采集立体声并发送立体声信号给远端用户。 例如,在演唱会的舞台上,主唱、吉他手、鼓手分别站在不同的位置,现场设备采集到了三者的立体声,并把立体声信号发送给远端用户,远端用户可以像亲临舞台一样听到来自不同方向的歌声、吉他声和鼓声。
- 前处理:调用 setAdvancedAudioOptions 并在 AdvancedAudioOptions 中设置 audioProcessingChannels 为 AUDIO_PROCESSING_STEREO (2)。
- 后处理:调用 setAudioProfile [2/2] 并将 profile 设为 AUDIO_PROFILE_MUSIC_STANDARD_STEREO (3) 或 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO (5)。
- 立体声设置仅在媒体音量下生效。详见音量类型(Android)和音量类型(iOS)。
- 在 iOS 上,立体声对设备性能要求较高。仅支持在 iOS 14.0 及以上版本的如下设备中实现立体声:
- iPhone XS
- iPhone XS Max
- iPhone XR
- iPhone 11
- iPhone 11 Pro
- iPhone 11 Pro Max
- iPhone SE (2020)
- 11 英寸 或 12.9 英寸 iPad Pro(第三代)
- 11 英寸 或 12.9 英寸 iPad Pro(第四代)
枚举值
- AUDIO_PROCESSING_MONO
- 1: (默认)单声道。
- AUDIO_PROCESSING_STEREO
- 2: 双声道。
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。
如需实现立体声,你还需要调用 setAdvancedAudioOptions 并在 AdvancedAudioOptions 中设置 audioProcessingChannels 为 AUDIO_PROCESSING_STEREO。
- AUDIO_PROFILE_MUSIC_HIGH_QUALITY
- 4: 指定 48 kHz 采样率,音乐编码,单声道,编码码率最大值为 96 Kbps。
- AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO
- 5: 指定 48 kHz 采样率,音乐编码,双声道,编码码率最大值为 128 Kbps。
如需实现立体声,你还需要调用 setAdvancedAudioOptions 并在 AdvancedAudioOptions 中设置 audioProcessingChannels 为 AUDIO_PROCESSING_STEREO。
- 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_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]。
AudioRoute
音频路由的类型。
枚举值
- ROUTE_DEFAULT
- -1: 使用默认的音频路由。
- ROUTE_HEADSET
- 0: 音频路由为带麦克风的耳机。
- ROUTE_EARPIECE
- 1: 音频路由为听筒。
- ROUTE_HEADSETNOMIC
- 2: 音频路由为不带麦克风的耳机。
- ROUTE_SPEAKERPHONE
- 3: 音频路由为设备自带的扬声器。
- ROUTE_LOUDSPEAKER
- 4: 音频路由为外接的扬声器。(仅适用于 iOS 和 macOS)
- ROUTE_BLUETOOTH
- 5: 音频路由为蓝牙耳机。
- ROUTE_HDMI
- 6: 音频路由为 HDMI 外围设备。(仅适用于 macOS)
- ROUTE_USB
- 7: 音频路由为 USB 外围设备。(仅适用于 macOS)
- ROUTE_DISPLAYPORT
- 8: 音频路由为 DisplayPort 外围设备。(仅适用于 macOS)
- ROUTE_AIRPLAY
- 9: 音频路由为 Apple AirPlay。(仅适用于 macOS)
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_GAME_STREAMING
- 3: 高音质场景,适用于音乐为主的场景。
- AUDIO_SCENARIO_CHATROOM
- 5: 聊天室场景,适用于用户需要频繁上下麦的场景。该场景下,观众会收到申请麦克风权限的弹窗提示。
- AUDIO_SCENARIO_CHORUS
- 7: 合唱场景。适用于网络条件良好,要求极低延时的实时合唱场景。
- AUDIO_SCENARIO_MEETING
- 8: 会议场景,适用于人声为主的多人会议。
- AUDIO_SCENARIO_NUM
- 枚举的数量。
AUDIO_SESSION_OPERATION_RESTRICTION
SDK 对 Audio Session 的操作权限。
枚举值
- AUDIO_SESSION_OPERATION_RESTRICTION_NONE
- 没有限制,SDK 可以对 Audio Session 进行更改。
- AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY
- SDK 不能更改 Audio Session 的 category。
- AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION
- SDK 不能更改 Audio Session 的 category、mode 或 categoryOptions。
- AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION
- 离开频道时,SDK 会保持 Audio Session 处于活动状态,例如在后台播放音频。
- AUDIO_SESSION_OPERATION_RESTRICTION_ALL
- 完全限制 SDK 对 Audio Session 的操作权限,SDK 不能再对 Audio Session 进行任何更改。
CAMERA_DIRECTION
摄像头方向。
枚举值
- CAMERA_REAR
- 后置摄像头。
- CAMERA_FRONT
- 前置摄像头。
CAPTURE_BRIGHTNESS_LEVEL_TYPE
本地采集的画质亮度级别。
枚举值
- CAPTURE_BRIGHTNESS_LEVEL_INVALID
- -1: SDK 未检测出本地采集的画质亮度级别。请等待几秒,通过下一次回调的 captureBrightnessLevel 获取亮度级别。
- CAPTURE_BRIGHTNESS_LEVEL_NORMAL
- 0: 本地采集的画质亮度正常。
- CAPTURE_BRIGHTNESS_LEVEL_BRIGHT
- 1: 本地采集的画质亮度偏亮。
- CAPTURE_BRIGHTNESS_LEVEL_DARK
- 2: 本地采集的画质亮度偏暗。
CHANNEL_MEDIA_RELAY_ERROR
跨频道媒体流转发出错的错误码。
枚举值
- RELAY_OK
- 0: 一切正常。
- RELAY_ERROR_SERVER_ERROR_RESPONSE
- 1: 服务器回应出错。
- RELAY_ERROR_SERVER_NO_RESPONSE
-
2: 服务器无回应。
你可以调用 leaveChannel [1/2] 方法离开频道。
该错误也可能是由于当前的 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 [1/2] 方法离开当前频道。
- 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: 直播场景。直播场景。当频道中超过两个用户时,建议使用该场景。
- CHANNEL_PROFILE_GAME
- 2: (已废弃)游戏场景。
- CHANNEL_PROFILE_CLOUD_GAMING
- 3: 互动场景。该场景对延时进行了优化。如果你的场景中有用户需要频道互动, 建议使用该场景。
CLIENT_ROLE_TYPE
直播场景里的用户角色。
枚举值
- CLIENT_ROLE_BROADCASTER
- 1: 主播。主播可以发流也可以收流。
- CLIENT_ROLE_AUDIENCE
- 2:(默认)观众。观众只能收流不能发流。
CLIENT_ROLE_CHANGE_FAILED_REASON
切换用户角色失败的原因。
枚举值
- CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS
1: 频道内主播人数达到上限。
注: 该枚举仅在开启 128 人功能后报告。主播人数的上限根据开启 128 人功能时实际配置的人数而定。- CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED
2: 请求被服务端拒绝。建议提示用户重新尝试切换用户角色。
- CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT
3: 请求超时。建议提示用户检查网络连接状况后重新尝试切换用户角色。
- CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED
4: 网络连接断开。可根据 onConnectionStateChanged 报告的 reason,排查网络连接失败的具体原因。
CLOUD_PROXY_TYPE
云代理类型。
枚举值
- NONE_PROXY
- 0:自动模式。SDK 默认开启该模式。在该模式下,SDK 优先连接 SD-RTN™,如果连接失败,自动切换到 TLS 443。
- UDP_PROXY
- 1:UDP 协议的云代理,即 Force UDP 云代理模式。在该模式下,SDK 始终通过 UDP 协议传输数据。
- TCP_PROXY
- 2:TCP(加密)协议的云代理,即 Force TCP 云代理模式。在该模式下,SDK 始终通过 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 和服务器连接保活超时,进入自动重连状态。
- CONNECTION_CHANGED_REJOIN_SUCCESS
- 15: 重新加入频道成功。
- CONNECTION_CHANGED_LOST
- 16: SDK 和服务器失去连接。
- CONNECTION_CHANGED_ECHO_TEST
- 17: 连接状态变化由回声测试引起。
CONNECTION_STATE_TYPE
网络连接状态。
枚举值
- CONNECTION_STATE_DISCONNECTED
-
1: 网络连接断开。该状态表示 SDK 处于:
- 调用 joinChannel [2/2] 加入频道前的初始化阶段。
- 或调用 leaveChannel [1/2] 后的离开频道阶段。
- 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 [1/2] 离开频道。
- 如果用户还想重新加入频道,则需要再次调用 joinChannel [2/2]。
- 如果 SDK 因服务器端使用 RESTful API 禁止加入频道,则 app 会收到 onConnectionStateChanged。
ContentInspectResult
鉴黄结果。
枚举值
- CONTENT_INSPECT_NEUTRAL
- 1:正常图片。
- CONTENT_INSPECT_SEXY
- 2:性感图片。
- CONTENT_INSPECT_PORN
- 3:色情图片。
CONTENT_INSPECT_TYPE
视频内容审核模块的类型。
枚举值
- CONTENT_INSPECT_INVALID
- 0:(默认)该功能模块无实际功能。请不要将 type 设为该值。
- CONTENT_INSPECT_SUPERVISE
- 2:视频截图。SDK 会对视频流进行截图并上传。
DEGRADATION_PREFERENCE
带宽受限时的视频编码降级偏好。
枚举值
- MAINTAIN_QUALITY
-
0:(默认)带宽受限时,视频编码时优先降低视频帧率,维持视频质量不变。该降级偏好适用于画质优先的场景。
注意: 通信(COMMUNICATION)场景下,本地发送的视频分辨率可能改变,远端用户需能处理这种情况, 详见 onVideoSizeChanged。 - MAINTAIN_FRAMERATE
- 1:带宽受限时,视频编码时优先降低视频质量,维持视频帧率不变。该降级偏好适用于流畅性优先且允许画质降低的场景。
- MAINTAIN_BALANCED
-
2:带宽受限时,视频编码时同时降低视频帧率和视频质量。MAINTAIN_BALANCED 的降幅比 MAINTAIN_QUALITY 和 MAINTAIN_FRAMERATE 降幅更低,适用于流畅性和画质均有限的场景。
注意: 本地发送的视频分辨率可能改变,远端用户需能处理这种情况,详见 onVideoSizeChanged。 - MAINTAIN_RESOLUTION
- 3: 带宽受限时,视频编码时优先降低视频帧率。
DIRECT_CDN_STREAMING_ERROR
CDN 推流出错原因。
枚举值
- DIRECT_CDN_STREAMING_ERROR_OK
- 0:推流状态正常。
- DIRECT_CDN_STREAMING_ERROR_FAILED
- 1:一般性错误,没有明确原因。你可以尝试重新推流。
- DIRECT_CDN_STREAMING_ERROR_AUDIO_PUBLICATION
- 2:音频推流出错。例如,本地音频采集设备未正常工作、被其他进程占用或没有使用权限。
- DIRECT_CDN_STREAMING_ERROR_VIDEO_PUBLICATION
- 3:视频推流出错。例如,本地视频采集设备未正常工作、被其他进程占用或没有使用权限。
- DIRECT_CDN_STREAMING_ERROR_NET_CONNECT
- 4:连接 CDN 失败。
- DIRECT_CDN_STREAMING_ERROR_BAD_NAME
- 5:URL 已用于推流。请使用新的 URL。
DIRECT_CDN_STREAMING_STATE
当前 CDN 推流状态。
枚举值
- DIRECT_CDN_STREAMING_STATE_IDLE
- 0:初始状态,即推流尚未开始。
- DIRECT_CDN_STREAMING_STATE_RUNNING
- 1:正在推流中。当你调用 startDirectCdnStreaming 成功推流时,SDK 会返回该值。
- DIRECT_CDN_STREAMING_STATE_STOPPED
- 2:推流已正常结束。当你调用 stopDirectCdnStreaming 主动停止推流时,SDK 会返回该值。
- DIRECT_CDN_STREAMING_STATE_FAILED
- 3:推流失败。你可以通过 onDirectCdnStreamingStateChanged 回调报告的信息排查问题,然后重新推流。
- DIRECT_CDN_STREAMING_STATE_RECOVERING
- 4:尝试重新连接 Agora 服务器和 CDN。最多尝试重连 10 次,如仍未成功恢复连接,则推流状态变为 DIRECT_CDN_STREAMING_STATE_FAILED。
EAR_MONITORING_FILTER_TYPE
耳返 audio filter。
枚举值
- EAR_MONITORING_FILTER_NONE
-
1<<0: 不在耳返中添加 audio filter。
- EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS
-
1<<1: 在耳返中添加人声效果 audio filter。如果你实现了美声、音效等功能,用户可以在耳返中听到添加效果后的声音。
- EAR_MONITORING_FILTER_NOISE_SUPPRESSION
-
1<<2: 在耳返中添加降噪 audio filter。
ENCRYPTION_ERROR_TYPE
内置加密的错误类型。
枚举值
- ENCRYPTION_ERROR_INTERNAL_FAILURE
- 0: 内部原因。
- ENCRYPTION_ERROR_DECRYPTION_FAILURE
- 1: 解密错误。请确保接收端和发送端使用的加密模式或密钥一致。
- ENCRYPTION_ERROR_ENCRYPTION_FAILURE
- 2: 加密错误。
ENCRYPTION_MODE
内置加密模式。
Agora 推荐使用 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
- 枚举值边界。
ERROR_CODE_TYPE
错误代码。
错误代码意味着 SDK 遇到不可恢复的错误,需要应用程序干预。例如:打开摄像头失败时会返回错误,app 需要提示用户不能使用摄像头。
枚举值
- ERR_OK
- 0:没有错误。
- ERR_FAILED
- 1:一般性的错误(没有明确归类的错误原因)。请重新调用方法。
- ERR_INVALID_ARGUMENT
- 2:方法中设置了无效的参数。例如指定的频道名中含有非法字符。请重新设置参数。
- ERR_NOT_READY
- 3:SDK 尚未准备好。可能的原因有:
- IRtcEngine 初始化失败。请重新初始化 IRtcEngine。
- 调用方法时用户尚未加入频道。请检查方法的调用逻辑。
- 调用 rate 或 complain 方法时用户尚未离开频道。请检查方法的调用逻辑。
- 音频模块未开启。
- 程序集不完整。
- ERR_NOT_SUPPORTED
- 4:IRtcEngine 当前状态不支持该操作。可能的原因有:
- 使用内置加密时,设置的加密模式不正确,或加载外部加密库失败。请检查加密的枚举值是否正确,或重新加载外部加密库。
- ERR_REFUSED
- 5:方法调用被拒绝。可能的原因有:
- IRtcEngine 初始化失败。请重新初始化 IRtcEngine。
- 在加入频道时,将频道名设为空字符
""
。请重新设置频道名。 - 多频道场景下,在调用 joinChannelEx 方法加入频道时,设置的频道名已存在。请重新设置频道名。
- ERR_BUFFER_TOO_SMALL
- 6:缓冲区大小不足以存放返回的数据。
- ERR_NOT_INITIALIZED
- 7:IRtcEngine 尚未初始化就调用方法。请确认在调用该方法前已创建 IRtcEngine 对象并完成初始化。
- ERR_NO_PERMISSION
- 9:没有操作权限。请检查用户是否授予了 app 音视频设备的使用权限。
- ERR_TIMEDOUT
- 10: 方法调用超时。有些方法调用需要 SDK 返回结果,如果 SDK 处理事件过长,超过 10 秒没有返回,会出现此错误。
- ERR_JOIN_CHANNEL_REJECTED
- 17:加入频道被拒绝。可能的原因有:
- 用户已经在频道中。Agora 推荐通过 onConnectionStateChanged 回调判断用户是否在频道中。除收到 CONNECTION_STATE_DISCONNECTED(1) 状态外,不要再次调用该方法加入频道。
- 用户在调用 startEchoTest [2/3] 进行通话测试后,未调用 stopEchoTest 结束当前测试就尝试加入频道。开始通话测试后,需要先调用 stopEchoTest 结束当前测试,再加入频道。
- ERR_LEAVE_CHANNEL_REJECTED
- 18:离开频道失败。可能的原因有:
- 调用 leaveChannel [1/2] 前,用户已离开频道。停止调用该方法即可。
- 用户尚未加入频道,就调用 leaveChannel [1/2] 退出频道。这种情况下无需额外操作。
- ERR_ALREADY_IN_USE
- 19:资源已被占用,不能重复使用。
- ERR_ABORTED
- 20:SDK 放弃请求,可能由于请求的次数太多。
- ERR_INIT_NET_ENGINE
- 21:Windows 下特定的防火墙设置导致 IRtcEngine 初始化失败然后崩溃。
- ERR_RESOURCE_LIMITED
- 22:SDK 分配资源失败,可能由于 app 占用资源过多或系统资源耗尽。
- ERR_INVALID_APP_ID
- 101:不是有效的 App ID。请更换有效的 App ID 重新加入频道。
- ERR_INVALID_CHANNEL_NAME
- 102:不是有效的频道名。可能的原因是设置的参数数据类型不正确。请更换有效的频道名重新加入频道。
- ERR_NO_SERVER_RESOURCES
- 103:无法获取当前区域的服务器资源。请在初始化 IRtcEngine 时尝试指定其他区域。
- ERR_TOKEN_EXPIRED
- 109:当前使用的 Token 过期,不再有效。请在服务端申请生成新的 Token,并调用 renewToken 更新 Token。
- 弃用:
- 该枚举已废弃。请改用 onConnectionStateChanged 回调中的 CONNECTION_CHANGED_TOKEN_EXPIRED(9)。
- ERR_INVALID_TOKEN
- 110:Token 无效。一般有以下原因:
- 在 Agora 控制台中启用了 App 证书,但未使用 App ID + Token 鉴权。当项目启用了 App 证书,就必须使用 Token 鉴权。
- 生成 Token 时填入的
uid
字段,和用户加入频道时填入的 uid 不匹配。
- 弃用:
- 该枚举已废弃。请改用 onConnectionStateChanged 回调中的 CONNECTION_CHANGED_INVALID_TOKEN(8)。
- ERR_CONNECTION_INTERRUPTED
- 111:网络连接中断。SDK 在和服务器建立连接后,失去网络连接超过 4 秒。
- ERR_CONNECTION_LOST
- 112:网络连接丢失。网络连接中断,且 SDK 无法在 10 秒内连接服务器。
- ERR_NOT_IN_CHANNEL
- 113:调用 sendStreamMessage 方法时用户不在频道内。
- ERR_SIZE_TOO_LARGE
- 114:在调用 sendStreamMessage 时,发送的数据长度大于 1 KB。
- ERR_BITRATE_LIMIT
- 115:在调用 sendStreamMessage 时,发送数据的频率超过限制(6 KB/s)。
- ERR_TOO_MANY_DATA_STREAMS
- 116:在调用 createDataStream [2/2] 时,创建的数据流超过限制(5 个)。
- ERR_STREAM_MESSAGE_TIMEOUT
- 117:数据流发送超时。
- ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED
- 119:用户切换角色失败,请尝试重新加入频道。
- ERR_DECRYPTION_FAILED
- 120:解密失败。可能是用户加入频道时使用了错误的密码。请检查用户加入频道时填入的密码,或引导用户尝试重新加入频道。
- ERR_INVALID_USER_ID
- 121:该用户 ID 无效。
- ERR_CLIENT_IS_BANNED_BY_SERVER
- 123:该用户被服务器禁止。
- ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH
- 130:SDK 不支持将加密过的流推到 CDN 上。
- ERR_INVALID_USER_ACCOUNT
- 134:无效的 user account,可能是因为设置了无效的参数。
- ERR_LOAD_MEDIA_ENGINE
- 1001:加载媒体引擎失败。
- ERR_ADM_GENERAL_ERROR
- 1005:音频设备出现错误(未指明何种错误)。请检查音频设备是否被其他应用占用,或者尝试重新进入频道。
- ERR_ADM_INIT_PLAYOUT
- 1008:初始化播放设备出错。请检查播放设备是否被其他应用占用,或者尝试重新进入频道。
- ERR_ADM_START_PLAYOUT
- 1009:启动播放设备出错。请检查播放设备是否正常。
- ERR_ADM_STOP_PLAYOUT
- 1010:停止播放设备出错。
- ERR_ADM_INIT_RECORDING
- 1011:初始化录音设备出错。请检查录音设备是否正常,或者尝试重新进入频道。
- ERR_ADM_START_RECORDING
- 1012:启动录音设备出错。请检查录音设备是否正常。
- ERR_ADM_STOP_RECORDING
- 1013:停止录音设备出错。
- ERR_VDM_CAMERA_NOT_AUTHORIZED
- 1501:没有摄像头使用权限。请检查是否已经打开摄像头权限。
EXPERIENCE_POOR_REASON
接收远端音频时,本地用户主观体验质量较差的原因。
枚举值
- 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
接收远端音频时,本地用户的主观体验质量。
枚举值
- EXPERIENCE_QUALITY_GOOD
- 0: 主观体验质量较好。
- EXPERIENCE_QUALITY_BAD
- 1: 主观体验质量较差。
EXTERNAL_VIDEO_SOURCE_TYPE
外部视频帧编码类型。
枚举值
- VIDEO_FRAME
- 0:未编码视频帧。
- ENCODED_VIDEO_FRAME
- 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
注意: 仅适用于 Windows 和 macOS 平台。
HEADPHONE_EQUALIZER_PRESET
预设的耳机均衡器类型。
- 自从
- v4.0.1
枚举值
- HEADPHONE_EQUALIZER_OFF
- 关闭耳机均衡器,收听原始音频。
- HEADPHONE_EQUALIZER_OVEREAR
- 使用头戴式耳机的均衡器。
- HEADPHONE_EQUALIZER_INEAR
- 使用入耳式耳机的均衡器。
INTERFACE_ID_TYPE
接口类。
枚举值
- AGORA_IID_AUDIO_DEVICE_MANAGER
- IAudioDeviceManager 接口类。
- AGORA_IID_VIDEO_DEVICE_MANAGER
- IVideoDeviceManager 接口类。
- AGORA_IID_RTC_ENGINE_PARAMETER
- 该接口类已废弃。
- AGORA_IID_MEDIA_ENGINE
- IMediaEngine 接口类。
- AGORA_IID_SIGNALING_ENGINE
- 该接口类已废弃。
- AGORA_IID_LOCAL_SPATIAL_AUDIO
- ILocalSpatialAudioEngine 接口类。
- AGORA_IID_MEDIA_RECORDER
- IMediaRecorder 接口类。
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 质量探测。一个可能的原因是网络连接中断。
LOCAL_AUDIO_STREAM_ERROR
本地音频出错原因。
枚举值
- LOCAL_AUDIO_STREAM_ERROR_OK
- 0:本地音频状态正常。
- LOCAL_AUDIO_STREAM_ERROR_FAILURE
- 1:本地音频出错原因不明确。建议提示用户尝试重新加入频道。
- LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION
- 2:没有权限启动本地音频采集设备。请提示用户开启权限。
- 弃用:
- 该枚举已废弃。请改用 onPermissionError 回调中的 RECORD_AUDIO。
- LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY
- 3:(仅适用于 Android 和 iOS)本地音频采集设备已经在使用中。请提示用户检查麦克风是否被其他应用占用。麦克风空闲约 5 秒后本地音频采集会自动恢复,你也可以在麦克风空闲后尝试重新加入频道。
- LOCAL_AUDIO_STREAM_ERROR_RECORD_FAILURE
- 4:本地音频采集失败。
- LOCAL_AUDIO_STREAM_ERROR_ENCODE_FAILURE
- 5:本地音频编码失败。
- LOCAL_AUDIO_STREAM_ERROR_NO_RECORDING_DEVICE
- 6:(仅适用于 Windows)无本地音频采集设备。请提示用户在设备的控制面板中检查麦克风是否与设备连接正常,检查麦克风是否正常工作。
- LOCAL_AUDIO_STREAM_ERROR_NO_PLAYOUT_DEVICE
- 7:(仅适用于 Windows)无本地音频播放设备。请提示用户在设备的控制面板中检查扬声器是否与设备连接正常,检查扬声器是否正常工作。
- LOCAL_AUDIO_STREAM_ERROR_INTERRUPTED
- 8:(仅适用于 Android 和 iOS)本地音频采集被系统来电、Siri、闹钟中断。如需恢复本地音频采集,请用户中止电话、Siri、闹钟。
- LOCAL_AUDIO_STREAM_ERROR_RECORD_INVALID_ID
- 9:(仅适用于 Windows)本地音频采集设备的 ID 无效。请检查音频采集设备 ID。
- LOCAL_AUDIO_STREAM_ERROR_PLAYOUT_INVALID_ID
- 10:(仅适用于 Windows)本地音频播放设备的 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_PROXY_MODE
与声网私有媒体服务器的连接模式。
枚举值
- ConnectivityFirst
- 0:SDK 优先尝试连接指定的声网私有媒体服务器;如果无法连接到指定的声网私有媒体服务器,则连接声网 SD-RTN™。
- LocalOnly
- 1:SDK 只尝试连接指定的声网私有媒体服务器。
LOCAL_VIDEO_STREAM_ERROR
本地视频出错原因。
枚举值
- LOCAL_VIDEO_STREAM_ERROR_OK
- 0:本地视频状态正常。
- LOCAL_VIDEO_STREAM_ERROR_FAILURE
- 1:出错原因不明确。
- LOCAL_VIDEO_STREAM_ERROR_DEVICE_NO_PERMISSION
- 2:没有权限启动本地视频采集设备。请提示用户开启权限再重新加入频道。
- 弃用:
- 该枚举已废弃。请改用 onPermissionError 回调中的 CAMERA。
- 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_DEVICE_NOT_FOUND
- 8:找不到本地视频采集设备。需检查摄像头是否与设备正常连接、摄像头是否正常工作,或者尝试重新加入频道。
- LOCAL_VIDEO_STREAM_ERROR_DEVICE_DISCONNECTED
- 9:(仅适用于 macOS)当前正在使用的视频采集设备已经断开连接(例如,被拔出)。
- LOCAL_VIDEO_STREAM_ERROR_DEVICE_INVALID_ID
- 10:(仅适用于 macOS 和 Windows)SDK 无法在视频设备列表中找到该视频设备。请检查视频设备 ID 是否有效。
- LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_MINIMIZED
- 11:(仅适用于 macOS)调用 startScreenCaptureByWindowId 方法共享窗口时,共享窗口处于最小化的状态。SDK 无法共享被最小化的窗口。请在应用层对此类窗口取消最小化,例如,将窗口最大化。
- LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_CLOSED
-
12:(仅适用于 macOS 和 Windows)该错误码表示通过窗口 ID 共享的窗口已关闭,或通过窗口 ID 共享的全屏窗口已退出全屏。退出全屏模式后,远端用户将无法看到共享的窗口。为避免远端用户看到黑屏,Agora 建议你立即结束本次共享。
报告该错误码的常见场景:- 本地用户关闭共享的窗口时,SDK 会报告该错误码。
- 本地用户先放映幻灯片,然后共享放映中的幻灯片。结束放映时,SDK 会报告该错误码。
- 本地用户先全屏观看网页视频或网页文档,然后共享网页视频或网页文档。结束全屏时,SDK 会报告该错误码。
- LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_OCCLUDED
- 13:(仅适用于 Windows)待共享的窗口被其他窗口遮挡住,被遮挡住的部分在共享时会被 SDK 涂黑。
- LOCAL_VIDEO_STREAM_ERROR_DEVICE_SYSTEM_PRESSURE
- 101:由于系统压力过大,导致当前视频采集设备不可用。
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: 输出 LOG_FILTER_CRITICAL、LOG_FILTER_ERROR、LOG_FILTER_WARN 和 LOG_FILTER_INFO 级别的日志信息。我们推荐你将日志级别设为该等级。
- LOG_FILTER_WARN
- 0x000e: 输出 LOG_FILTER_CRITICAL、LOG_FILTER_ERROR 和 LOG_FILTER_WARN 级别的日志信息。
- LOG_FILTER_ERROR
- 0x000c: 输出 LOG_FILTER_CRITICAL 和 LOG_FILTER_ERROR 级别的日志信息。
- LOG_FILTER_CRITICAL
- 0x0008: 输出 LOG_FILTER_CRITICAL 级别的日志信息。
LOG_LEVEL
日志输出等级。
枚举值
- 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
级别的日志。
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_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_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_PLAYER_ERROR
播放器的错误码。
枚举值
- PLAYER_ERROR_NONE
- 0: 没有错误。
- PLAYER_ERROR_INVALID_ARGUMENTS
- -1: 不正确的参数。
- PLAYER_ERROR_INTERNAL
- -2: 内部错误。
- PLAYER_ERROR_NO_RESOURCE
- -3: 没有 resource。
- PLAYER_ERROR_INVALID_MEDIA_SOURCE
- -4: 无效的 resource。
- PLAYER_ERROR_UNKNOWN_STREAM_TYPE
- -5: 未知的媒体流类型。
- PLAYER_ERROR_OBJ_NOT_INITIALIZED
- -6: 对象没有初始化。
- PLAYER_ERROR_CODEC_NOT_SUPPORTED
- -7: 解码器不支持该 codec。
- PLAYER_ERROR_VIDEO_RENDER_FAILED
- -8: 无效的 renderer。
- PLAYER_ERROR_INVALID_STATE
- -9: 播放器内部状态错误。
- PLAYER_ERROR_URL_NOT_FOUND
- -10: 未找到该 URL。
- PLAYER_ERROR_INVALID_CONNECTION_STATE
- -11: 播放器与 Agora 服务器的连接无效。
- PLAYER_ERROR_SRC_BUFFER_UNDERFLOW
- -12: 播放缓冲区数据不足。
- PLAYER_ERROR_INTERRUPTED
- -13: 播放被异常打断而结束。
- PLAYER_ERROR_NOT_SUPPORTED
- -14: SDK 不支持的接口调用。
- PLAYER_ERROR_UNKNOWN
- -17:未知错误。
MEDIA_PLAYER_EVENT
播放器事件。
枚举值
- PLAYER_EVENT_SEEK_BEGIN
- 0: 开始定位。
- PLAYER_EVENT_SEEK_COMPLETE
- 1: 完成定位。
- PLAYER_EVENT_SEEK_ERROR
- 2: 定位出错。
- PLAYER_EVENT_AUDIO_TRACK_CHANGED
- 5: 当前音轨发生改变。
- PLAYER_EVENT_BUFFER_LOW
- 6: 当前缓冲的数据不足以支持播放。
- PLAYER_EVENT_BUFFER_RECOVER
- 7: 当前缓冲的数据刚好能支持播放。
- PLAYER_EVENT_FREEZE_START
- 8: 音频或视频出现卡顿。
- PLAYER_EVENT_FREEZE_STOP
- 9: 音频和视频均停止卡顿。
- PLAYER_EVENT_SWITCH_BEGIN
- 10: 开始切换媒体资源。
- PLAYER_EVENT_SWITCH_COMPLETE
- 11: 媒体资源切换完成。
- PLAYER_EVENT_SWITCH_ERROR
- 12: 媒体资源切换出错。
- PLAYER_EVENT_FIRST_DISPLAYED
- 13: 视频首帧出图。
- PLAYER_EVENT_REACH_CACHE_FILE_MAX_COUNT
- 14:达到可缓存文件的数量上限。
- PLAYER_EVENT_REACH_CACHE_FILE_MAX_SIZE
- 15:达到可缓存文件的大小上限。
MEDIA_PLAYER_METADATA_TYPE
媒体附属信息数据类型。
枚举值
- PLAYER_METADATA_TYPE_UNKNOWN
- 0: 未知类型。
- PLAYER_METADATA_TYPE_SEI
- 1: SEI (补充增强信息)类型。
MEDIA_PLAYER_STATE
播放器的状态。
枚举值
- PLAYER_STATE_IDLE
- 0: 默认状态。播放器会在你打开媒体文件之前和结束播放之后返回该状态码。
- PLAYER_STATE_OPENING
- 正在打开媒体文件。
- PLAYER_STATE_OPEN_COMPLETED
- 成功打开媒体文件。
- PLAYER_STATE_PLAYING
- 正在播放。
- PLAYER_STATE_PAUSED
- 暂停播放。
- PLAYER_STATE_PLAYBACK_COMPLETED
- 播放完毕。
- PLAYER_STATE_PLAYBACK_ALL_LOOPS_COMPLETED
- 循环播放已结束。
- PLAYER_STATE_STOPPED
- 播放已停止。
- PLAYER_STATE_FAILED
- 100: 播放失败。
MediaRecorderContainerFormat
录制文件的格式。
枚举值
- FORMAT_MP4
- 1:(默认)MP4
MediaRecorderStreamType
录制内容。
枚举值
- STREAM_TYPE_AUDIO
- 仅音频。
- STREAM_TYPE_VIDEO
- 仅视频。
- STREAM_TYPE_BOTH
- (默认)音视频。
MEDIA_SOURCE_TYPE
媒体源类型。
枚举值
- AUDIO_PLAYOUT_SOURCE
- 0: 音频播放设备。
- AUDIO_RECORDING_SOURCE
- 1: 音频采集设备。
- PRIMARY_CAMERA_SOURCE
- 2: 第一个摄像头
- SECONDARY_CAMERA_SOURCE
- 3: 第二个摄像头。
- UNKNOWN_MEDIA_SOURCE
- 100: 未知媒体源。
MEDIA_STREAM_TYPE
媒体流的类型。
枚举值
- STREAM_TYPE_UNKNOWN
- 0: 未知类型。
- STREAM_TYPE_VIDEO
- 1: 视频流。
- STREAM_TYPE_AUDIO
- 2: 音频流。
- STREAM_TYPE_SUBTITLE
- 3: 字幕流。
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 固定输出人像(竖屏)模式的视频,如果采集到的视频是横屏模式,则视频编码器会对其进行裁剪。该模式适用于当接收端无法调整视频方向时,如使用旁路推流场景下。
PERMISSION_TYPE
设备权限类型。
枚举值
- RECORD_AUDIO
- 0: 音频采集设备的权限。
- CAMERA
- 1: 摄像头权限。
PLAYER_PRELOAD_EVENT
预加载媒体资源时发生的事件。
枚举值
- PLAYER_PRELOAD_EVENT_BEGIN
- 0: 开始预加载媒体资源。
- PLAYER_PRELOAD_EVENT_COMPLETE
- 1: 预加载媒体资源完成。
- PLAYER_PRELOAD_EVENT_ERROR
- 2: 预加载媒体资源出错。
QUALITY_ADAPT_INDICATION
自上次统计后本地视频质量的自适应情况(基于目标帧率和目标码率)。
枚举值
- ADAPT_NONE
- 0:本地视频质量不变。
- ADAPT_UP_BANDWIDTH
- 1:因网络带宽增加,本地视频质量改善。
- ADAPT_DOWN_BANDWIDTH
- 2:因网络带宽减少,本地视频质量变差。
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: 只读模式,用户仅从 AudioFrame 获取原始数据,不作任何修改。例如: 若用户通过 Agora SDK 采集数据,自己进行旁路推流,则可以选择该模式。
- RAW_AUDIO_FRAME_OP_MODE_READ_WRITE
- 2: 读写模式, 用户从 AudioFrame 获取并修改数据,并返回给 SDK 进行编码传输。例如: 若用户自己有音效处理模块,且想要根据实际需要对数据进行前处理(例如变声),则可以选择该模式。
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: 录制配置改变。
RecorderState
当前的录制状态。
枚举值
- RECORDER_STATE_ERROR
- -1: 音视频流录制出错,错误原因详见 RecorderErrorCode。
- RECORDER_STATE_START
- 2: 音视频流录制开始。
- RECORDER_STATE_STOP
- 3: 音视频流录制停止。
REMOTE_AUDIO_STATE_REASON
远端音频流状态切换原因。
枚举值
- REMOTE_AUDIO_REASON_INTERNAL
- 0: 音频状态发生改变时,会报告该原因。
- REMOTE_AUDIO_REASON_NETWORK_CONGESTION
- 1: 网络阻塞。
- REMOTE_AUDIO_REASON_NETWORK_RECOVERY
- 2: 网络恢复正常。
- REMOTE_AUDIO_REASON_LOCAL_MUTED
- 3: 本地用户停止接收远端音频流或本地用户禁用音频模块。
- REMOTE_AUDIO_REASON_LOCAL_UNMUTED
- 4: 本地用户恢复接收远端音频流或本地用户启动音频模块。
- REMOTE_AUDIO_REASON_REMOTE_MUTED
- 5: 远端用户停止发送音频流或远端用户禁用音频模块。
- REMOTE_AUDIO_REASON_REMOTE_UNMUTED
- 6: 远端用户恢复发送音频流或远端用户启用音频模块。
- REMOTE_AUDIO_REASON_REMOTE_OFFLINE
- 7: 远端用户离开频道。
REMOTE_AUDIO_STATE
远端音频流状态。
枚举值
- REMOTE_AUDIO_STATE_STOPPED
- 0: 远端音频默认初始状态。在 REMOTE_AUDIO_REASON_LOCAL_MUTED、REMOTE_AUDIO_REASON_REMOTE_MUTED 或 REMOTE_AUDIO_REASON_REMOTE_OFFLINE 的情况下,会报告该状态。
- REMOTE_AUDIO_STATE_STARTING
- 1: 本地用户已接收远端音频首包。
- REMOTE_AUDIO_STATE_DECODING
- 2: 远端音频流正在解码,正常播放。在 REMOTE_AUDIO_REASON_NETWORK_RECOVERY、REMOTE_AUDIO_REASON_LOCAL_UNMUTED 或 REMOTE_AUDIO_REASON_REMOTE_UNMUTED 的情况下,会报告该状态。
- REMOTE_AUDIO_STATE_FROZEN
- 3: 远端音频流卡顿。在 REMOTE_AUDIO_REASON_NETWORK_CONGESTION 的情况下,会报告该状态。
- REMOTE_AUDIO_STATE_FAILED
- 4: 远端音频流播放失败。在 REMOTE_AUDIO_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
远端视频流状态。
枚举值
- 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 的情况下,会报告该状态。
VIDEO_STREAM_TYPE
视频流类型。
枚举值
- VIDEO_STREAM_HIGH
- 0: 视频大流,即高分辨率、高码率视频流。
- VIDEO_STREAM_LOW
- 1: 视频小流,即低分辨率、低码率视频流。
RENDER_MODE_TYPE
视频显示模式。
枚举值
- RENDER_MODE_HIDDEN
- 1: 视频尺寸等比缩放。优先保证视窗被填满。因视频尺寸与显示视窗尺寸不一致而多出的视频将被截掉。
- RENDER_MODE_FIT
- 2: 视频尺寸等比缩放。优先保证视频内容全部显示。因视频尺寸与显示视窗尺寸不一致造成的视窗未被填满的区域填充黑色。
- RENDER_MODE_ADAPTIVE
-
- 弃用:
- 3: 该模式已弃用。
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:参数无效。请检查输入参数是否正确。
- RTMP_STREAM_PUBLISH_ERROR_ENCRYPTED_STREAM_NOT_ALLOWED
- 2:推流已加密,不能推流。
- RTMP_STREAM_PUBLISH_ERROR_CONNECTION_TIMEOUT
- 3:推流超时未成功。
- RTMP_STREAM_PUBLISH_ERROR_INTERNAL_SERVER_ERROR
- 4:推流服务器出现错误。
- 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 方法更新转码属性。请检查你的应用代码逻辑。
- RTMP_STREAM_PUBLISH_ERROR_NET_DOWN
- 14:主播的网络出错。
- RTMP_STREAM_PUBLISH_ERROR_INVALID_APPID
- 15:你的 App ID 没有使用 Agora 推流服务的权限。
- RTMP_STREAM_UNPUBLISH_ERROR_OK
- 100:推流已正常结束。当你结束推流后,SDK 会返回该值。
RTMP_STREAM_PUBLISH_STATE
推流状态。
枚举值
- RTMP_STREAM_PUBLISH_STATE_IDLE
- 0:推流未开始或已结束。
- RTMP_STREAM_PUBLISH_STATE_CONNECTING
- 1:正在连接 Agora 推流服务器和 CDN 服务器。
- 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 秒太长,也可以主动尝试重连。
- RTMP_STREAM_PUBLISH_STATE_FAILURE
- 4:推流失败。失败后,你可以通过返回的错误码排查错误原因。
- RTMP_STREAM_PUBLISH_STATE_DISCONNECTING
- 5:SDK 正在与 Agora 推流服务器和 CDN 服务器断开连接。当你调用 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: 预留参数。
ScreenCaptureSourceType
共享目标的类型。在 ScreenCaptureSourceInfo 中设置。
枚举值
- ScreenCaptureSourceType_Unknown
- -1:未知。
- ScreenCaptureSourceType_Window
- 0:共享目标为某一个窗口。
- ScreenCaptureSourceType_Screen
- 1:共享目标为某一个显示器的屏幕。
- ScreenCaptureSourceType_Custom
- 2:预留参数。
SCREEN_SCENARIO_TYPE
屏幕共享的场景。
枚举值
- SCREEN_SCENARIO_DOCUMENT
- 1:(默认)文档。该场景下,优先保障共享的画质,并降低了接收端看到共享视频的延时。如果你共享文档、幻灯片、表格,可以设置该场景。
- SCREEN_SCENARIO_GAMING
- 2: 游戏。该场景下,优先保障共享的流畅性。如果你共享游戏,可以设置该场景。
- SCREEN_SCENARIO_VIDEO
- 3: 视频。该场景下,优先保障共享的流畅性。如果你共享电影、视频直播,可以设置该场景。
- SCREEN_SCENARIO_RDC
- 4: 远程控制。该场景下,优先保障共享的画质,并降低了接收端看到共享视频的延时。如果你共享被远程控制的设备桌面,可以设置该场景。
SIMULCAST_STREAM_MODE
发送视频流的模式。
- 自从
- v4.0.1
枚举值
- AUTO_SIMULCAST_STREAM
- -1:默认不发送小流,直至收到接收端发起的订阅小流申请时,自动切换为发送小流模式。
- DISABLE_SIMULCAST_STREAM
- 0:始终不发送小流。
- ENABLE_SIMULCAST_STREAM
- 1:始终发送小流。
STREAM_FALLBACK_OPTIONS
音视频流回退处理选项。
枚举值
- STREAM_FALLBACK_OPTION_DISABLED
- 0: 上行/下行网络较弱时,不对音视频流作回退处理,但不能保证音视频流的质量。
- STREAM_FALLBACK_OPTION_VIDEO_STREAM_LOW
- 1: 在下行网络条件较差时只接收视频小流(低分辨率、低码率视频流)。该选项只对 setRemoteSubscribeFallbackOption 有效。
- 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: 发布成功。
SEG_MODEL_TYPE
进行背景处理的算法。
枚举值
- SEG_MODEL_AI
- 1: (默认) 适用于所有场景下的背景处理算法。
- SEG_MODEL_GREEN
- 2: 仅适用于绿幕背景下的背景处理算法。
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) 停止接收远端音频流。
- 调用 muteRemoteVideoStream(true)、 muteAllRemoteVideoStreams(true) 停止接收远端视频流。
- 远端用户:
- SUB_STATE_SUBSCRIBING
- 2: 正在订阅。
- SUB_STATE_SUBSCRIBED
- 3: 收到了远端流,订阅成功。
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_BUFFER_ARRAY
- 2: 类型为原始数据。
- VIDEO_BUFFER_TEXTURE
- 3: 类型为
Texture
。
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
- 1:标准 VP8。
- VIDEO_CODEC_H264
- 2:标准 H.264。
- VIDEO_CODEC_H265
- 3:标准 H.265。
- VIDEO_CODEC_GENERIC
-
6:Generic。
本类型主要用于传输视频裸数据(比如用户已加密的视频帧),该类型视频帧以回调的形式返回给用户,需要用户自行解码与渲染。
- VIDEO_CODEC_GENERIC_JPEG
- 20:Generic JPEG。
本类型所需的算力较小,可用于算力有限的 IoT 设备。
VIDEO_CODEC_TYPE_FOR_STREAM
转码输出视频流的编解码类型。
枚举值
- VIDEO_CODEC_H264_FOR_STREAM
- 1:(默认)H.264。
- VIDEO_CODEC_H265_FOR_STREAM
- 2:H.265。
VideoContentHint
屏幕共享的内容类型。
枚举值
- CONTENT_HINT_NONE
- (默认)无指定的内容类型。
- CONTENT_HINT_MOTION
- 内容类型为动画。当共享的内容是视频、电影或视频游戏时,推荐选择该内容类型。
- CONTENT_HINT_DETAILS
- 内容类型为细节。当共享的内容是图片或文字时,推荐选择该内容类型。
VIDEO_FRAME_TYPE
视频帧类型。
枚举值
- VIDEO_FRAME_TYPE_BLANK_FRAME
- 0: 黑帧。
- VIDEO_FRAME_TYPE_KEY_FRAME
- 3: 关键帧。
- VIDEO_FRAME_TYPE_DELTA_FRAME
- 4: Delta 帧。
- VIDEO_FRAME_TYPE_B_FRAME
- 5: B 帧。
- VIDEO_FRAME_TYPE_DROPPABLE_FRAME
- 6: 丢弃帧。
- VIDEO_FRAME_TYPE_UNKNOW
- 未知帧。
VIDEO_MIRROR_MODE_TYPE
镜像模式类型。
枚举值
- VIDEO_MIRROR_MODE_AUTO
- 0:(默认)由 SDK 决定镜像模式。
- VIDEO_MIRROR_MODE_ENABLED
- 1: 启用镜像模式。
- VIDEO_MIRROR_MODE_DISABLED
- 2: 关闭镜像模式。
VIDEO_MODULE_POSITION
视频观测位置。
枚举值
- POSITION_POST_CAPTURER
- 1: 本地采集视频数据后的位置,对应 onCaptureVideoFrame 回调。
- POSITION_PRE_RENDERER
- 2: 接收远端发送视频前的位置,对应 onRenderVideoFrame 回调。
- POSITION_PRE_ENCODER
- 4: 本地视频编码前的位置,对应 onPreEncodeVideoFrame 回调。
VIDEO_ORIENTATION
视频顺时针旋转信息。
枚举值
- VIDEO_ORIENTATION_0
- 0:(默认)顺时针旋转 0 度。
- VIDEO_ORIENTATION_90
- 90: 顺时针旋转 90 度。
- VIDEO_ORIENTATION_180
- 180: 顺时针旋转 180 度。
- VIDEO_ORIENTATION_270
- 270: 顺时针旋转 270 度。
VIDEO_PIXEL_FORMAT
视频像素格式。
枚举值
- VIDEO_PIXEL_DEFAULT
- 0: 原始视频像素格式。
- VIDEO_PIXEL_I420
- 1: I420 格式。
- VIDEO_PIXEL_RGBA
- 4: RGBA 格式。
- VIDEO_PIXEL_NV12
- 8: NV12 格式。
- VIDEO_PIXEL_I422
- 16: I422 格式。
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。
VIDEO_SOURCE_TYPE
视频源的类型。
枚举值
- VIDEO_SOURCE_CAMERA_PRIMARY
- (默认)第一个摄像头。
- VIDEO_SOURCE_CAMERA
- 摄像头。
- VIDEO_SOURCE_CAMERA_SECONDARY
- 第二个摄像头。
- VIDEO_SOURCE_SCREEN_PRIMARY
- 第一个屏幕。
- VIDEO_SOURCE_SCREEN
- 屏幕。
- VIDEO_SOURCE_SCREEN_SECONDARY
- 第二个屏幕。
- VIDEO_SOURCE_CUSTOM
- 自定义的视频源。
- VIDEO_SOURCE_MEDIA_PLAYER
- 媒体播放器共享的视频源。
- VIDEO_SOURCE_RTC_IMAGE_PNG
- 视频源为 PNG 图片。
- VIDEO_SOURCE_RTC_IMAGE_JPEG
- 视频源为 JPEG 图片。
- VIDEO_SOURCE_RTC_IMAGE_GIF
- 视频源为 GIF 图片。
- VIDEO_SOURCE_REMOTE
- 视频源为网络获取的远端视频。
- VIDEO_SOURCE_TRANSCODED
- 转码后的视频源。
- VIDEO_SOURCE_UNKNOWN
- 未知的视频源。
- VIDEO_SOURCE_CAMERA_PRIMARY 和 VIDEO_SOURCE_CAMERA 是相同的视频源。
- VIDEO_SOURCE_SCREEN_PRIMARY 和 VIDEO_SOURCE_SCREEN 是相同的视频源。
VOICE_BEAUTIFIER_PRESET
预设的美声效果选项。
枚举值
- VOICE_BEAUTIFIER_OFF
- 原声,即关闭美声效果。
- CHAT_BEAUTIFIER_MAGNETIC
磁性(男)。
注意: 该设置仅对男声有效,请勿用于设置女声,否则音频会失真。- CHAT_BEAUTIFIER_FRESH
-
清新(女)。
注意: 该设置仅对女声有效,请勿用于设置男声,否则音频会失真。 - CHAT_BEAUTIFIER_VITALITY
-
活力(女)。
注意: 该设置仅对女声有效,请勿用于设置男声,否则音频会失真。 - SINGING_BEAUTIFIER
-
歌唱美声。
- 如果调用 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
- 嘹亮。
- ULTRA_HIGH_QUALITY_VOICE
- 超高音质,即让音频更清晰、细节更丰富。
- 为达到更好的效果,我们推荐在调用 setVoiceBeautifierPreset 前将 setAudioProfile [2/2] 的 profile 参数设置为 AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4) 或 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5),且 scenario 参数设置为 AUDIO_SCENARIO_GAME_STREAMING(3)。
- 如果用户的音频采集设备可以高度还原音频细节,Agora 建议你不要开启超高音质,否则 SDK 会过度还原音频细节,达不到预期效果。
VOICE_CHANGER_PRESET
预设的语音变声效果。
枚举值
- 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
- 语聊美声:活力(女)。此枚举为女声定制化效果,不适用于男声。若男声使用此音效设置,则音频可能会产生失真。
VOICE_CONVERSION_PRESET
预设的变声效果选项。
枚举值
- VOICE_CONVERSION_OFF
- 原声,即关闭变声效果。
- VOICE_CHANGER_NEUTRAL
- 中性。为避免音频失真,请确保仅对女声设置该效果。
- VOICE_CHANGER_SWEET
- 甜美。为避免音频失真,请确保仅对女声设置该效果。
- VOICE_CHANGER_SOLID
- 稳重。为避免音频失真,请确保仅对男声设置该效果。
- VOICE_CHANGER_BASS
- 低沉。为避免音频失真,请确保仅对男声设置该效果。
WATERMARK_FIT_MODE
水印的适配模式。
枚举值
- FIT_MODE_COVER_POSITION
- 使用你在 WatermarkOptions 中设置的 positionInLandscapeMode 和 positionInPortraitMode 值。此时 WatermarkRatio 中的设置无效。
- FIT_MODE_USE_IMAGE_RATIO
- 使用你在 WatermarkRatio 中设置的值。此时 WatermarkOptions 中 positionInLandscapeMode 和 positionInPortraitMode 的设置无效。
AdvancedAudioOptions
音频的高级选项。
struct AdvancedAudioOptions { AUDIO_PROCESSING_CHANNELS audioProcessingChannels; AdvancedAudioOptions(): audioProcessingChannels(AUDIO_PROCESSING_MONO) {} };
属性
- audioProcessingChannels
- 音频前处理的声道数。详见 AUDIO_PROCESSING_CHANNELS。
AgoraRhythmPlayerConfig
虚拟节拍器配置。
struct AgoraRhythmPlayerConfig { int beatsPerMeasure; int beatsPerMinute; AgoraRhythmPlayerConfig() : beatsPerMeasure(4), beatsPerMinute(60) {} };
属性
- beatsPerMeasure
- 每小节的拍数,取值范围为 [1,9]。默认值为 4,即每小节包含 1 个强拍和 3 个弱拍。
- beatsPerMinute
- 节拍速度(拍/分钟),取值范围为 [60,360]。默认值为 60,即 1 分钟有 60 拍。
AudioEncodedFrameObserverConfig
编码后音频的观测器设置。
struct AudioEncodedFrameObserverConfig {
AUDIO_ENCODED_FRAME_OBSERVER_POSITION postionType;
AUDIO_ENCODING_TYPE encodingType;
AudioEncodedFrameObserverConfig()
: postionType(AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK),
encodingType(AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM){}
};
属性
- postionType
-
音频编码内容。详见 AUDIO_ENCODED_FRAME_OBSERVER_POSITION。
- encodingType
-
音频编码类型。详见 AUDIO_ENCODING_TYPE。
AudioParams
音频数据格式。
struct AudioParams { int sample_rate; int channels; rtc::RAW_AUDIO_FRAME_OP_MODE_TYPE mode; int samples_per_call; AudioParams() : sample_rate(0), channels(0), mode(rtc::RAW_AUDIO_FRAME_OP_MODE_READ_ONLY), samples_per_call(0) {} AudioParams(int samplerate, int channel, rtc::RAW_AUDIO_FRAME_OP_MODE_TYPE type, int samplesPerCall) : sample_rate(samplerate), channels(channel), mode(type), samples_per_call(samplesPerCall) {} };
- getRecordAudioParams:设置 onRecordAudioFrame 回调的数据格式。
- getPlaybackAudioParams:设置 onPlaybackAudioFrame 回调的数据格式。
- getMixedAudioParams:设置 onMixedAudioFrame 回调的数据格式。
- getEarMonitoringAudioParams:设置 onEarMonitoringAudioFrame 回调的数据格式。
- SDK 会通过 AudioParams 中的 samplesPerCall、sampleRate 和 channel 参数计算采样间隔,并根据该采样间隔触发 onRecordAudioFrame、onPlaybackAudioFrame、onMixedAudioFrame 和 onEarMonitoringAudioFrame 回调。
- 采样间隔 = samplesPerCall/(sampleRate × channel)。
- 请确保采样间隔不得小于 0.01 (s)。
属性
- sample_rate
- 数据的采样率,单位为 Hz,取值如下:
- 8000
- 16000(默认值)
- 32000
- 44100
- 48000
- channels
- 数据的声道数,取值如下:
- 1:单声道(默认值)
- 2:双声道
- mode
- 数据的使用模式。详见 RAW_AUDIO_FRAME_OP_MODE_TYPE。
- samples_per_call
- 数据的采样点数,如旁路推流应用中通常为 1024。
AudioRecordingConfiguration
录音配置。
struct AudioRecordingConfiguration { const char* filePath; bool encode; int sampleRate; AUDIO_FILE_RECORDING_TYPE fileRecordingType; AUDIO_RECORDING_QUALITY_TYPE quality; int recordingChannel; AudioRecordingConfiguration() : filePath(NULL), encode(false), sampleRate(32000), fileRecordingType(AUDIO_FILE_RECORDING_MIXED), quality(AUDIO_RECORDING_QUALITY_LOW), recordingChannel(1) {} AudioRecordingConfiguration(const char* file_path, int sample_rate, AUDIO_RECORDING_QUALITY_TYPE quality_type) : filePath(file_path), encode(false), sampleRate(sample_rate), fileRecordingType(AUDIO_FILE_RECORDING_MIXED), quality(quality_type), recordingChannel(channel) {} AudioRecordingConfiguration(const char* file_path, bool enc, int sample_rate, AUDIO_FILE_RECORDING_TYPE type, AUDIO_RECORDING_QUALITY_TYPE quality_type) : filePath(file_path), encode(enc), sampleRate(sample_rate), fileRecordingType(type), quality(quality_type), recordingChannel(channel) {} AudioRecordingConfiguration(const AudioRecordingConfiguration &rhs) : filePath(rhs.filePath), encode(rhs.encode), sampleRate(rhs.sampleRate), fileRecordingType(rhs.fileRecordingType), quality(rhs.quality), recordingChannel(rhs.recordingChannel) {} };
属性
- filePath
- 录音文件在本地保存的绝对路径,需精确到文件名及格式。例如:
C:\music\audio.mp4
。注意:请确保你指定的路径存在并且可写。
- encode
- 设置是否编码音频数据:
true
: 将音频数据用 AAC 编码。false
:(默认)不编码音频数据,直接保存录制的音频数据。
- sampleRate
- 录音采样率(Hz)。
- 16000
- 32000 (默认)
- 44100
- 48000
注意:如果把该参数设为 44100 或 48000,为保证录音效果,Agora 推荐录制 WAV 文件或 quality 为 AUDIO_RECORDING_QUALITY_MEDIUM 或 AUDIO_RECORDING_QUALITY_HIGH 的 AAC 文件。
- fileRecordingType
-
录音内容。详见 AUDIO_FILE_RECORDING_TYPE。
- quality
-
录音音质。详见 AUDIO_RECORDING_QUALITY_TYPE。
注意:该参数仅适用于 AAC 文件。
- recordingChannel
- 录制的音频声道。目前支持如下取值:
- 1:(默认)单声道。
- 2: 双声道。
注:实际录制的音频声道与你采集的音频声道有关:- 如果采集的音频为单声道,recordingChannel 设为
2
, 则录制的音频为经过单声道数据拷贝后的双声道数据,而不是立体声。 - 如果采集的音频为双声道,recordingChannel 设为
1
,则录制的音频为经过双声道数据混合后的单声道数据。
AudioSpectrumData
音频频谱数据。
struct AudioSpectrumData {
const float *audioSpectrumData;
int dataLength;
AudioSpectrumData() : audioSpectrumData(NULL), dataLength(0) {}
AudioSpectrumData(const float *data, int length) :
audioSpectrumData(data), dataLength(length) {}
};
属性
- audioSpectrumData
-
音频频谱数据。Agora 将声音频率分为 256 个频域,通过该参数报告各频域的能量值,每个能量值的取值范围为 [-300,1],单位为 dBFS。
- dataLength
- 音频频谱数据长度为 256。
AudioVolumeInfo
用户音量信息。
struct AudioVolumeInfo { uid_t uid; unsigned int volume; unsigned int vad; double voicePitch; AudioVolumeInfo() : uid(0), volume(0), vad(0), voicePitch(0.0) {} };
属性
- uid
-
用户 ID。
- 在本地用户的回调中,uid 为 0。
- 在远端用户的回调中,uid 为瞬时音量最高的远端用户(最多 3 位)的 ID。
- volume
- 用户的音量,取值范围为 [0,255]。如果用户调用了 startAudioMixing [2/2],则 volume 为用户混音后的音量。
- vad
-
本地用户的人声状态。
- 0:本地无人声。
- 1:本地有人声。
注意:- vad 无法报告远端用户的人声状态。对于远端用户,vad 的值始终为 1。
- 如需使用此参数,请在调用 enableAudioVolumeIndication 时设置 reportVad 为
true
。
- voicePitch
-
本地用户的人声音调(Hz)。取值范围为 [0.0,4000.0]。
注意: voicePitch 无法报告远端用户的人声音调。对于远端用户,voicePitch 的值始终为 0.0。
AudioPcmFrame
外部 PCM 格式音频帧的信息。
struct AudioPcmFrame {
OPTIONAL_ENUM_SIZE_T {
kMaxDataSizeSamples = 3840,
kMaxDataSizeBytes = kMaxDataSizeSamples * sizeof(int16_t),
};
uint32_t capture_timestamp;
size_t samples_per_channel_;
int sample_rate_hz_;
size_t num_channels_;
rtc::BYTES_PER_SAMPLE bytes_per_sample;
int16_t data_[kMaxDataSizeSamples];
};
属性
- OPTIONAL_ENUM_SIZE_T
- PCM 格式音频帧缓冲大小。初始值为 3840。
- capture_timestamp
- 音频帧的时间戳 (ms)。
- samples_per_channel_
- 每个声道的采样点数。
- sample_rate_hz_
- 音频采样率 (Hz)。
- num_channels_
- 音频声道数。
- bytes_per_sample
- 音频数据的字节数。
- data_
- 音频帧数据。
BeautyOptions
美颜选项。
struct BeautyOptions { enum LIGHTENING_CONTRAST_LEVEL { LIGHTENING_CONTRAST_LOW = 0, LIGHTENING_CONTRAST_NORMAL = 1, LIGHTENING_CONTRAST_HIGH = 2, }; LIGHTENING_CONTRAST_LEVEL lighteningContrastLevel; float lighteningLevel; float smoothnessLevel; float rednessLevel; float sharpnessLevel; BeautyOptions(LIGHTENING_CONTRAST_LEVEL contrastLevel, float lightening, float smoothness, float redness, float sharpness) : lighteningContrastLevel(contrastLevel), lighteningLevel(lightening), smoothnessLevel(smoothness), rednessLevel(redness), sharpnessLevel(sharpness) {} BeautyOptions() : lighteningContrastLevel(LIGHTENING_CONTRAST_NORMAL), lighteningLevel(0), smoothnessLevel(0), rednessLevel(0), sharpnessLevel(0) {} };
属性
- lighteningContrastLevel
-
对比度,常与 lighteningLevel 搭配使用。取值越大,明暗对比程度越大。详见 LIGHTENING_CONTRAST_LEVEL。
- lighteningLevel
-
美白程度,取值范围为 [0.0,1.0],其中 0.0 表示原始亮度,默认值为 0.0。取值越大,美白程度越大。
- smoothnessLevel
-
磨皮程度,取值范围为 [0.0,1.0],其中 0.0 表示原始磨皮程度,默认值为 0.0。取值越大,磨皮程度越大。
- rednessLevel
-
红润度,取值范围为 [0.0,1.0],其中 0.0 表示原始红润度,默认值为 0.0。取值越大,红润程度越大。
- sharpnessLevel
-
锐化程度,取值范围为 [0.0,1.0],其中 0.0 表示原始锐度,默认值为 0.0。取值越大,锐化程度越大。
LIGHTENING_CONTRAST_LEVEL
亮度明暗对比度。
枚举值
- LIGHTENING_CONTRAST_LOW
- 0:低对比度。
- LIGHTENING_CONTRAST_NORMAL
- 1:正常对比度。
- LIGHTENING_CONTRAST_HIGH
- 2:高对比度。
CameraCapturerConfiguration
摄像头采集配置。
struct CameraCapturerConfiguration { CAMERA_DIRECTION cameraDirection; char deviceId[MAX_DEVICE_ID_LENGTH]; VideoFormat format; };
属性
- cameraDirection
-
注意: 该参数仅适用于 Android 和 iOS 平台。摄像头方向设置。详见 CAMERA_DIRECTION。
- format
- 详见 VideoFormat。
- deviceId
-
注意: 该参数仅适用于 Windows 平台。播放设备的设备 ID。最大长度为 MAX_DEVICE_ID_LENGTH_TYPE。
CacheStatistics
缓存文件的统计数据。
struct CacheStatistics { int64_t fileSize; int64_t cacheSize; int64_t downloadSize; };
属性
- fileSize
- 本次播放的媒体文件的大小,单位为字节。
- cacheSize
- 本次播放的媒体文件需缓存的数据大小,单位为字节。
- downloadSize
- 本次播放已下载的媒体文件大小,单位为字节。
ChannelMediaInfo
ChannelMediaInfo 类定义。
struct ChannelMediaInfo { const char* channelName; const char* token; uid_t uid; };
属性
- channelName
- 频道名。
- token
- 能加入频道的 Token。
- uid
- 用户 ID。
ChannelMediaOptions
频道媒体设置选项。
struct ChannelMediaOptions { Optional<bool> publishCameraTrack; Optional<bool> publishSecondaryCameraTrack; Optional<bool> publishMicrophoneTrack; #if defined(__ANDROID__) || (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) Optional<bool> publishScreenCaptureVideo; Optional<bool> publishScreenCaptureAudio; #else Optional<bool> publishScreenTrack; Optional<bool> publishSecondaryScreenTrack; #endif Optional<bool> publishCustomAudioTrack; Optional<int> publishCustomAudioSourceId; Optional<bool> publishCustomAudioTrackEnableAec; Optional<bool> publishDirectCustomAudioTrack; Optional<bool> publishCustomVideoTrack; Optional<bool> publishEncodedVideoTrack; Optional<bool> publishMediaPlayerAudioTrack; Optional<bool> publishMediaPlayerVideoTrack; Optional<bool> publishTrancodedVideoTrack; Optional<bool> autoSubscribeAudio; Optional<bool> autoSubscribeVideo; Optional<bool> enableAudioRecordingOrPlayout; Optional<int> publishMediaPlayerId; Optional<CLIENT_ROLE_TYPE> clientRoleType; Optional<AUDIENCE_LATENCY_LEVEL_TYPE> audienceLatencyLevel; Optional<VIDEO_STREAM_TYPE> defaultVideoStreamType; Optional<CHANNEL_PROFILE_TYPE> channelProfile; Optional<int> audioDelayMs; Optional<int> mediaPlayerAudioDelayMs; Optional<const char*> token; Optional<bool> enableBuiltInMediaEncryption; Optional<bool> publishRhythmPlayerTrack; Optional<bool> isInteractiveAudience; Optional<video_track_id_t> customVideoTrackId; Optional<bool> isAudioFilterable; ChannelMediaOptions() {} ~ChannelMediaOptions() {}
true
;
publishCameraTrack、publishScreenTrack、publishCustomVideoTrack 或 publishEncodedVideoTrack 之中同一时间只能有一个为 true
。属性
- publishCameraTrack
- 设置是否发布摄像头采集的视频:
true
:(默认)发布摄像头采集的视频。false
:不发布摄像头采集的视频。
- publishMicrophoneTrack
- 设置是否发布麦克风采集到的音频:
true
:(默认)发布麦克风采集到的音频。false
:不发布麦克风采集到的音频。
注: 自 v4.0.0 起,该参数名称由 publishAudioTrack 改为 publishMicrophoneTrack。 - publishSecondaryCameraTrack
- 设置是否发布第二个摄像头采集的视频:
true
:发布第二个摄像头采集的视频。false
:(默认)不发布第二个摄像头采集的视频。
- publishScreenTrack
-
设置是否发布屏幕采集的视频:
-
true
:发布屏幕采集到的视频。 -
false
:(默认)不发布屏幕采集到的视频。
-
- publishScreenCaptureVideo
-
设置是否发布屏幕采集的视频:
-
true
:发布屏幕采集到的视频。 -
false
:(默认)不发布屏幕采集到的视频。
注意: 该参数仅适用于 Android 和 iOS 平台。 -
- publishScreenCaptureAudio
-
设置是否发布屏幕采集的音频:
true
:发布屏幕采集到的音频。false
:(默认)不发布屏幕采集到的音频。
注意: 该参数仅适用于 Android 和 iOS 平台。 - publishSecondaryScreenTrack
-
设置是否发布第二个屏幕采集的视频:
true
:发布第二个屏幕采集到的视频。false
:(默认)不发布第二个屏幕采集到的视频。
- publishTrancodedVideoTrack
-
设置是否发布本地的转码视频:
true
:发布本地的转码视频。false
:(默认)不发布本地的转码视频。
- publishCustomAudioTrack
- 设置是否发布自定义采集的音频:
true
:发布自定义采集到的音频。false
:(默认)不发布自定义采集到的音频。
- publishCustomAudioSourceId
- 待发布的自定义音频源的 ID。默认值为 0。
如果你已在 setExternalAudioSource 中设置了 sourceNumber 大于 1,SDK 会创建对应数量的自采集音频轨道,并从 0 开始为每一个音频轨道分配一个 ID。
- publishCustomAudioTrackEnableAec
- 设置发布自定义采集的音频时是否启用 AEC:
true
:发布自定义采集的音频时启用 AEC。false
:(默认)发布自定义采集的音频时不启用 AEC。
- publishCustomVideoTrack
- 设置是否发布自定义采集的视频:
true
:发布自定义采集的视频。false
:(默认)不发布自定义采集到的视频。
- publishEncodedVideoTrack
- 设置是否发布编码后的视频:
true
:发布编码后的视频 。false
:(默认)不发布编码后的视频。
- publishMediaPlayerAudioTrack
- 设置是否发布媒体播放器的音频:
true
:发布媒体播放器的音频。false
:(默认)不发布媒体播放器的音频。
- publishMediaPlayerVideoTrack
- 设置是否发布媒体播放器的视频:
true
:发布媒体播放器的视频。false
:(默认)不发布媒体播放器的视频。
- autoSubscribeAudio
- 设置是否自动订阅所有音频流:
-
true
:(默认)自动订阅所有音频流。 -
false
:不自动订阅任何音频流。
-
- autoSubscribeVideo
- 设置是否自动订阅所有视频流:
-
true
:(默认)自动订阅所有视频流。 -
false
:不自动订阅任何视频流。
-
- enableAudioRecordingOrPlayout
- 设置是否开启音频录制或播放:
-
true
:(默认)开启音频录制或播放。 -
false
:不开启音频录制或播放。
-
- publishMediaPlayerId
- 待发布的媒体播放器的 ID。默认值为 0。
- clientRoleType
-
用户角色。详见 CLIENT_ROLE_TYPE。
- audienceLatencyLevel
- 观众端延时级别。详见 AUDIENCE_LATENCY_LEVEL_TYPE。
- defaultVideoStreamType
-
默认订阅的视频流类型: VIDEO_STREAM_TYPE。
- channelProfile
-
频道使用场景。详见 CHANNEL_PROFILE_TYPE。
- token
-
(可选)在服务端生成的用于鉴权的动态密钥。详见使用 Token 鉴权。
警告:- 该参数仅在调用 updateChannelMediaOptions 或 updateChannelMediaOptionsEx 时生效。
- 请确保用于生成 token 的 App ID、频道名和用户名和 initialize 方法初始化引擎时用的 App ID,以及 joinChannel [2/2] 或 joinChannelEx 方法加入频道时设置的频道名和用户名是一致的。
- publishRhythmPlayerTrack
- 设置是否发布虚拟节拍器声音至远端:
true
:(默认)发布。本地用户和远端用户都能听到节拍器。false
:不发布。只有本地用户能听到节拍器。
- isInteractiveAudience
- 是否开启互动观众模式:
true
:开启互动观众模式。成功开启后,本地用户作为互动观众,收到低延时和流畅的远端用户视频。false
:(默认)不开启互动观众模式。本地用户作为普通观众,收到默认设置的远端用户视频。
注意:- 该参数用于实现跨直播间连麦场景。连麦主播需要调用 joinChannelEx 方法,以观众身份加入对方的直播间,并将 isInteractiveAudience 设置为
true
。 - 仅当用户角色为 CLIENT_ROLE_AUDIENCE 时,该参数生效。
- customVideoTrackId
- 调用 createCustomVideoTrack 方法返回的视频轨道 ID。默认值为 0。
- isAudioFilterable
- 设置是否让当前音频流根据音强算法参与选流。
true
:(默认)参与音强选流。如未开启音强选流功能,该参数不会生效。false
:不参与音强选流。
注意: 如需启用该功能,请联系 sales@agora.io。
ChannelMediaRelayConfiguration
ChannelMediaRelayConfiguration 类定义。
struct ChannelMediaRelayConfiguration {
ChannelMediaInfo *srcInfo;
ChannelMediaInfo *destInfos;
int destCount;
ChannelMediaRelayConfiguration()
: srcInfo(nullptr)
, destInfos(nullptr)
, destCount(0)
{}
};
属性
- 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 到(2 32-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), };
属性
- audienceLatencyLevel
- 观众端延时级别。详见 AUDIENCE_LATENCY_LEVEL_TYPE。
ColorEnhanceOptions
色彩增强选项。
struct ColorEnhanceOptions { float strengthLevel; float skinProtectLevel; ColorEnhanceOptions(float stength, float skinProtect) : strengthLevel(stength), skinProtectLevel(skinProtect) {} ColorEnhanceOptions() : strengthLevel(0), skinProtectLevel(1) {} };
属性
- strengthLevel
- 色彩增强程度。取值范围为 [0.0,1.0]。
0.0
表示不对视频进行色彩增强。取值越大,色彩增强的程度越大。默认值为0.5
。 - skinProtectLevel
肤色保护程度。取值范围为 [0.0,1.0]。
0.0
表示不对肤色进行保护。取值越大,肤色保护的程度越大。默认值为1.0
。- 当色彩增强程度较大时,人像肤色会明显失真,你需要设置肤色保护程度;
- 肤色保护程度较大时,色彩增强效果会略微降低。
ContentInspectConfig
视频截图上传配置。
struct ContentInspectConfig {
const char* extraInfo;
ContentInspectModule modules[MAX_CONTENT_INSPECT_MODULE_COUNT];
int moduleCount;
ContentInspectConfig& operator=(const ContentInspectConfig& rth)
{
extraInfo = rth.extraInfo;
moduleCount = rth.moduleCount;
memcpy(&modules, &rth.modules, MAX_CONTENT_INSPECT_MODULE_COUNT * sizeof(ContentInspectModule));
return *this;
}
ContentInspectConfig() :extraInfo(NULL), moduleCount(0){}
};
参数
- extraInfo
-
附加信息,最大长度为 1024 字节。
SDK 会将附加信息和截图一起上传至 Agora 服务器;截图完成后,Agora 服务器会将附加信息随回调通知一起发送给你的服务器。
- modules
-
功能模块。详见 ContentInspectModule。
最多支持配置 32 个 ContentInspectModule 实例,MAX_CONTENT_INSPECT_MODULE_COUNT 的取值范围为 [1,32] 中的整数。
注意: 一个功能模块最多只能配置一个实例。目前仅支持截图上传功能。 - moduleCount
- 功能模块数,即配置的 ContentInspectModule 实例的数量,必须与 modules 中配置的实例个数一致。最大值为 32。
ContentInspectModule
ContentInspectModule 结构体,用于配置视频截图上传的频率。
struct ContentInspectModule {
CONTENT_INSPECT_TYPE type;
unsigned int interval;
ContentInspectModule() {
type = CONTENT_INSPECT_INVALID;
interval = 0;
}
};
属性
- type
- 功能模块的类型。详见 CONTENT_INSPECT_TYPE。
- interval
- 视频截图上传的间隔,单位为秒,取值必须大于 0。默认值为 0,表示不进行截图上传。推荐值为 10 秒,你也可以根据业务需求自行调整。
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
。
DeviceInfo
音频设备信息。
struct DeviceInfo { bool isLowLatencyAudioSupported; DeviceInfo() : isLowLatencyAudioSupported(false) {} };
属性
- isLowLatencyAudioSupported
- 是否支持极低延时音频采集和播放:
true
: 支持false
: 不支持
DirectCdnStreamingMediaOptions
主播端的媒体选项。
struct DirectCdnStreamingMediaOptions { Optional<bool> publishCameraTrack; Optional<bool> publishMicrophoneTrack; Optional<bool> publishCustomAudioTrack; Optional<bool> publishCustomVideoTrack; Optional<bool> publishMediaPlayerAudioTrack; Optional<int> publishMediaPlayerId; Optional<video_track_id_t> customVideoTrackId; DirectCdnStreamingMediaOptions() {} ~DirectCdnStreamingMediaOptions() {} };
属性
- publishCameraTrack
- 设置是否发布摄像头采集的视频。
true
: 发布摄像头采集的视频。false
:(默认)不发布摄像头采集的视频。
- publishMicrophoneTrack
- 设置是否发布麦克风采集的音频。
true
: 发布麦克风采集的音频。false
:(默认)不发布麦克风采集的音频。
- publishCustomAudioTrack
- 设置是否发布自定义采集的音频。
true
: 发布自定义采集的音频。false
:(默认)不发布自定义采集的音频。
- publishCustomVideoTrack
- 设置是否发布自定义采集的视频。
true
: 发布自定义采集的视频。false
:(默认)不发布自定义采集的视频。
- customVideoTrackId
- 调用 createCustomVideoTrack 方法返回的视频轨道 ID。默认值为 0。
DirectCdnStreamingStats
当前 CDN 推流的统计数据。
struct DirectCdnStreamingStats { int videoWidth; int videoHeight; int fps; int videoBitrate; int audioBitrate; };
属性
- videoWidth
- 视频的宽度(px)。
- videoHeight
- 视频的高度(px)。
- fps
- 当前视频帧率(fps)。
- videoBitrate
- 当前视频码率(bps)。
- audioBitrate
- 当前音频码率(bps)。
EchoTestConfiguration
音视频通话回路测试的配置。
struct EchoTestConfiguration { view_t view; bool enableAudio; bool enableVideo; const char* token; const char* channelId; EchoTestConfiguration(view_t v, bool ea, bool ev, const char* t, const char* c) : view(v), enableAudio(ea), enableVideo(ev), token(t), channelId(c) {} EchoTestConfiguration() : view(OPTIONAL_NULLPTR), enableAudio(true), enableVideo(true), token(OPTIONAL_NULLPTR), channelId(OPTIONAL_NULLPTR) {} };
属性
- view
- 用于渲染本地用户视频的视图。该参数仅适用于测试视频设备的场景,即该结构体中 enableVideo 为 true。
- enableAudio
- 是否开启音频设备:
- true: (默认) 开启音频设备。如需测试音频设备,请设为 true。
- false: 关闭音频设备。
- enableVideo
- 是否开启视频设备:
- true: (默认) 开启视频设备。如需测试视频设备,请设为 true。
- false: 关闭视频设备。
- token
- 用于保证音视频通话回路测试安全性的 Token。如果你在 Agora 控制台未启用 App 证书,则不需要向该参数传值;如果你在 Agora 控制台已启用 App 证书,则必须向该参数传入 Token,且在你生成 Token 时使用的
uid
必须为 0xFFFFFFFF,使用的频道名必须为标识每个音视频通话回路测试的频道名。服务端生成 Token 的方式请参考使用 Token 鉴权。 - channelId
- 标识每个音视频通话回路测试的频道名。为保证回路测试功能正常,同一个项目(App ID) 的各终端用户在不同设备上做音视频通话回路测试时,传入的标识每个回路测试的频道名不能相同。
EncodedAudioFrameInfo
编码后音频的信息。
struct EncodedAudioFrameInfo { EncodedAudioFrameInfo() : codec(AUDIO_CODEC_AACLC), sampleRateHz(0), samplesPerChannel(0), numberOfChannels(0) {} EncodedAudioFrameInfo(const EncodedAudioFrameInfo& rhs) : codec(rhs.codec), sampleRateHz(rhs.sampleRateHz), samplesPerChannel(rhs.samplesPerChannel), numberOfChannels(rhs.numberOfChannels), advancedSettings(rhs.advancedSettings) {} AUDIO_CODEC_TYPE codec; int sampleRateHz; int samplesPerChannel; int numberOfChannels; EncodedAudioFrameAdvancedSettings advancedSettings; };
属性
- codec
- 音频编码规格: AUDIO_CODEC_TYPE。
- sampleRateHz
- 音频采样率 (Hz)。
- samplesPerChannel
- 每个声道的音频采样数。
- numberOfChannels
- 声道数。
- advancedSettings
- 该功能暂不支持。
EncodedVideoFrameInfo
外部编码视频帧的信息。
struct EncodedVideoFrameInfo { EncodedVideoFrameInfo() : codecType(VIDEO_CODEC_H264), width(0), height(0), framesPerSecond(0), frameType(VIDEO_FRAME_TYPE_BLANK_FRAME), rotation(VIDEO_ORIENTATION_0), trackId(0), captureTimeMs(0), decodeTimeMs(0), uid(0), streamType(VIDEO_STREAM_HIGH) {} EncodedVideoFrameInfo(const EncodedVideoFrameInfo& rhs) : codecType(rhs.codecType), width(rhs.width), height(rhs.height), framesPerSecond(rhs.framesPerSecond), frameType(rhs.frameType), rotation(rhs.rotation), trackId(rhs.trackId), captureTimeMs(rhs.captureTimeMs), decodeTimeMs(rhs.decodeTimeMs), uid(rhs.uid), streamType(rhs.streamType) {} EncodedVideoFrameInfo& operator=(const EncodedVideoFrameInfo& rhs) { if (this == &rhs) return *this; codecType = rhs.codecType; width = rhs.width; height = rhs.height; framesPerSecond = rhs.framesPerSecond; frameType = rhs.frameType; rotation = rhs.rotation; trackId = rhs.trackId; captureTimeMs = rhs.captureTimeMs; decodeTimeMs = rhs.decodeTimeMs; uid = rhs.uid; streamType = rhs.streamType; return *this; }
属性
- codecType
- 视频编码类型,详见 VIDEO_CODEC_TYPE。默认值为
VIDEO_CODEC_H264 (2)
。 - width
- 视频帧的宽度 (px)。
- height
- 视频帧的高度 (px)。
- framesPerSecond
-
每秒的视频帧数。
当该参数不为
0
时,你可以用它计算外部编码视频帧的 Unix 时间戳。 - frameType
- 视频帧的类型,详见 VIDEO_FRAME_TYPE。
- rotation
- 视频帧的旋转信息,详见 VIDEO_ORIENTATION。
- trackId
- 预留参数。
- captureTimeMs
- 采集外部编码视频帧的 Unix 时间戳 (ms)。
- decodeTimeMs
- 将外部编码视频帧进行解码的时间戳 (ms)。
- uid
- 推送外部编码视频帧的用户 ID。
- streamType
- 视频流类型。详见 VIDEO_STREAM_TYPE。
EncryptionConfig
配置内置加密模式和密钥。
struct EncryptionConfig { ENCRYPTION_MODE encryptionMode; const char* encryptionKey; uint8_t encryptionKdfSalt[32]; EncryptionConfig() : encryptionMode(AES_128_GCM2), encryptionKey(NULL) { memset(encryptionKdfSalt, 0, sizeof(encryptionKdfSalt)); } const char* getEncryptionString() const { switch(encryptionMode) { case AES_128_XTS: return "aes-128-xts"; case AES_128_ECB: return "aes-128-ecb"; case AES_256_XTS: return "aes-256-xts"; case SM4_128_ECB: return "sm4-128-ecb"; case AES_128_GCM: return "aes-128-gcm"; case AES_256_GCM: return "aes-256-gcm"; case AES_128_GCM2: return "aes-128-gcm-2"; case AES_256_GCM2: return "aes-256-gcm-2"; default: return "aes-128-gcm-2"; } return "aes-128-gcm-2"; } };
属性
- encryptionMode
-
内置加密模式。详见 ENCRYPTION_MODE。Agora 推荐使用
AES_128_GCM2
或AES_256_GCM2
加密模式。这两种模式支持使用盐,安全性更高。 - encryptionKey
-
内置加密密钥,字符串类型,长度无限制。Agora 推荐使用 32 字节的密钥。
注意: 如果未指定该参数或将该参数设置为NULL
,则无法启用内置加密,且 SDK 会返回错误码-2
。 - encryptionKdfSalt
-
盐,长度为 32 字节。Agora 推荐你在服务端使用 OpenSSL 生成盐。详见《媒体流加密》。
注意: 只有在AES_128_GCM2
或AES_256_GCM2
加密模式下,该参数才生效。此时,需确保填入该参数的值不全为0
。
ExternalVideoFrame
外部视频帧。
struct ExternalVideoFrame { ExternalVideoFrame() : type(VIDEO_BUFFER_RAW_DATA), format(VIDEO_PIXEL_DEFAULT), buffer(NULL), stride(0), height(0), cropLeft(0), cropTop(0), cropRight(0), cropBottom(0), rotation(0), timestamp(0), eglContext(NULL), eglType(EGL_CONTEXT10), textureId(0), metadata_buffer(NULL), metadata_size(0){} enum EGL_CONTEXT_TYPE { EGL_CONTEXT10 = 0, EGL_CONTEXT14 = 1, }; enum VIDEO_BUFFER_TYPE { VIDEO_BUFFER_RAW_DATA = 1, VIDEO_BUFFER_ARRAY = 2, VIDEO_BUFFER_TEXTURE = 3, }; VIDEO_BUFFER_TYPE type; VIDEO_PIXEL_FORMAT format; void* buffer; int stride; int height; int cropLeft; int cropTop; int cropRight; int cropBottom; int rotation; long long timestamp; void *eglContext; EGL_CONTEXT_TYPE eglType; int textureId; uint8_t* metadata_buffer; int metadata_size; };
属性
- type
-
视频类型。详见 VIDEO_BUFFER_TYPE。
- format
- 像素格式。详见 VIDEO_PIXEL_FORMAT。
- buffer
- 视频缓冲区。
- stride
- 传入视频帧的行间距,单位为像素而不是字节。对于 Texture,该值指的是 Texture 的宽度。
- height
- 传入视频帧的高度。
- eglContext
- 该参数仅适用于 Texture 格式的视频数据。
- 当使用 Khronos 定义的 OpenGL 接口 (javax.microedition.khronos.egl.*)时,需要将 eglContext 设置给这个字段。
- 当使用 Android 定义的 OpenGL 接口 (android.opengl.*)时,需要将 eglContext 设置给这个字段。
- eglType
- 该参数仅适用于 Texture 格式的视频数据。指该视频帧的 Texture ID。
- textureId
- 该参数仅适用于 Texture 格式的视频数据。为一个输入的 4x4 变换矩阵,典型值为一个单位矩阵。
- metadata_buffer
- 该参数仅适用于 Texture 格式的视频数据。指 MetaData 的数据缓冲区,默认值为
NULL
。 - metadata_size
- 该参数仅适用于 Texture 格式的视频数据。指 MetaData 的大小,默认值为
0
。 - cropLeft
- 原始数据相关字段。指定左边裁剪掉的像素数量。默认为 0。
- cropTop
- 原始数据相关字段。指定顶边裁剪掉的像素数量。默认为 0。
- cropRight
- 原始数据相关字段。指定右边裁剪掉的像素数量。默认为 0。
- cropBottom
- 原始数据相关字段。指定底边裁剪掉的像素数量。默认为 0。
- rotation
- 原始数据相关字段。指定是否对传入的视频组做顺时针旋转操作,可选值为 0, 90, 180, 270。默认为 0。
- timestamp
- 传入的视频帧的时间戳,以毫秒为单位。不正确的时间戳会导致丢帧或者音视频不同步。
ImageTrackOptions
垫片图片的设置选项。
struct ImageTrackOptions {
const char* imageUrl;
int fps;
ImageTrackOptions() : imageUrl(NULL), fps(1) {}
};
属性
- imageUrl
- 垫片图片的 URL,目前仅支持本地 PNG 格式的图片。支持从本地绝对路径或相对路径添加垫片图片。
- fps
- 视频帧率,取值范围为 [1,30]。默认值为 1。
LastmileProbeConfig
Last mile 网络探测配置。
struct LastmileProbeConfig { bool probeUplink; bool probeDownlink; unsigned int expectedUplinkBitrate; unsigned int expectedDownlinkBitrate; };
属性
- probeUplink
-
是否探测上行网络。有些用户,如直播频道中的普通观众,不需要进行网络探测:
true
: 探测上行网络。false
: 不探测上行网络。
- probeDownlink
-
是否探测下行网络:
true
: 探测下行网络。false
: 不探测下行网络。
- expectedUplinkBitrate
- 用户期望的最高发送码率,单位为 bps,范围为 [100000,5000000]。Agora 推荐参考 setVideoEncoderConfiguration 中的码率值设置该参数的值。
- expectedDownlinkBitrate
- 用户期望的最高接收码率,单位为 bps,范围为 [100000,5000000]。
LastmileProbeOneWayResult
上行或下行 Last mile 网络质量探测结果。
struct LastmileProbeOneWayResult { unsigned int packetLossRate; unsigned int jitter; unsigned int availableBandwidth; LastmileProbeOneWayResult() : packetLossRate(0), jitter(0), availableBandwidth(0) {} };
属性
- packetLossRate
- 丢包率。
- jitter
- 网络抖动 (ms)。
- availableBandwidth
- 可用网络带宽预估 (bps)。
LastmileProbeResult
上下行 Last mile 网络质量探测结果。
struct LastmileProbeResult {
LASTMILE_PROBE_RESULT_STATE state;
LastmileProbeOneWayResult uplinkReport;
LastmileProbeOneWayResult downlinkReport;
unsigned int rtt;
LastmileProbeResult() : state(LASTMILE_PROBE_RESULT_UNAVAILABLE),
rtt(0) {}
};
属性
- state
-
Last mile 质量探测结果的状态。详见: LASTMILE_PROBE_RESULT_STATE 。
- uplinkReport
- 上行网络质量报告。详见 LastmileProbeOneWayResult。
- downlinkReport
- 下行网络质量报告。详见 LastmileProbeOneWayResult。
- rtt
- 往返时延 (ms)。
LeaveChannelOptions
离开频道的选项。
struct LeaveChannelOptions { bool stopAudioMixing; bool stopAllEffect; bool stopMicrophoneRecording; LeaveChannelOptions() : stopAudioMixing(true), stopAllEffect(true), stopMicrophoneRecording(true) {} };
属性
- stopAudioMixing
- 离开频道时,是否停止播放音乐文件及混音:
true
:(默认)停止播放音乐文件及混音。false
: 不停止播放音乐文件及混音。
- stopAllEffect
- 离开频道时,是否停止播放音效:
true
:(默认)停止播放音效。false
: 不停止播放音效。
- stopMicrophoneRecording
- 离开频道时,是否停止麦克风采集:
true
:(默认)停止麦克风采集。false
: 不停止麦克风采集。
LiveStreamAdvancedFeature
转码推流的高级功能配置。
struct LiveStreamAdvancedFeature { LiveStreamAdvancedFeature() : featureName(NULL), opened(false) {} LiveStreamAdvancedFeature(const char* feat_name, bool open) : featureName(feat_name), opened(open) {} const char* featureName; bool opened; } ;
如需使用转码推流高级功能,请联系 sales@agora.io。
属性
- featureName
- 转码推流高级功能的名称,包含 LBHQ(低码率的高清视频功能) 和 VEO(优化的视频编码器功能)。
- opened
- 是否启用转码推流的高级功能:
true
:开启转码推流的高级功能。false
:(默认)关闭转码推流的高级功能。
LiveTranscoding
旁路推流的转码属性。
struct LiveTranscoding { int width; int height; int videoBitrate; int videoFramerate; bool lowLatency; int videoGop; VIDEO_CODEC_PROFILE_TYPE videoCodecProfile; unsigned int backgroundColor; VIDEO_CODEC_TYPE_FOR_STREAM videoCodecType; unsigned int userCount; TranscodingUser* transcodingUsers; const char* transcodingExtraInfo; const char* metadata; RtcImage* watermark; unsigned int watermarkCount; RtcImage* backgroundImage; unsigned int backgroundImageCount; AUDIO_SAMPLE_RATE_TYPE audioSampleRate; int audioBitrate; int audioChannels; AUDIO_CODEC_PROFILE_TYPE audioCodecProfile; LiveStreamAdvancedFeature* advancedFeatures; unsigned int advancedFeatureCount; LiveTranscoding() : width(360), height(640), videoBitrate(400), videoFramerate(15), lowLatency(false), videoGop(30), videoCodecProfile(VIDEO_CODEC_PROFILE_HIGH), backgroundColor(0x000000), videoCodecType(VIDEO_CODEC_H264_FOR_STREAM), userCount(0), transcodingUsers(NULL), transcodingExtraInfo(NULL), metadata(NULL), watermark(NULL), watermarkCount(0), backgroundImage(NULL), backgroundImageCount(0), audioSampleRate(AUDIO_SAMPLE_RATE_48000), audioBitrate(48), audioChannels(1), audioCodecProfile(AUDIO_CODEC_PROFILE_LC_AAC), advancedFeatures(NULL), advancedFeatureCount(0) {} };
属性
- width
-
推流视频的总宽度,默认值 360,单位为像素。
- 如果推视频流,
width
取值范围为 [64,1920]。如果取值低于 64,Agora 服务器会自动调整为 64; 如果取值高于 1920,Agora 服务器会自动调整为 1920。 - 如果推音频流,请将
width
和height
设为 0。
- 如果推视频流,
- height
-
推流视频的总高度,默认值 640,单位为像素。
- 如果推视频流,
height
取值范围为 [64,1080]。如果取值低于 64,Agora 服务器会自动调整为 64; 如果取值高于 1080,Agora 服务器会自动调整为 1080。 - 如果推音频流,请将
width
和height
设为 0。
- 如果推视频流,
- videoBitrate
-
用于旁路直播的输出视频的码率。单位为 Kbps。400 Kbps 为默认值。
你可以根据视频属性参考表中的码率值进行设置;如果设置的码率超出合理范围,Agora 服务器会在合理区间内自动调整码率值。
- videoFrameRate
-
用于旁路直播的输出视频的帧率。取值范围是 (0,30],单位为 fps。15 fps 为默认值。
注意: Agora 服务器会将高于 30 fps 的帧率统一调整为 30 fps。 - lowLatency
-
- 弃用
- Agora 不推荐使用。
低延时模式
true
: 低延时,不保证画质。false
:(默认值)高延时,保证画质。
- videoGop
- 用于旁路直播的输出视频的 GOP(Group of Pictures)。单位为帧。默认值为 30。
- videoCodecProfile
-
用于旁路直播的输出视频的编码规格。可以设置为 66、77 或 100,详见 VIDEO_CODEC_PROFILE_TYPE。
注意: 如果你把这个参数设为其他值,Agora 服务器会将其调整为默认值。 - 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
-
- 弃用
- 已废弃,Agora 不推荐使用。
发送给 CDN 客户端的 metadata。
- watermark
-
直播视频上的水印。图片格式需为 PNG。详见 RtcImage。
你可以添加一个水印,或使用数组的方式添加多个水印。该参数与 watermarkCount搭配使用。
- backgroundImage
-
直播视频上的背景图。图片格式需为 PNG。详见 RtcImage。
你可以添加一张背景图,或使用数组的方式添加多张背景图。该参数与 backgroundImageCount 搭配使用。
- 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
- 转码推流的高级功能。详见 LiveStreamAdvancedFeature。
- advancedFeatureCount
- 开启的高级功能数量。默认值为 0。
LocalAccessPointConfiguration
Local Access Point 配置。
struct LocalAccessPointConfiguration { const char** ipList; int ipListSize; const char** domainList; int domainListSize; const char* verifyDomainName; LOCAL_PROXY_MODE mode; LocalAccessPointConfiguration() : ipList(NULL), ipListSize(0), domainList(NULL), domainListSize(0), verifyDomainName(NULL), mode(ConnectivityFirst) {} };
属性
- ipList
- Local Access Point 的对内 IP 地址列表。ipList 和 domainList 必须至少填一个。
- ipListSize
- Local Access Point 对内 IP 地址的数量。该参数的值必须和你填入的 IP 地址的数量一致。
- domainList
- Local Access Point 的域名列表。SDK 会根据你填入的域名解析出 Local Access Point 的 IP 地址。域名解析的超时时间为 10 秒。ipList 和 domainList 必须至少填一个。如果你同时指定 IP 地址和域名,SDK 会将根据域名解析出来的 IP 地址和你指定的 IP 地址合并、去重,然后随机连接一个 IP 来实现负载均衡。
- domainListSize
- Local Access Point 域名的数量。该参数的值必须和你填入的域名的数量一致。
- verifyDomainName
- 内网证书验证域名。如果传值为空,则用 SDK 默认的证书验证域名
secure-edge.local
。 - mode
-
连接模式。详见 LOCAL_PROXY_MODE。
LocalAudioStats
本地音频统计数据。
struct LocalAudioStats { int numChannels; int sentSampleRate; int sentBitrate; int internalCodec; unsigned short txPacketLossRate; int audioDeviceDelay; };
属性
- numChannels
- 声道数。
- sentSampleRate
- 发送本地音频的采样率,单位为 Hz。
- sentBitrate
- 发送本地音频的码率平均值,单位为 Kbps。
- txPacketLossRate
- 弱网对抗前本端到 Agora 边缘服务器的丢包率 (%)。
- internalCodec
- 内部的 payload 类型。
- audioDeviceDelay
- 播放或录制音频时,音频设备模块的延时。
LocalTranscoderConfiguration
本地合图的配置。
struct LocalTranscoderConfiguration {
unsigned int streamCount;
TranscodingVideoStream* VideoInputStreams;
VideoEncoderConfiguration videoOutputConfiguration;
LocalTranscoderConfiguration()
: streamCount(0),
VideoInputStreams(NULL),
videoOutputConfiguration() {}
};
属性
- streamCount
-
参与本地合图的视频流的数量。
- VideoInputStreams
-
参与本地合图的视频流。详见 TranscodingVideoStream。
- videoOutputConfiguration
-
本地合图后,合图视频的编码配置。详见 VideoEncoderConfiguration。
LocalVideoStats
本地视频流统计信息。
struct LocalVideoStats { uid_t uid; int sentBitrate; int sentFrameRate; int captureFrameRate; int captureFrameWidth; int captureFrameHeight; int regulatedCaptureFrameRate; int regulatedCaptureFrameWidth; int regulatedCaptureFrameHeight; int encoderOutputFrameRate; int encodedFrameWidth; int encodedFrameHeight; int rendererOutputFrameRate; int targetBitrate; int targetFrameRate; QUALITY_ADAPT_INDICATION qualityAdaptIndication; int encodedBitrate; int encodedFrameCount; VIDEO_CODEC_TYPE codecType; unsigned short txPacketLossRate; CAPTURE_BRIGHTNESS_LEVEL_TYPE captureBrightnessLevel; };
属性
- uid
- 本地用户的 ID。
- sentBitrate
-
实际发送码率 (Kbps)注意: 不包含丢包后重传视频等的发送码率。
- sentFrameRate
- 实际发送帧率 (fps)。
注意: 不包含丢包后重传视频等的发送帧率。
- captureFrameRate
- 本地视频采集帧率 (fps)。
- captureFrameWidth
- 本地视频采集宽度 (px)。
- captureFrameHeight
- 本地视频采集高度 (px)。
- regulatedCaptureFrameRate
- SDK 内置的视频采集适配器(regulator)调整后的摄像头采集视频帧率 (fps)。Regulator 根据视频编码配置对摄像头采集视频的帧率进行调整。
- regulatedCaptureFrameWidth
- SDK 内置的视频采集适配器(regulator)调整后的摄像头采集视频宽度 (px)。Regulator 根据视频编码配置对摄像头采集视频的宽高进行调整。
- regulatedCaptureFrameHeight
- SDK 内置的视频采集适配器(regulator)调整后的摄像头采集视频高度 (px)。Regulator 根据视频编码配置对摄像头采集视频的宽高进行调整。
- encoderOutputFrameRate
- 本地视频编码器的输出帧率,单位为 fps。
- rendererOutputFrameRate
- 本地视频渲染器的输出帧率,单位为 fps。
- targetBitrate
- 当前编码器的目标编码码率 (Kbps),该码率为 SDK 根据当前网络状况预估的一个值。
- targetFrameRate
- 当前编码器的目标编码帧率 (fps)。
- qualityAdaptIndication
- 统计周期内本地视频质量(基于目标帧率和目标码率)的自适应情况。详见 QUALITY_ADAPT_INDICATION。
- encodedBitrate
-
视频编码码率(Kbps)。注意: 不包含丢包后重传视频等的编码码率。
- encodedFrameHeight
- 视频编码高度(px)。
- encodedFrameWidth
- 视频编码宽度(px)。
- encodedFrameCount
- 视频发送的帧数,累计值。
- codecType
- 视频的编码类型。详见 VIDEO_CODEC_TYPE。
- txPacketLossRate
- 弱网对抗前本端到 Agora 边缘服务器的视频丢包率 (%)。
- captureBrightnessLevel
- 本地采集的画质亮度级别。详见 CAPTURE_BRIGHTNESS_LEVEL_TYPE。
LogConfig
Agora SDK 日志文件的配置。
struct LogConfig { const char* filePath; uint32_t fileSizeInKB; LOG_LEVEL level; LogConfig() : filePath(NULL), fileSizeInKB(DEFAULT_LOG_SIZE_IN_KB), level(OPTIONAL_LOG_LEVEL_SPECIFIER LOG_LEVEL_INFO) {} };
属性
- filePath
-
日志文件的完整路径。请确保你指定的目录存在且可写。你可以通过该参数修改日志文件名。
默认路径为:- Android:/storage/emulated/0/Android/data/<packagename>/files/agorasdk.log。
- iOS:App Sandbox/Library/caches/agorasdk.log。
- macOS:
- 开启沙盒: App Sandbox/Library/Logs/agorasdk.log,例如 /Users/<username>/Library/Containers/<AppBundleIdentifier>/Data/Library/Logs/agorasdk.log。
- 关闭沙盒: ~/Library/Logs/agorasdk.log
- Windows:C:\Users\<user_name>\AppData\Local\Agora\<process_name>\agorasdk.log。
- fileSizeInKB
- 单个
agorasdk.log
日志文件的大小,单位为 KB,取值范围为 [128,1024],默认值为 1,024 KB。 如果你将fileSizeInKByte
设为小于 128 KB,SDK 会自动调整到 128 KB;如果你将fileSizeInKByte
设为大于 1,024 KB,SDK 会自动调整到 1,024 KB。 - level
-
Agora SDK 的日志输出等级,详见 LOG_LEVEL。
例如,如果你选择 WARN 级别,就可以看到在 FATAL、ERROR 和 WARN 级别上的所有日志信息。
LowlightEnhanceOptions
暗光增强选项。
struct LowlightEnhanceOptions { enum LOW_LIGHT_ENHANCE_MODE { LOW_LIGHT_ENHANCE_AUTO = 0, LOW_LIGHT_ENHANCE_MANUAL = 1, }; enum LOW_LIGHT_ENHANCE_LEVEL { LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY = 0, LOW_LIGHT_ENHANCE_LEVEL_FAST = 1, }; LOW_LIGHT_ENHANCE_MODE mode; LOW_LIGHT_ENHANCE_LEVEL level; LowlightEnhanceOptions(LOW_LIGHT_ENHANCE_MODE lowlightMode, LOW_LIGHT_ENHANCE_LEVEL lowlightLevel) : mode(lowlightMode), level(lowlightLevel) {} LowlightEnhanceOptions() : mode(LOW_LIGHT_ENHANCE_AUTO), level(LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY) {} };
属性
- level
- 暗光增强等级。详见 LOW_LIGHT_ENHANCE_LEVEL。
- mode
- 暗光增强模式。详见 LOW_LIGHT_ENHANCE_MODE。
LOW_LIGHT_ENHANCE_MODE
暗光增强模式。
枚举值
- LOW_LIGHT_ENHANCE_AUTO
- 0:(默认)自动模式。SDK 会根据环境光亮度自动开启或关闭暗光增强功能,以适时补光和防止过曝。
- LOW_LIGHT_ENHANCE_MANUAL
- 1:手动模式。用户需手动开启或关闭暗光增强功能。
LOW_LIGHT_ENHANCE_LEVEL
暗光增强等级。
枚举值
- LOW_LIGHT_ENHANCE_LEVEL_HIGH_QUALITY
- 0:(默认)优先画质的暗光增强,会处理视频图像的亮度、细节、噪声,消耗的性能适中,处理速度适中,综合画质最优。
- LOW_LIGHT_ENHANCE_LEVEL_FAST
- 1:优先性能的暗光增强,会处理视频图像的亮度、细节,消耗的性能较少,处理速度较快。
MediaRecorderConfiguration
本地音视频流录制配置。
struct MediaRecorderConfiguration { const char* storagePath; MediaRecorderContainerFormat containerFormat; MediaRecorderStreamType streamType; int maxDurationMs; int recorderInfoUpdateInterval; MediaRecorderConfiguration() : storagePath(NULL), containerFormat(FORMAT_MP4), streamType(STREAM_TYPE_BOTH), maxDurationMs(120000), recorderInfoUpdateInterval(0) {} MediaRecorderConfiguration(const char* path, MediaRecorderContainerFormat format, MediaRecorderStreamType type, int duration, int interval) : storagePath(path), containerFormat(format), streamType(type), maxDurationMs(duration), recorderInfoUpdateInterval(interval) {} };
属性
- 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
- 最大录制时长,单位为毫秒,默认值为 120000。
- recorderInfoUpdateInterval
- 录制信息更新间隔,单位为毫秒,取值范围为 [1000,10000]。SDK 会根据该值的设置触发 onRecorderInfoUpdated 回调,报告更新后的录制信息。
MediaSource
需播放的媒体文件的相关信息及播放设置。
struct MediaSource {
const char* url;
const char* uri;
int64_t startPos;
bool autoPlay;
bool enableCache;
Optional<bool> isAgoraSource;
Optional<bool> isLiveSource;
IMediaPlayerCustomDataProvider* provider;
MediaSource() : url(NULL), uri(NULL), startPos(0), autoPlay(true), enableCache(false),
provider(NULL){
}
};
属性
- url
-
需要播放的媒体资源的 URL。
注: 如果你打开媒体资源为自定义媒体资源,则无需向 url 传值。 - uri
- 媒体文件的 URI(Uniform Resource Identifier),可用于标识媒体文件。
- startPos
- 设置起始播放位置 (毫秒),默认值为 0。
- autoPlay
- 打开媒体文件后,是否开启自动播放:
true
:(默认)开启自动播放。false
:关闭自动播放。
注:如果你设置关闭自动播放,打开媒体文件后,还需再调用 play 方法来播放媒体文件。
- enableCache
- 此次播放是否开启实时缓存功能:
true
:开启实时缓存。false
:(默认)关闭实时缓存。
注:- 如需开启实时缓存,请向 uri 传值,否则播放器会以媒体文件的 url 作为缓存索引。
- 开启实时缓存后,播放器会预先缓存当前正在播放的媒体文件的部分数据到本地,当你下次播放该文件时播放器会直接从缓存中加载数据,可节省网络流量。当前缓存的媒体文件的相关统计数据会在媒体文件开始播放后每秒更新一次,详见 CacheStatistics。
- isAgoraSource
- 打开的媒体资源是否为通过 Agora 融合 CDN 分发的直播或点播流:
true
:打开的媒体资源是 Agora 融合 CDN 分发的直播或点播流。false
:(默认)打开的媒体资源不是 Agora 融合 CDN 分发的直播或点播流。
注:如果你需要打开的媒体资源为 Agora 融合 CDN 分发的直播流或点播流,请向 url 传入直播或点播流的 URL 并将 isAgoraSource 设置为
true
,否则无需设置 isAgoraSource。 - isLiveSource
- 打开的媒体资源是否为直播流:
true
:直播流。false
:(默认)非直播流。
如果你打开的媒体资源为直播流,Agora 推荐你将该参数设置为
true
,可加快打开直播流的速度。注:仅当打开的媒体资源为直播流时,将 isLiveSource 设置为
true
后才可加快媒体资源的打开速度。 - provider
-
自定义媒体资源文件的回调。详见 IMediaPlayerCustomDataProvider。
注:如果你需要打开自定义的媒体资源,例如需要自行解密的媒体资源,直接向 provider 传值,无需再向 url 传值。
PlayerStreamInfo
播放器媒体流的所有信息。
struct PlayerStreamInfo { int streamIndex; MEDIA_STREAM_TYPE streamType; char codecName[kMaxCharBufferLength]; char language[kMaxCharBufferLength]; int videoFrameRate; int videoBitRate; int videoWidth; int videoHeight; int videoRotation; int audioSampleRate; int audioChannels; int audioBitsPerSample; int64_t duration; PlayerStreamInfo() : streamIndex(0), streamType(STREAM_TYPE_UNKNOWN), videoFrameRate(0), videoBitRate(0), videoWidth(0), videoHeight(0), videoRotation(0), audioSampleRate(0), audioChannels(0), audioBitsPerSample(0), duration(0) { memset(codecName, 0, sizeof(codecName)); memset(language, 0, sizeof(language));
属性
- streamIndex
- 媒体流的索引值。
- streamType
- 此条媒体流的类型。详见 MEDIA_STREAM_TYPE。
- codecName
- 此条媒体流的编码规格。
- language
- 此条媒体流的语言。
- videoFrameRate
- 该参数仅对视频流生效,表示视频帧率 (fps)。
- videoBitRate
- 该参数仅对视频流生效,表示视频码率 (bps)。
- videoWidth
- 该参数仅对视频流生效,表示视频宽度 (pixel)。
- videoHeight
- 该参数仅对视频流生效,表示视频高度 (pixel)。
- videoRotation
- 该参数仅对视频流生效,表示旋转角度。
- audioSampleRate
- 该参数仅对音频流生效,表示音频采样率 (Hz)。
- audioChannels
- 该参数仅对音频流生效,表示声道数。
- audioBitsPerSample
- 该参数仅对音频流生效,表示每个音频采样点的位数 (bit)。
- duration
- 媒体流的时长(秒)。
PlayerUpdatedInfo
媒体播放器相关信息。
struct PlayerUpdatedInfo { Optional<const char*> playerId; Optional<const char*> deviceId; Optional<CacheStatistics> cacheStatistics; };
属性
- playerId
- 播放器 ID,标识一个播放器。
- deviceId
- 设备 ID,标识一个设备。
- cacheStatistics
-
当前缓存的媒体文件的相关统计数据。
调用 openWithMediaSource 方法且设置 enableCache 成员为
true
后,当前缓存的媒体文件的相关统计数据会在媒体文件开始播放后每秒更新一次,详见 CacheStatistics。
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。
RecorderInfo
录制文件信息。
struct RecorderInfo { const char* fileName; unsigned int durationMs; unsigned int fileSize; RecorderInfo() : fileName(NULL), durationMs(0), fileSize(0) {} RecorderInfo(const char* name, unsigned int dur, unsigned int size) : fileName(name), durationMs(dur), fileSize(size) {} };
属性
- fileName
- 录制文件的绝对存储路径。
- durationMs
- 录制文件的时长,单位为毫秒。
- fileSize
- 录制文件的大小,单位为字节。
Rectangle
目标区域相对于整个屏幕或窗口的位置,如不填,则表示整个屏幕或窗口。
struct Rectangle { int x; int y; int width; int height; Rectangle(): x(0), y(0), width(0), height(0) {} Rectangle(int xx, int yy, int ww, int hh): x(xx), y(yy), width(ww), height(hh) {} };
属性
- x
- 左上角的横向偏移。
- y
- 左上角的纵向偏移。
- width
- 目标区域的宽度。
- height
- 目标区域的高度。
RemoteAudioStats
远端用户的音频统计数据。
struct RemoteAudioStats { uid_t uid; int quality; int networkTransportDelay; int jitterBufferDelay; int audioLossRate; int numChannels; int receivedSampleRate; int receivedBitrate; int totalFrozenTime; int frozenRate; int mosValue; int totalActiveTime; int publishDuration; int qoeQuality; int qualityChangedReason; RemoteAudioStats() : uid(0), quality(0), networkTransportDelay(0), jitterBufferDelay(0), audioLossRate(0), numChannels(0), receivedSampleRate(0), receivedBitrate(0), totalFrozenTime(0), frozenRate(0), mosValue(0), totalActiveTime(0), publishDuration(0), qoeQuality(0) {} qualityChangedReason(0){} };
属性
- 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
-
统计周期内,Agora 实时音频 MOS(平均主观意见分)评估方法对接收到的远端音频流的质量评分。返回值范围为 [0,500]。返回值除以 100 即可得到 MOS 分数,范围为 [0,5] 分,分数越高,音频质量越好。
Agora 实时音频 MOS 评分对应的主观音质感受如下:MOS 分数 音质感受 大于 4 分 音频质量佳,清晰流畅。 3.5 - 4 分 音频质量较好,偶有音质损伤,但依然清晰。 3 - 3.5 分 音频质量一般,偶有卡顿,不是非常流畅,需要一点注意力才能听清。 2.5 - 3 分 音频质量较差,卡顿频繁,需要集中精力才能听清。 2 - 2.5 分 音频质量很差,偶有杂音,部分语义丢失,难以交流。 小于 2 分 音频质量非常差,杂音频现,大量语义丢失,完全无法交流。
RemoteVideoStats
远端视频流的统计信息。
struct RemoteVideoStats { uid_t uid; int delay; int width; int height; int receivedBitrate; int decoderOutputFrameRate; int rendererOutputFrameRate; int frameLossRate; int packetLossRate; VIDEO_STREAM_TYPE rxStreamType; int totalFrozenTime; int frozenRate; int avSyncTimeMs; int totalActiveTime; int publishDuration; int superResolutionType; };
属性
- uid
- 用户 ID,指定是哪个用户的视频流。
- delay
-
- 弃用:
- 在有音画同步机制的音视频场景中,你可以参考 RemoteAudioStats 里的 networkTransportDelay 和 jitterBufferDelay 成员的值,了解视频的延迟数据。
延时(毫秒)。
- width
- 视频流宽(像素)。
- height
- 视频流高(像素)。
- receivedBitrate
- (上次统计后)接收到的码率(Kbps)。
- decoderOutputFrameRate
- 远端视频解码器的输出帧率,单位为 fps。
- rendererOutputFrameRate
- 远端视频渲染器的输出帧率,单位为 fps。
- frameLossRate
- 远端视频丢包率(%)。
- packetLossRate
- 远端视频在使用抗丢包技术之后的丢包率(%)。
- rxStreamType
- 视频流类型,大流或小流。详见 VIDEO_STREAM_TYPE。
- totalFrozenTime
- 远端用户在加入频道后发生视频卡顿的累计时长(ms)。通话过程中,视频帧率设置不低于 5 fps 时,连续渲染的两帧视频之间间隔超过 500 ms,则记为一次视频卡顿。
- frozenRate
- 远端用户在加入频道后发生视频卡顿的累计时长占视频总有效时长的百分比 (%)。视频有效时长是指远端用户加入频道后视频未被停止发送或禁用的时长。
- totalActiveTime
-
视频有效时长(毫秒)。
视频总有效时长是远端用户或主播加入频道后,既没有停止发送视频流,也没有禁用视频模块的通话时长。
- publishDuration
-
远端视频流的累计发布时长(毫秒)。
- superResolutionType
- 超分辨率的开启状态:
- >0:超分辨率已开启。
- =0:超分辨率未开启。
- avSyncTimeMs
- 音频超前视频的时间 (ms)。
注意: 如果为负值,则代表音频落后于视频。
RemoteVoicePositionInfo
远端用户或媒体播放器的空间位置信息。
struct RemoteVoicePositionInfo { float position[3]; float forward[3]; RemoteVoicePositionInfo() = default; };
属性
- position
- 在世界坐标系中的坐标。该参数是长度为 3 的数组,三个值依次表示前、右、上的坐标值。
- forward
- 在世界坐标系前轴的单位向量。该参数是长度为 3 的数组,三个值依次表示前、右、上的坐标值。
RtcEngineContext
RtcEngineContext 定义。
struct RtcEngineContext { IRtcEngineEventHandler* eventHandler; const char* appId; void* context; CHANNEL_PROFILE_TYPE channelProfile; AUDIO_SCENARIO_TYPE audioScenario; unsigned int areaCode; commons::LogConfig logConfig; RtcEngineContext() : eventHandler(NULL), appId(NULL), context(NULL), channelProfile(CHANNEL_PROFILE_LIVE_BROADCASTING), audioScenario(AUDIO_SCENARIO_HIGH_DEFINITION), areaCode(AREA_CODE_GLOB), logConfig() {} };
属性
- eventHandler
- IRtcEngine 的事件句柄,详见 IRtcEngineEventHandler。
- appId
- Agora 为 app 开发者签发的 App ID。 使用同一个 App ID 的 app 才能进入同一个频道进行通话或直播。一个 App ID 只能用于创建一个 IRtcEngine。如需更换 App ID,必须先调用 release 销毁当前 IRtcEngine 再重新创建。
- context
-
- Windows 平台上,context 是视窗句柄。如设值,则表示支持设备热插拔。
- Android 平台上,context 是安卓活动上下文。
- channelProfile
-
频道使用场景。详见 CHANNEL_PROFILE_TYPE。
- audioScenario
- 音频场景。详见 AUDIO_SCENARIO_TYPE 。不同的音频场景下,设备的音量类型是不同的。
- areaCode
- 服务器的访问区域。该功能为高级设置,适用于有访问安全限制的场景。支持的区域详见 AREA_CODE。区域码支持位操作。
- logConfig
-
设置 Agora SDK 输出的日志文件。详见 LogConfig。
默认情况下,SDK 会生成 5 个 SDK 日志文件和 5 个 API 调用日志文件,规则如下:
- SDK 日志文件的名称分别为:
agorasdk.log
、agorasdk.1.log
、agorasdk.2.log
、agorasdk.3.log
、agorasdk.4.log
。 - API 调用日志文件的名称分别为:
agoraapi.log
、agoraapi.1.log
、agoraapi.2.log
、agoraapi.3.log
、agoraapi.4.log
。 - 每个 SDK 日志文件的默认大小为 1,024 KB;API 调用日志文件的默认大小为 2,048 KB。日志文件均为 UTF-8 编码。
- 最新的日志永远写在
agorasdk.log
和agoraapi.log
中。 - 当
agorasdk.log
写满后,SDK 会按照以下顺序对日志文件进行操作:- 删除
agorasdk.4.log
文件(如有)。 - 将
agorasdk.3.log
重命名为agorasdk.4.log
。 - 将
agorasdk.2.log
重命名为agorasdk.3.log
。 - 将
agorasdk.1.log
重命名为agorasdk.2.log
。 - 新建
agorasdk.log
文件。
- 删除
agoraapi.log
文件的覆盖规则与agorasdk.log
相同。
- SDK 日志文件的名称分别为:
RtcConnection
包含连接信息的类。
struct RtcConnection {
const char* channelId;
uid_t localUid;
RtcConnection() : RtcConnection(NULL, 0) {}
RtcConnection(const char* channel_id, uid_t local_uid)
: channelId(channel_id), localUid(local_uid) {}
};
属性
- channelId
- 频道名。
- localUid
- 本地用户 ID。
RtcImage
图像属性。
typedef struct RtcImage { const char* url; int x; int y; int width; int height; int zOrder; double alpha; RtcImage() : url(NULL), x(0), y(0), width(0), height(0), zOrder(0), alpha(1.0) {}
用于设置直播视频的水印和背景图片的属性。
属性
- url
- 直播视频上图片的 HTTP/HTTPS 地址。字符长度不得超过 1024 字节。
- x
- 图片在视频画面上的 x 坐标 (pixel),以输出视频画面的左上角为原点。
- y
- 图片在视频画面上的 y 坐标 (pixel),以输出视频画面的左上角为原点。
- width
- 图片在视频画面上的宽度 (pixel)。
- height
- 图片在视频画面上的高度 (pixel)。
- zOrder
- 水印或背景图的图层编号。使用水印数组添加单张或多张水印时,必须向 zOrder 传值,取值范围为 [1,255],否则 SDK 会报错。其余情况,zOrder 可选传值,取值范围为 [0,255],0 为默认值。0 代表图层的最下层,255 代表图层的最上层。
- alpha
- 水印或背景图片的透明度。取值范围为 [0.0,1.0]:
- 0.0: 完全透明。
- 1.0:(默认)完全不透明。
RtcStats
通话相关的统计信息。
struct RtcStats { unsigned int duration; unsigned int txBytes; unsigned int rxBytes; unsigned int txAudioBytes; unsigned int txVideoBytes; unsigned int rxAudioBytes; unsigned int rxVideoBytes; unsigned short txKBitRate; unsigned short rxKBitRate; unsigned short rxAudioKBitRate; unsigned short txAudioKBitRate; unsigned short rxVideoKBitRate; unsigned short txVideoKBitRate; unsigned short lastmileDelay; unsigned int userCount; double cpuAppUsage; double cpuTotalUsage; int gatewayRtt; double memoryAppUsageRatio; double memoryTotalUsageRatio; int memoryAppUsageInKbytes; int connectTimeMs; int txPacketLossRate; int rxPacketLossRate; RtcStats() : duration(0), txBytes(0), rxBytes(0), txAudioBytes(0), txVideoBytes(0), rxAudioBytes(0), rxVideoBytes(0), txKBitRate(0), rxKBitRate(0), rxAudioKBitRate(0), txAudioKBitRate(0), rxVideoKBitRate(0), txVideoKBitRate(0), lastmileDelay(0), userCount(0), cpuAppUsage(0.0), cpuTotalUsage(0.0), gatewayRtt(0), memoryAppUsageRatio(0.0), memoryTotalUsageRatio(0.0), memoryAppUsageInKbytes(0), connectTimeMs(0), txPacketLossRate(0), rxPacketLossRate(0) {} };
属性
- 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 使用率 (%)。
注意:
- onLeaveChannel 回调中报告的 cpuAppUsage 恒为 0。
- 自 Android 8.1 起,因系统限制,你可能无法通过该属性获取 CPU 使用率。
- cpuTotalUsage
-
当前系统的 CPU 使用率 (%)。
对于 Windows 平台,在多核环境中,该成员指多核 CPU 的平均使用率。 计算方式为 (100 - 任务管理中显示的系统空闲进程 CPU)/100。
注意:- onLeaveChannel 回调中报告的 cpuTotalUsage 恒为 0。
- 自 Android 8.1 起,因系统限制,你无法通过该属性获取 CPU 使用率。
- connectTimeMs
- 从开始建立连接到成功连接的时间(毫秒)。如报告 0,则表示无效。
- gatewayRtt
- 客户端到本地路由器的往返时延 (ms)。
注: 在 Android 平台上,如需获取 gatewayRtt,请确保已在项目
AndroidManifest.xml
文件的</application>
后面添加android.permission.ACCESS_WIFI_STATE
权限。 - memoryAppUsageRatio
-
当前 App 的内存占比 (%)。
注意: 该值仅作参考。受系统限制可能无法获取。 - memoryTotalUsageRatio
-
当前系统的内存占比 (%)。
注意: 该值仅作参考。受系统限制可能无法获取。 - memoryAppUsageInKbytes
-
当前 App 的内存大小 (KB)。
注意: 该值仅作参考。受系统限制可能无法获取。
ScreenAudioParameters
共享屏幕流的音频配置。
struct ScreenAudioParameters { int sampleRate = 16000; int channels = 2; int captureSignalVolume = 100; };
仅适用于 captureAudio 为 true
的场景。
属性
- sampleRate
- 音频采样率 (Hz)。默认值为 16000。
- channels
- 声道数。默认值为 2,表示双声道。
- captureSignalVolume
- 采集的系统音量。取值范围为 [0,100]。默认值为 100。
ScreenCaptureConfiguration
屏幕采集配置。
struct ScreenCaptureConfiguration {
bool isCaptureWindow;
uint32_t displayId;
Rectangle screenRect;
view_t windowId;
ScreenCaptureParameters params;
Rectangle regionRect;
ScreenCaptureConfiguration() : isCaptureWindow(false), displayId(0) {}
};
属性
- isCaptureWindow
- 是否采集屏幕上的窗口:
true
:采集窗口。false
:(默认)采集屏幕,不采集窗口。
- displayId
- (仅适用于 macOS 平台)屏幕的 display ID。
注意: 请仅在 Mac 设备上采集屏幕时使用该参数。
- screenRect
- (仅适用于 Windows 平台)待共享的屏幕相对于虚拟屏的位置。
注意: 请仅在 Windows 设备上采集屏幕时使用该参数。
- windowId
- (仅适用于 Windows 和 macOS 平台)窗口 ID。
注意: 请仅在采集窗口时使用该参数。
- params
- (仅适用于 Windows 和 macOS 平台)屏幕共享流的编码参数配置。详见 ScreenCaptureParameters。
- regionRect
-
(仅适用于 Windows 和 macOS 平台)待共享区域相对于整个屏幕的位置。详见 Rectangle。
如不填,则表示共享整个屏幕。如果设置的共享区域超出了屏幕的边界,则只共享屏幕内的内容。 如果将 Rectangle 中的 width 或 height 设为 0 ,则共享整个屏幕。
ScreenCaptureParameters
屏幕共享的参数配置。
struct ScreenCaptureParameters { VideoDimensions dimensions; int frameRate; int bitrate; bool captureMouseCursor; bool windowFocus; view_t *excludeWindowList; int excludeWindowCount; int highLightWidth; unsigned int highLightColor; bool enableHighLight; ScreenCaptureParameters() : dimensions(1920, 1080), frameRate(5), bitrate(STANDARD_BITRATE), captureMouseCursor(true), windowFocus(false), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0), highLightWidth(0), highLightColor(0), enableHighLight(false) {} ScreenCaptureParameters(const VideoDimensions& d, int f, int b) : dimensions(d), frameRate(f), bitrate(b), captureMouseCursor(true), windowFocus(false), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0), highLightWidth(0), highLightColor(0), enableHighLight(false) {} ScreenCaptureParameters(int width, int height, int f, int b) : dimensions(width, height), frameRate(f), bitrate(b), captureMouseCursor(true), windowFocus(false), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0), highLightWidth(0), highLightColor(0), enableHighLight(false){} ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs) : dimensions(width, height), frameRate(f), bitrate(b), captureMouseCursor(cur), windowFocus(fcs), excludeWindowList(OPTIONAL_NULLPTR), excludeWindowCount(0), highLightWidth(0), highLightColor(0), enableHighLight(false) {} ScreenCaptureParameters(int width, int height, int f, int b, view_t *ex, int cnt) : dimensions(width, height), frameRate(f), bitrate(b), captureMouseCursor(true), windowFocus(false), excludeWindowList(ex), excludeWindowCount(cnt), highLightWidth(0), highLightColor(0), enableHighLight(false) {} ScreenCaptureParameters(int width, int height, int f, int b, bool cur, bool fcs, view_t *ex, int cnt) : dimensions(width, height), frameRate(f), bitrate(b), captureMouseCursor(cur), windowFocus(fcs), excludeWindowList(ex), excludeWindowCount(cnt), highLightWidth(0), highLightColor(0), enableHighLight(false) {} };
属性
- dimensions
-
在 Windows 和 macOS 平台上,表示共享的屏幕流的视频编码分辨率。详见 VideoDimensions。默认值为 1920 × 1080,即 2073600 像素。该像素值为计费标准。
当共享的屏幕分辨率宽高比与该值设置不一致时,SDK 按如下策略进行编码。假设 dimensions 设为 1920 × 1080:- 如果屏幕分辨率小于 dimensions,如 1000 × 1000,SDK 直接按 1000 × 1000 进行编码。
- 如果屏幕分辨率大于 dimensions,如 2000 × 1500,SDK 按屏幕分辨率的宽高比,即 4:3,取 dimensions 以内的最大分辨率进行编码,即 1440 × 1080。
- frameRate
- 在 Windows 和 macOS 平台上,表示共享的屏幕流的视频编码帧率。单位为 fps;默认值为 5,建议不要超过 15。
- bitrate
- 在 Windows 和 macOS 平台上,表示共享的屏幕流的视频编码码率。单位为 Kbps;默认值为 0,表示 SDK 根据当前共享屏幕的分辨率计算出一个合理的值。
- captureMouseCursor
-
是否采集鼠标用于屏幕共享:
true
:(默认)采集鼠标。false
: 不采集鼠标。
- windowFocus
-
调用 startScreenCaptureByWindowId 方法共享窗口时,是否将该窗口前置:
true
: 前置窗口。false
:(默认)不前置窗口。
- excludeWindowList
- 待屏蔽窗口的 ID 列表。调用 startScreenCaptureByDisplayId 开启屏幕共享时,你可以通过该参数屏蔽指定的窗口。你可以在调用 updateScreenCaptureParameters 更新屏幕共享的配置参数时,通过该参数动态屏蔽指定的窗口。
- enableHighLight
- (仅适用于 macOS)是否对共享的窗口或屏幕进行描边:
true
: 描边。false
: (默认)不描边。
注: 当你在共享窗口或屏幕的部分区域时,如果将该参数设置为true
,SDK 会对整个窗口或屏幕进行描边。 - highLightColor
- (仅适用于 macOS)描边的 RGBA 颜色。默认值为 0xFF8CBF26。
注: 在 macOS 平台上,
COLOR_CLASS
指NSColor
。 - highLightWidth
- (仅适用于 macOS)描边的宽度 (px)。默认值为 5,取值范围为 (0,50]。
注: 该参数仅在 highLighted 设置为
true
时生效。 - excludeWindowCount
- 待屏蔽窗口的数量。
ScreenCaptureParameters2
屏幕共享的参数配置。
struct ScreenCaptureParameters2 { bool captureAudio = false; ScreenAudioParameters audioParams; bool captureVideo = true; ScreenVideoParameters videoParams; };
属性
- captureAudio
- 屏幕共享时是否采集系统音频:
true
: 采集系统音频。false
: (默认)不采集系统音频。
注: 受系统限制,采集系统音频仅适用于 Android API 级别为 29 及以上,即 Android 10 及以上。 - audioParams
- 共享屏幕流的音频配置。详见 ScreenAudioParameters。
注意: 该参数仅在 captureAudio 为
true
时生效。 - captureVideo
- 屏幕共享时是否采集屏幕:
true
:(默认)采集屏幕。false
: 不采集屏幕。
注: 受系统限制,采集屏幕仅适用于 Android API 级别为 21 及以上,即 Android 5 及以上。 - videoParams
- 共享屏幕流的视频编码配置。详见 ScreenVideoParameters。
注意: 该参数仅在 captureVideo 为
true
时生效。
ScreenVideoParameters
共享屏幕流的视频编码配置。
struct ScreenVideoParameters { VideoDimensions dimensions; int frameRate = 15; int bitrate; VIDEO_CONTENT_HINT contentHint = VIDEO_CONTENT_HINT::CONTENT_HINT_MOTION; ScreenVideoParameters() : dimensions(1280, 720) {} };
属性
- dimensions
- 视频编码的分辨率。默认值为 1280 × 720。
- frameRate
- 视频编码帧率 (fps)。默认值为 15。
- bitrate
- 视频编码码率 (Kbps)。
- contentHint
- 屏幕共享视频的内容类型。详见 VideoContentHint。
SegmentationProperty
背景图像的处理属性。
struct SegmentationProperty { enum SEG_MODEL_TYPE { SEG_MODEL_AI = 1, SEG_MODEL_GREEN = 2 }; SEG_MODEL_TYPE modelType; float greenCapacity; SegmentationProperty() : modelType(SEG_MODEL_AI), greenCapacity(0.5){} };
属性
- modelType
- 进行背景处理的算法。详见 SEG_MODEL_TYPE。
- greenCapacity
-
对画面中绿颜色(即不同程度的绿色)识别的精度范围。取值范围为 [0,1],默认值为 0.5。取值越大,代表可识别的绿色范围越大。当该参数取值过大时,人像边缘和人像范围内的绿色也会被识别。Agora 推荐你根据实际效果动态调整该参数的值。
注: 该参数仅在 modelType 设置为 SEG_MODEL_GREEN 时生效。
SimulcastStreamConfig
视频小流的配置。
struct SimulcastStreamConfig { VideoDimensions dimensions; int bitrate; int framerate; SimulcastStreamConfig() : dimensions(160, 120), bitrate(65), framerate(5) {} bool operator==(const SimulcastStreamConfig& rhs) const { return dimensions == rhs.dimensions && bitrate == rhs.bitrate && framerate == rhs.framerate; } };
属性
- dimensions
- 视频尺寸。详见 VideoDimensions。默认值为 160 × 120。
- bitrate
- 视频码率 (Kbps)。默认值为 65。
- framerate
- 视频帧率 (fps)。默认值为 5。
SpatialAudioParams
空间音效参数。
struct SpatialAudioParams { Optional<double> speaker_azimuth; Optional<double> speaker_elevation; Optional<double> speaker_distance; Optional<int> speaker_orientation; Optional<bool> enable_blur; Optional<bool> enable_air_absorb; Optional<double> speaker_attenuation; Optional<bool> enable_doppler; };
属性
- speaker_azimuth
- 远端用户或媒体播放器相对于本地用户的水平角。取值范围为 [0,360],单位为度。其中:
- 0:(默认)0 度,表示水平面的正前方。
- 90: 90 度,表示水平面的正左方。
- 180: 180 度,表示水平面的正后方。
- 270: 270 度,表示水平面的正右方。
- 360: 360 度,表示水平面的正前方。
- speaker_elevation
- 远端用户或媒体播放器相对于本地用户的俯仰角。取值范围为 [-90,90],单位为度。其中:
- 0:(默认)0 度,表示水平面无旋转。
- -90: -90 度,表示水平面向下旋转 90 度。
- 90: 90 度,表示水平面向上旋转 90 度。
- speaker_distance
- 远端用户或媒体播放器相对于本地用户的距离。取值范围为 [1,50],单位为米。默认值为 1 米。
- speaker_orientation
- 远端用户或媒体播放器相对于本地用户的朝向。取值范围为 [0,180],单位为度。其中:
- 0:(默认)0 度,表示声源和听者朝向同一方向。
- 180: 180 度,表示声源和听者面对面。
- enable_blur
- 是否开启声音模糊处理:
true
: 开启模糊处理。false
: (默认)关闭模糊处理。
- enable_air_absorb
- 是否开启空气衰减,即模拟声音在空气中传播的音色衰减效果:在一定的传输距离下,高频声音衰减速度快、低频声音衰减速度慢。
true
: (默认)开启空气衰减。需确认 speaker_attenuation 的值不为0
,否则该设置不生效。false
: 关闭空气衰减。
- speaker_attenuation
- 远端用户或媒体播放器的声音衰减系数,取值范围为[0,1]。其中:
- 0:广播模式,即音量和音色均不随距离衰减,无论距离远近,本地用户听到的音量和音色都无变化。
- (0,0.5):弱衰减模式,即音量和音色(需同时开启 enable_air_absorb )在传播过程中仅发生微弱衰减,跟真实环境相比,声音可以传播得更远。
- 0.5:(默认)模拟音量在真实环境下的衰减,效果等同于不设置 speaker_attenuation 参数。
- (0.5,1]:强衰减模式,即音量和音色(需同时开启 enable_air_absorb )在传播过程中发生迅速衰减。
- enable_doppler
- 是否开启多普勒音效:当声源与接收声源者之间产生相对位移时,接收方听到的音调会发生变化。
true
: 开启多普勒音效。false
: (默认)关闭多普勒音效。
警告:- 该参数适用于声源高速运动的场景(例如:赛车游戏),在普通音视频互动场景(语聊、连麦、在线 KTV)中不建议开启。
- 开启该参数时,建议设定一个规律的周期(比如 30 ms),然后调用 updatePlayerPositionInfo、updateSelfPosition 和 updateRemotePosition 方法持续更新声源和接收方的相对距离。以下因素会导致多普勒效应达不到预期或者声音出现抖动:更新距离的周期过长,更新周期不规律,网络丢包或延迟导致距离信息丢失。
SpatialAudioZone
隔声区域的设置。
struct SpatialAudioZone { int zoneSetId; float position[3]; float forward[3]; float right[3]; float up[3]; float forwardLength; float rightLength; float upLength; float audioAttenuation; SpatialAudioZone() = default; };
- 自从
- v4.0.1
属性
- zoneSetId
- 隔声区域的 ID。
- position
- 隔声区域的空间中心点。该参数是长度为 3 的数组,三个值依次表示前、右、上的坐标值。
- forward
- 以 position 为起点,向前的单位向量。该参数是长度为 3 的数组,三个值依次表示前、右、上的坐标值。
- right
- 以 position 为起点,向右的单位向量。该参数是长度为 3 的数组,三个值依次表示前、右、上的坐标值。
- up
- 以 position 为起点,向上的单位向量。该参数是长度为 3 的数组,三个值依次表示前、右、上的坐标值。
- forwardLength
- 将整个隔声区域看做一个立方体,表示向前的边长,单位为游戏引擎的单位长度。
- rightLength
- 将整个隔声区域看做一个立方体,表示向右的边长,单位为游戏引擎的单位长度。
- upLength
- 将整个隔声区域看做一个立方体,表示向上的边长,单位为游戏引擎的单位长度。
- audioAttenuation
- 隔声区域以内的用户和外部用户互通时的声音衰减系数,取值范围为 [0,1]。其中:
- 0:广播模式,即音量和音色均不随距离衰减,无论距离远近,本地用户听到的音量和音色都无变化。
- (0,0.5):弱衰减模式,即音量和音色在传播过程中仅发生微弱衰减,跟真实环境相比,声音可以传播得更远。
- 0.5:模拟音量在真实环境下的衰减,效果等同于不设置 audioAttenuation 参数。
- (0.5,1]:强衰减模式 (默认值为 1) ,即音量和音色在传播过程中发生迅速衰减。
SrcInfo
媒体资源播放时的视频码率相关信息。
struct SrcInfo { int bitrateInKbps; const char* name; };
属性
- bitrateInKbps
- 媒体资源播放时的视频码率(Kbps)。
- name
- 媒体资源的名字。
ThumbImageBuffer
缩略图或图标的图像内容。在 ScreenCaptureSourceInfo 中设置。
struct ThumbImageBuffer { const char* buffer; unsigned int length; unsigned int width; unsigned int height; ThumbImageBuffer() : buffer(nullptr), length(0), width(0), height(0) {} };
属性
- buffer
- 缩略图或图标的 buffer。
- length
- 缩略图或图标的 buffer 长度,单位为字节。
- width
- 缩略图或图标的实际宽度(px)。
- height
- 缩略图或图标的实际高度(px)。
TranscodingUser
参与转码合流的每个主播的设置。
truct TranscodingUser { uid_t uid; int x; int y; int width; int height; int zOrder; double alpha; int audioChannel; TranscodingUser() : uid(0), x(0), y(0), width(0), height(0), zOrder(0), alpha(1.0), audioChannel(0) {} };
属性
- 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。
- 支持将 zOrder 设置为 0。
- alpha
-
主播视频画面的透明度。取值范围为 [0.0,1.0]。
- 0.0: 完全透明。
- 1.0:(默认)完全不透明。
- audioChannel
-
主播音频在输出音频中占用的声道。默认值为 0,取值范围为 [0,5]:
0
: (推荐)默认混音设置,最多支持双声道,与主播上行音频相关。1
: 主播音频在输出音频的 FL 声道。如果主播上行音频是多声道,Agora 服务器会先把多声道混音成单声道。2
: 主播音频在输出音频的 FC 声道。如果主播上行音频是多声道,Agora 服务器会先把多声道混音成单声道。3
: 主播音频在输出音频的 FR 声道。如果主播上行音频是多声道,Agora 服务器会先把多声道混音成单声道。4
: 主播音频在输出音频的 BL 声道。如果主播上行音频是多声道,Agora 服务器会先把多声道混音成单声道。5
: 主播音频在输出音频的 BR 声道。如果主播上行音频是多声道,Agora 服务器会先把多声道混音成单声道。0xFF
或取值大于5
: 该主播音频静音,Agora 服务器移除该主播的音频。
注意: 取值不为0
时,需要使用特殊的播放器。
TranscodingVideoStream
参与本地合图的视频流。
struct TranscodingVideoStream { agora::media::MEDIA_SOURCE_TYPE sourceType; uid_t remoteUserUid; const char* imageUrl; int x; int y; int width; int height; int zOrder; double alpha; bool mirror; TranscodingVideoStream() : sourceType(agora::media::PRIMARY_CAMERA_SOURCE), remoteUserUid(0), imageUrl(NULL), x(0), y(0), width(0), height(0), zOrder(0), alpha(1.0), mirror(false) {} };
属性
- sourceType
-
参与本地合图的视频源类型。详见 VIDEO_SOURCE_TYPE。
- remoteUserUid
-
远端用户 ID。注意: 请仅在参与本地合图的视频源类型为 VIDEO_SOURCE_REMOTE 时,使用该参数。
- imageUrl
-
图像的 URL。注意: 请仅在参与本地合图的视频源类型为
RTC_IMAGE
时,使用该参数。 - x
-
参与本地合图的视频的左上角相对于合图画布左上角(原点)的横向位移。
- y
-
参与本地合图的视频的左上角相对于合图画布左上角(原点)的纵向位移。
- width
-
参与本地合图的视频的宽度 (px)。
- height
-
参与本地合图的视频的高度 (px)。
- zOrder
- 参与本地合图的视频所属的图层的编号。取值范围为 [0,100]。
- 0:(默认值)图层在最下层。
- 100: 图层在最上层。
- alpha
-
参与本地合图的视频的透明度。取值范围为 [0.0,1.0]。 0.0 表示透明度为完全透明,1.0 表示透明度为完全不透明。
- mirror
- 是否对参与本地合图的的视频进行镜像:
true
: 镜像。false
: (默认值)不镜像。
注意: 该参数仅对视频源类型为CAMERA
的视频生效。
UplinkNetworkInfo
上行网络信息。
struct UplinkNetworkInfo {
int video_encoder_target_bitrate_bps;
UplinkNetworkInfo() : video_encoder_target_bitrate_bps(0) {}
bool operator==(const UplinkNetworkInfo& rhs) const {
return (video_encoder_target_bitrate_bps == rhs.video_encoder_target_bitrate_bps);
}
};
属性
- video_encoder_target_bitrate_bps
- 目标视频编码器的码率 (bps)。
UserAudioSpectrumInfo
远端用户的音频频谱信息。
struct UserAudioSpectrumInfo {
agora::rtc::uid_t uid;
struct AudioSpectrumData spectrumData;
UserAudioSpectrumInfo () : uid(0), spectrumData() {}
UserAudioSpectrumInfo(agora::rtc::uid_t _uid, const float *data, int length) :
uid(_uid) { spectrumData.audioSpectrumData = data; spectrumData.dataLength = length; }
};
属性
- uid
- 远端用户 ID。
- spectrumData
-
远端用户的音频频谱数据。详见 AudioSpectrumData。
UserInfo
用户的信息。
struct UserInfo { uid_t uid; char userAccount[MAX_USER_ACCOUNT_LENGTH]; UserInfo() : uid(0) { userAccount[0] = '\0'; } };
属性
- uid
- 用户 ID。
- userAccount
- 用户 Account。长度限制为MAX_USER_ACCOUNT_LENGTH_TYPE。
VideoCanvas
视频画布对象的属性。
struct VideoCanvas { view_t view; media::base::RENDER_MODE_TYPE renderMode; VIDEO_MIRROR_MODE_TYPE mirrorMode; uid_t uid; VideoCanvas() : view(NULL), renderMode(media::base::RENDER_MODE_HIDDEN), mirrorMode(VIDEO_MIRROR_MODE_AUTO), uid(0), sourceType(VIDEO_SOURCE_CAMERA_PRIMARY) {} VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, uid_t u) : view(v), renderMode(m), mirrorMode(mt), uid(u), sourceType(VIDEO_SOURCE_CAMERA_PRIMARY) {} VideoCanvas(view_t v, media::base::RENDER_MODE_TYPE m, VIDEO_MIRROR_MODE_TYPE mt, user_id_t) : view(v), renderMode(m), mirrorMode(mt), uid(0), sourceType(VIDEO_SOURCE_CAMERA_PRIMARY) {} };
属性
- view
- 视频显示窗口。
- renderMode
-
视频渲染模式,详见 RENDER_MODE_TYPE。
- mirrorMode
-
视图镜像模式,详见 VIDEO_MIRROR_MODE_TYPE。
注意:- 本地视图镜像模式:如果你使用前置摄像头,默认启动本地视图镜像模式;如果你使用后置摄像头,默认关闭本地视图镜像模式。
- 远端用户视图镜像模式:默认关闭远端用户的镜像模式。
- uid
- 用户 ID。
- sourceType
- 视频源的类型,详见 VIDEO_SOURCE_TYPE。
VideoDenoiserOptions
视频降噪选项。
struct VideoDenoiserOptions { enum VIDEO_DENOISER_MODE { VIDEO_DENOISER_AUTO = 0, VIDEO_DENOISER_MANUAL = 1, }; enum VIDEO_DENOISER_LEVEL { VIDEO_DENOISER_LEVEL_HIGH_QUALITY = 0, VIDEO_DENOISER_LEVEL_FAST = 1, VIDEO_DENOISER_LEVEL_STRENGTH = 2, }; VIDEO_DENOISER_MODE mode; VIDEO_DENOISER_LEVEL level; VideoDenoiserOptions(VIDEO_DENOISER_MODE denoiserMode, VIDEO_DENOISER_LEVEL denoiserLevel) : mode(denoiserMode), level(denoiserLevel) {} VideoDenoiserOptions() : mode(VIDEO_DENOISER_AUTO), level(VIDEO_DENOISER_LEVEL_HIGH_QUALITY) {} };
属性
- level
- 视频降噪等级。详见 VIDEO_DENOISER_LEVEL。
- mode
- 视频降噪模式。详见 VIDEO_DENOISER_MODE。
VIDEO_DENOISER_MODE
视频降噪模式。
枚举值
- VIDEO_DENOISER_AUTO
- 0:(默认)自动模式。SDK 会根据环境光亮度自动开启或关闭视频降噪功能。
- VIDEO_DENOISER_MANUAL
- 1:手动模式。用户需手动开启或关闭视频降噪功能。
VIDEO_DENOISER_LEVEL
视频降噪等级。
枚举值
- VIDEO_DENOISER_LEVEL_HIGH_QUALITY
- 0:(默认)优先画质的视频降噪。是在性能消耗和视频降噪效果中取平衡的等级。性能消耗适中,视频降噪速度适中,综合画质最优。
- VIDEO_DENOISER_LEVEL_FAST
- 1:优先性能的视频降噪。是在性能消耗和视频降噪效果中侧重于节省性能的等级。性能消耗较少,视频降噪速度较快。为避免处理后的视频有明显的拖影效果,Agora 推荐你在摄像头固定的情况下使用该设置。
- VIDEO_DENOISER_LEVEL_STRENGTH
- 2:强效的视频降噪。是在性能消耗和视频降噪效果中侧重于视频降噪效果的等级。性能消耗较多,视频降噪速度较慢,视频降噪效果较好。如果 VIDEO_DENOISER_LEVEL_HIGH_QUALITY 不能满足你的视频降噪需求,你可以使用该设置。
VideoDimensions
视频尺寸。
struct VideoDimensions { int width; int height; VideoDimensions() : width(640), height(480) {} VideoDimensions(int w, int h) : width(w), height(h) {} bool operator==(const VideoDimensions& rhs) const { return width == rhs.width && height == rhs.height; } };
属性
- width
-
视频宽度,单位为像素。
- height
- 视频高度,单位为像素。
VideoEncoderConfiguration
视频编码器的配置。
struct VideoEncoderConfiguration { VIDEO_CODEC_TYPE codecType; VideoDimensions dimensions; int frameRate; int bitrate; int minBitrate; ORIENTATION_MODE orientationMode; DEGRADATION_PREFERENCE degradationPreference; VIDEO_MIRROR_MODE_TYPE mirrorMode; VideoEncoderConfiguration(const VideoDimensions& d, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED) : codecType(VIDEO_CODEC_H264), dimensions(d), frameRate(f), bitrate(b), minBitrate(DEFAULT_MIN_BITRATE), orientationMode(m), degradationPreference(MAINTAIN_QUALITY), mirrorMode(mirror) {} VideoEncoderConfiguration(int width, int height, int f, int b, ORIENTATION_MODE m, VIDEO_MIRROR_MODE_TYPE mirror = VIDEO_MIRROR_MODE_DISABLED) : codecType(VIDEO_CODEC_H264), dimensions(width, height), frameRate(f), bitrate(b), minBitrate(DEFAULT_MIN_BITRATE), orientationMode(m), degradationPreference(MAINTAIN_QUALITY), mirrorMode(mirror) {} VideoEncoderConfiguration(const VideoEncoderConfiguration& config) : codecType(config.codecType), dimensions(config.dimensions), frameRate(config.frameRate), bitrate(config.bitrate), minBitrate(config.minBitrate), orientationMode(config.orientationMode), degradationPreference(config.degradationPreference), mirrorMode(config.mirrorMode) {} VideoEncoderConfiguration() : codecType(VIDEO_CODEC_H264), dimensions(FRAME_WIDTH_640, FRAME_HEIGHT_360), frameRate(FRAME_RATE_FPS_15), bitrate(STANDARD_BITRATE), minBitrate(DEFAULT_MIN_BITRATE), orientationMode(ORIENTATION_MODE_ADAPTIVE), degradationPreference(MAINTAIN_QUALITY), mirrorMode(VIDEO_MIRROR_MODE_DISABLED) {} };
属性
- dimensions
-
视频编码的分辨率(px),详见 VideoDimensions。该参数用于衡量编码质量,以长 × 宽表示,默认值为 640 × 360。用户可以自行设置分辨率。
- codecType
- 视频编码类型,详见 VIDEO_CODEC_TYPE。
- frameRate
- 视频编码的帧率(fps),默认值为 15。详见 FRAME_RATE。
- minFramerate
- 视频的最小帧率。默认值为 -1。
- bitrate
-
视频编码码率,单位为 Kbps。
- STANDARD_BITRATE: (推荐) 标准码率模式。该模式下,视频的码率是基准码率的两倍。
- COMPATIBLE_BITRATE: 适配码率模式。该模式下,视频码率与基准码率一致。直播时如果选择该模式,视频帧率可能会低于设置的值。
- minBitrate
-
最低编码码率,单位为 Kbps。
SDK 会根据网络状况自动调整视频编码码率。将参数设为高于默认值可强制视频编码器输出高质量图片,但在网络状况不佳情况下可能导致网络丢包并影响视频播放的流畅度造成卡顿。因此如非对画质有特殊需求,声网建议不要修改该参数的值。
注意: 该参数仅适用于直播场景。 - orientationMode
- 视频编码的方向模式,详见 ORIENTATION_MODE。
- degradationPreference
- 带宽受限时,视频编码降级偏好。详见 DEGRADATION_PREFERENCE 。
- mirrorMode
-
发送编码视频时是否开启镜像模式,只影响远端用户看到的视频画面。详见 VIDEO_MIRROR_MODE_TYPE。
注意: 默认关闭镜像模式。
VideoFrame
视频帧的属性设置。
struct VideoFrame { VideoFrame(): type(VIDEO_PIXEL_DEFAULT), width(0), height(0), yStride(0), uStride(0), vStride(0), yBuffer(NULL), uBuffer(NULL), vBuffer(NULL), rotation(0), renderTimeMs(0), avsync_type(0), metadata_buffer(NULL), metadata_size(0), sharedContext(0), textureId(0), alphaBuffer(NULL){} VIDEO_PIXEL_FORMAT type; int width; int height; int yStride; int uStride; int vStride; uint8_t* yBuffer; uint8_t* uBuffer; uint8_t* vBuffer; int rotation; int64_t renderTimeMs; int avsync_type; uint8_t* metadata_buffer; int metadata_size; void* sharedContext; int textureId; float matrix[16]; uint8_t* alphaBuffer; };
视频数据的格式为 YUV420。缓冲区给出的是指向指针的指针,该接口不能修改缓冲区的指针,只能修改缓冲区的内容。
属性
- type
- 像素格式。详见 VIDEO_PIXEL_FORMAT。
- width
- 视频像素宽度。
- height
- 视频像素高度。
- yStride
- 对 YUV 数据,表示 Y 缓冲区的行跨度;对 RGBA 数据,表示总的数据长度。
- uStride
- 对 YUV 数据,表示 U 缓冲区的行跨度;对 RGBA 数据,值为 0。
- vStride
- 对 YUV 数据,表示 V 缓冲区的行跨度;对 RGBA 数据,值为 0。
- yBuffer
- 对 YUV 数据,表示 Y 缓冲区的指针;对 RGBA 数据,表示数据缓冲区。
- uBuffer
- 对 YUV 数据,表示 U 缓冲区的指针;对 RGBA 数据,值为空。
- vBuffer
- 对 YUV 数据,表示 V 缓冲区的指针;对 RGBA 数据,值为空。
- rotation
- 在渲染视频前设置该帧的顺时针旋转角度,目前支持 0 度、90 度、180 度,和 270 度。
- renderTimeMs
- 视频帧被渲染时的 Unix 时间戳(毫秒)。该时间戳可用于指导渲染视频帧。该参数为必填。
- avsync_type
- 保留参数。
- metadata_buffer
- 该参数仅适用于 Texture 格式的视频数据。指 MetaData 的数据缓冲区,默认值为
NULL
。 - metadata_size
- 该参数仅适用于 Texture 格式的视频数据。指 MetaData 的大小,默认值为
0
。 - sharedContext
- 该参数仅适用于 Texture 格式的视频数据。EGL Context。
- textureId
- 该参数仅适用于 Texture 格式的视频数据。Texture ID。
- matrix
- 该参数仅适用于 Texture 格式的视频数据。为一个输入的 4x4 变换矩阵,典型值为一个单位矩阵。
- alphaBuffer
-
表示人像分割算法的输出数据,跟视频帧的尺寸一致。每个像素点的取值范围为 [0,255],其中 0 表示背景;255 代表前景(人像)。
在用户自定义视频渲染场景下,该参数可帮助实现将视频背景自渲染为各种效果,例如:透明、纯色、图片、视频等等。注: 该参数需要联系技术支持开通。
VideoFormat
视频帧格式。
struct VideoFormat { int width; int height; int fps; }
属性
- width
- 视频帧的宽度(px)。
- height
- 视频帧的高度(px)。
- fps
- 视频帧的帧率。
VirtualBackgroundSource
自定义的背景。
struct VirtualBackgroundSource { enum BACKGROUND_SOURCE_TYPE { BACKGROUND_COLOR = 1, BACKGROUND_IMG, BACKGROUND_BLUR, }; enum BACKGROUND_BLUR_DEGREE { BLUR_DEGREE_LOW = 1, BLUR_DEGREE_MEDIUM, BLUR_DEGREE_HIGH, }; BACKGROUND_SOURCE_TYPE background_source_type; unsigned int color; const char* source; BACKGROUND_BLUR_DEGREE blur_degree; VirtualBackgroundSource() : background_source_type(BACKGROUND_COLOR), color(0xffffff), source(NULL), blur_degree(BLUR_DEGREE_HIGH) {}
属性
- 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 时生效。
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
- (默认)自定义背景图的虚化程度为高。用户很难看清背景。
WatermarkOptions
水印图片的设置。
struct WatermarkOptions { bool visibleInPreview; Rectangle positionInLandscapeMode; Rectangle positionInPortraitMode; WatermarkRatio watermarkRatio; WATERMARK_FIT_MODE mode; WatermarkOptions() : visibleInPreview(false), positionInLandscapeMode(0, 0, 0, 0), positionInPortraitMode(0, 0, 0, 0), mode(FIT_MODE_COVER_POSITION) {} };
属性
- visibleInPreview
- 预留参数。
- positionInLandscapeMode
- 水印的适配模式为 FIT_MODE_COVER_POSITION 时,用于设置横屏模式下水印图片的区域。详见 Rectangle。
- positionInPortraitMode
- 水印的适配模式为 FIT_MODE_COVER_POSITION 时,用于设置竖屏模式下水印图片的区域。详见 Rectangle。
- watermarkRatio
- 水印的适配模式为 FIT_MODE_USE_IMAGE_RATIO 时,该参数可设置缩放模式下的水印坐标。详见 WatermarkRatio。
- mode
- 水印的适配模式。详见 WATERMARK_FIT_MODE。
WatermarkRatio
水印在屏幕中的位置和大小。
struct WatermarkRatio { float xRatio; float yRatio; float widthRatio; WatermarkRatio() : xRatio(0.0), yRatio(0.0), widthRatio(0.0) {} WatermarkRatio(float x, float y, float width) : xRatio(x), yRatio(y), widthRatio(width) {} };
- (xRatio, yRatio) 指水印左上角的坐标,决定水印左上角到屏幕左上角的距离。
- widthRatio 决定水印的宽度。
属性
- xRatio
- 水印左上角的 x 坐标。以屏幕左上角为原点,x 坐标为水印左上角相对于原点的横向位移。取值范围为 [0.0,1.0],默认值为 0。
- yRatio
- 水印左上角的 y 坐标。以屏幕左上角为原点,y 坐标为水印左上角相对于原点的纵向位移。取值范围为 [0.0,1.0],默认值为 0。
- widthRatio
- 水印的宽度。SDK 会根据该参数值计算出等比例的水印高度,确保放大或缩小后的水印图片不失真。取值范围为 [0.0,1.0],默认值为 0,代表不显示水印。