Class
IZegoAIVoiceChanger
Declared in ZegoExpressInterface.h
方法
getIndex
setEventHandler
public void setEventHandler(std::shared_ptr<IZegoAIVoiceChangerEventHandler> handler)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| handler | std::shared_ptr<IZegoAIVoiceChangerEventHandler> | AI 变声器的事件回调 |
详情
监听 AI 变声器的事件通知回调。
- 业务场景:开发者可以根据相关事件回调进行处理。
- 调用时机:创建 [ZegoAIVoiceChanger] 实例后。
- 支持版本:3.10.0 及以上。
- 使用限制:无。
- 注意事项:调用此函数将覆盖上一次调用此函数设置的回调。
initEngine
update
getSpeakerList
setSpeaker
public void setSpeaker(int speakerID)ZegoExpressInterface.h| 名称 | 类型 | 描述 |
|---|---|---|
| speakerID | int | 音色 ID。 |
IZegoAIVoiceChangerEventHandler
Declared in ZegoExpressEventHandler.h
方法
onInit
public void onInit(IZegoAIVoiceChanger* aiVoiceChanger, int errorCode)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| aiVoiceChanger | IZegoAIVoiceChanger* | 回调的 AI 变声器实例。 |
| errorCode | int | 错误码,详情请参考 常见错误码文档 https://doc-zh.zego.im/zh/4378.html |
详情
初始化 AI 变声引擎状态回调。
- 通知时机:调用 [init] 函数时会触发此回调。
- 支持版本:3.10.0 及以上。
- 使用限制:无。
onUpdateProgress
public void onUpdateProgress(IZegoAIVoiceChanger* aiVoiceChanger, double percent, int fileIndex, int fileCount)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| aiVoiceChanger | IZegoAIVoiceChanger* | 回调的 AI 变声器实例。 |
| percent | double | 当前文件更新进度。 |
| fileIndex | int | 当前更新文件索引。 |
| fileCount | int | 需要更新文件总数。 |
详情
更新 AI 变声引擎模型进度回调。
- 通知时机:调用 [update] 函数时会触发此回调。
- 支持版本:3.12.0 及以上。
- 使用限制:无。
onUpdate
public void onUpdate(IZegoAIVoiceChanger* aiVoiceChanger, int errorCode)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| aiVoiceChanger | IZegoAIVoiceChanger* | 回调的 AI 变声器实例。 |
| errorCode | int | 错误码,详情请参考 常见错误码文档 https://doc-zh.zego.im/zh/4378.html |
详情
更新 AI 变声引擎模型状态回调。
- 通知时机:调用 [update] 函数时会触发此回调。
- 支持版本:3.10.0 及以上。
- 使用限制:无。
onGetSpeakerList
public void onGetSpeakerList(IZegoAIVoiceChanger* aiVoiceChanger, int errorCode, const std::vector<ZegoAIVoiceChangerSpeakerInfo>& speakerList)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| aiVoiceChanger | IZegoAIVoiceChanger* | 回调的 AI 变声器实例。 |
| errorCode | int | 错误码,详情请参考 常见错误码文档 https://doc-zh.zego.im/zh/4378.html |
| speakerList | const std::vector<ZegoAIVoiceChangerSpeakerInfo>& | 可用音色列表。 |
详情
获取 AI 变声引擎可用音色列表回调。
- 通知时机:调用 [getSpeakerList] 函数时会触发此回调。
- 支持版本:3.10.0 及以上。
- 使用限制:无。
onEvent
public void onEvent(IZegoAIVoiceChanger* aiVoiceChanger, ZegoAIVoiceChangerEvent event)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| aiVoiceChanger | IZegoAIVoiceChanger* | 回调的 AI 变声器实例。 |
| event | ZegoAIVoiceChangerEvent | AI 变声事件。 |
详情
AI 变声事件回调。
- 通知时机:AI 变声失败时会触发此回调。
- 支持版本:3.12.0 及以上。
- 使用限制:无。
onSetSpeaker
public void onSetSpeaker(IZegoAIVoiceChanger* aiVoiceChanger, int errorCode)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| aiVoiceChanger | IZegoAIVoiceChanger* | 回调的 AI 变声器实例。 |
| errorCode | int | 错误码,详情请参考 常见错误码文档 https://doc-zh.zego.im/zh/4378.html |
详情
设置 AI 变声引擎音色状态回调。
- 通知时机:调用 [setSpeaker] 函数时会触发此回调。
- 支持版本:3.12.0 及以上。
- 使用限制:无。
IZegoApiCalledEventHandler
Declared in ZegoExpressEventHandler.h
方法
onApiCalledResult
public void onApiCalledResult(int errorCode, std::string funcName, std::string info)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| errorCode | int | 错误码,详情请参考 常见错误码文档 https://doc-zh.zego.im/zh/4378.html |
| funcName | std::string | 函数名。 |
| info | std::string | 错误的详细信息。 |
详情
通过 [setApiCalledCallback] 开启监听时,会通过本回调回调所有方法的执行的结果。
- 通知时机:在开发者调用 SDK 方法时,回调该方法的执行结果。
- 支持版本:2.3.0 及以上。
- 使用限制:无。
- 注意事项:建议在开发、测试阶段监听并处理本回调,在上线后关闭对本回调的监听。
IZegoAudioDataHandler
Declared in ZegoExpressEventHandler.h
方法
onCapturedAudioData
public void onCapturedAudioData(const unsigned char* data, unsigned int dataLength, ZegoAudioFrameParam param)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | const unsigned char* | PCM 格式的音频数据。 |
| dataLength | unsigned int | 数据的长度。 |
| param | ZegoAudioFrameParam | 音频帧参数。 |
详情
在非自定义采集模式下,SDK 会负责麦克风的声音采集工作,但是开发者可能也需要拿到 SDK 采集到的音源数据,通过这个回调可以获取。
- 通知时机:在调用 [setAudioDataHandler] 设置了监听本回调的前提下,调用 [startAudioDataObserver] 设置了掩码 0b01 即 1 << 0 之后, 且处于推流状态才会触发此回调。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:本回调为高频回调,请勿在本回调中做耗时操作。
onPlaybackAudioData
public void onPlaybackAudioData(const unsigned char* data, unsigned int dataLength, ZegoAudioFrameParam param)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | const unsigned char* | PCM 格式的音频数据。 |
| dataLength | unsigned int | 数据的长度。 |
| param | ZegoAudioFrameParam | 音频帧参数。 |
详情
此函数会回调全部要播放的音频混合后的数据。如果需开发者需要对全部要播放的音频混合后的数据进行处理,就可以用这个回调。
- 通知时机:在调用 [setAudioDataHandler] 设置了监听本回调的前提下,调用 [startAudioDataObserver] 设置了掩码 0b10 即 1 << 1 之后, 且处于 SDK 音视频引擎启动时(预览/推流/拉流)才会触发此回调。
- 支持版本:1.1.0 及以上。
- 使用限制:播放版权音乐时,该回调会被默认禁用,若有需要,请联系 ZEGO 技术支持。
- 注意事项:本回调为高频回调,请勿在本回调中做耗时操作,在非拉流状态的引擎启动状态且未使用媒体播放器播放媒体文件状态时,回调的音频数据是静音的音频数据。
onMixedAudioData
public void onMixedAudioData(const unsigned char* data, unsigned int dataLength, ZegoAudioFrameParam param)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | const unsigned char* | PCM 格式的音频数据。 |
| dataLength | unsigned int | 数据的长度。 |
| param | ZegoAudioFrameParam | 音频帧参数。 |
详情
SDK 播放的音频数据与本地麦克风采集到的数据在送到扬声器之前进行混合,并通过此函数回调出来。
- 通知时机:在调用 [setAudioDataHandler] 设置了监听本回调的前提下,调用 [startAudioDataObserver] 设置了掩码 0x04 之后, 且处于推流或拉流状态才会触发此回调。
- 支持版本:1.1.0 及以上。
- 使用限制:播放版权音乐时,该回调会被默认禁用,若有需要,请联系 ZEGO 技术支持。
- 注意事项:本回调为高频回调,请勿在本回调中做耗时操作。
onPlayerAudioData
public void onPlayerAudioData(const unsigned char* data, unsigned int dataLength, ZegoAudioFrameParam param, std::string streamID)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | const unsigned char* | PCM 格式的音频数据。 |
| dataLength | unsigned int | 数据的长度。 |
| param | ZegoAudioFrameParam | 音频帧参数。 |
| streamID | std::string | 对应的流 ID。 |
详情
此函数会回调每条拉流单独对应的数据,不同于[onPlaybackAudioData],后者是所有拉流的混合数据。如果开发者需要对某条拉流的数据单独进行处理,就可以用这个回调。
- 通知时机:在调用 [setAudioDataHandler] 设置了监听本回调的前提下,调用 [startAudioDataObserver] 设置了掩码 0x08 即 1 << 3 之后, 且处于 SDK 音视频引擎启动拉流时才会触发此回调。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:本回调为高频回调,请勿在本回调中做耗时操作。
IZegoAudioEffectPlayer
Declared in ZegoExpressInterface.h
方法
setEventHandler
public void setEventHandler(std::shared_ptr<IZegoAudioEffectPlayerEventHandler> handler)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| handler | std::shared_ptr<IZegoAudioEffectPlayerEventHandler> | 音效播放器回调。 |
详情
设置音效播放器回调。
- 调用时机:在 [createAudioEffectPlayer] 之后可调用。
- 相关接口:[createAudioEffectPlayer]。
- 支持版本:1.16.0 及以上。
- 使用限制:无。
start
public void start(unsigned int audioEffectID, std::string path, ZegoAudioEffectPlayConfig config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| audioEffectID | unsigned int | 音效资源的 ID。SDK 内部使用 audioEffectID 进行音效的播放控制,SDK 不强制用户以固定形式的值传入该参数,最好保证每个音效可以有唯一的 ID,推荐的方式有静态自增 ID 和传入音效文件路径的 hash 两种方式。 |
| path | std::string | 音效资源的路径。<br>取值范围:目前仅支持播放本地文件,不支持 "assets://"、"ipod-library://" 和网络资源等。如果之前使用 [loadResource] 预先加载了音效,可传入 null 或 ""。 |
| config | ZegoAudioEffectPlayConfig | 音效播放配置。<br>默认值:传空则仅播放一次,且不会混音入推流中。 |
详情
开始播放音效,默认仅播放一次,且不会将音效混入推流中,如需修改请配置 [config] 参数。
- 业务场景:当需要播放简短的声音效果,比如鼓掌,欢呼声等时,可以使用该接口实现,进一步通过 [config] 参数配置播放次数,将音效混入推流中。
- 调用时机:在 [createAudioEffectPlayer] 之后可调用。
- 支持版本:1.16.0 及以上。
- 使用限制:无。
stop
public void stop(unsigned int audioEffectID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| audioEffectID | unsigned int | 音效资源的 ID。 |
详情
停止播放指定的音效 [audioEffectID]。
- 调用时机:指定的 [audioEffectID] 已经 [start] 。
- 支持版本:1.16.0 及以上。
- 使用限制:无。
pause
public void pause(unsigned int audioEffectID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| audioEffectID | unsigned int | 音效资源的 ID。 |
详情
暂停播放指定的音效 [audioEffectID]。
- 调用时机:指定的 [audioEffectID] 已经 [start]。
- 支持版本:1.16.0 及以上。
- 使用限制:无。
resume
public void resume(unsigned int audioEffectID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| audioEffectID | unsigned int | 音效资源的 ID。 |
详情
恢复播放指定的音效 [audioEffectID]。
- 调用时机:指定的 [audioEffectID] 处于 [pause] 状态。
- 支持版本:1.16.0 及以上。
- 使用限制:无。
stopAll
public void stopAll()ZegoExpressInterface.h停止播放所有音效。
- 调用时机:正在播放音效。
- 支持版本:1.16.0 及以上。
- 使用限制:无。
pauseAll
public void pauseAll()ZegoExpressInterface.h暂停播放所有音效。
- 调用时机:在 [createAudioEffectPlayer] 之后可调用。
- 支持版本:1.16.0 及以上。
- 使用限制:无。
resumeAll
public void resumeAll()ZegoExpressInterface.h恢复播放所有音效。
- 调用时机:在 [pauseAll] 之后可调用。
- 支持版本:1.16.0 及以上。
- 使用限制:无。
seekTo
public void seekTo(unsigned int audioEffectID, unsigned long long millisecond, ZegoAudioEffectPlayerSeekToCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| audioEffectID | unsigned int | 音效资源的 ID。 |
| millisecond | unsigned long long | 指定的播放进度的时间点。 |
| callback | ZegoAudioEffectPlayerSeekToCallback | 指定播放进度结果。 |
详情
设置指定音效的播放进度,单位为毫秒。
- 调用时机:指定的 [audioEffectID] 已经 [start],且还没有播完。
- 支持版本:1.16.0 及以上。
- 使用限制:无。
setVolume
public void setVolume(unsigned int audioEffectID, int volume)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| audioEffectID | unsigned int | 音效资源的 ID。 |
| volume | int | 音量值。<br>取值范围:范围为 0 ~ 200。 <br>默认值:默认为 100。 |
详情
设置指定音效的播放音量,会同时设置本地播放音量和推流音量。
- 调用时机:指定的 [audioEffectID] 已经 [start]。
- 支持版本:1.16.0 及以上。
- 使用限制:无。
setPlayVolume
public void setPlayVolume(unsigned int audioEffectID, int volume)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| audioEffectID | unsigned int | 音效资源的 ID。 |
| volume | int | 音量值。<br>取值范围:范围为 0 ~ 200。 <br>默认值:默认为 100。 |
详情
设置指定音效的本地播放音量。
- 调用时机:指定的 [audioEffectID] 已经 [start]。
- 支持版本:3.11.0 及以上。
- 使用限制:无。
setPublishVolume
public void setPublishVolume(unsigned int audioEffectID, int volume)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| audioEffectID | unsigned int | 音效资源的 ID。 |
| volume | int | 音量值。<br>取值范围:范围为 0 ~ 200。 <br>默认值:默认为 100。 |
详情
设置指定音效的推流音量。
- 调用时机:指定的 [audioEffectID] 已经 [start]。
- 支持版本:3.11.0 及以上。
- 使用限制:无。
setVolumeAll
public void setVolumeAll(int volume)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| volume | int | 音量值。<br>取值范围:范围为 0 ~ 200。 <br>默认值:默认为 100。 |
详情
设置所有音效的播放音量,会同时设置本地播放音量和推流音量。
- 调用时机:在 [createAudioEffectPlayer] 之后可调用。
- 支持版本:1.16.0 及以上。
- 使用限制:无。
setPlayVolumeAll
public void setPlayVolumeAll(int volume)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| volume | int | 音量值。<br>取值范围:范围为 0 ~ 200。 <br>默认值:默认为 100。 |
详情
设置所有音效的本地播放音量。
- 调用时机:在 [createAudioEffectPlayer] 之后可调用。
- 支持版本:3.11.0 及以上。
- 使用限制:无。
setPublishVolumeAll
public void setPublishVolumeAll(int volume)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| volume | int | 音量值。<br>取值范围:范围为 0 ~ 200。 <br>默认值:默认为 100。 |
详情
设置所有音效的推流音量。
- 调用时机:在 [createAudioEffectPlayer] 之后可调用。
- 支持版本:3.11.0 及以上。
- 使用限制:无。
setPlaySpeed
public void setPlaySpeed(unsigned int audioEffectID, float speed)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| audioEffectID | unsigned int | 音效资源的 ID。 |
| speed | float | 播放的倍速。<br>取值范围:范围为 0.5 ~ 2.0。 <br>默认值:默认为 1.0。 |
详情
设置指定音效的播放速度,会同时设置本地播放速度和推流速度(不支持单独设置)。
- 调用时机:指定的 [audioEffectID] 已经 [start]。
- 支持版本:2.18.0 及以上。
- 使用限制:无。
getTotalDuration
public unsigned long long getTotalDuration(unsigned int audioEffectID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| audioEffectID | unsigned int | 音效资源的 ID。 |
详情
获取指定音效资源的总长度,单位为毫秒。
- 调用时机:必须在加载资源完成后才能调用,否则返回值为 0。
- 相关接口:[start],[loadResource]。
- 支持版本:1.16.0 及以上。
- 使用限制:在 [createAudioEffectPlayer] 之后可调用。
返回值
单位为毫秒。
getCurrentProgress
public unsigned long long getCurrentProgress(unsigned int audioEffectID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| audioEffectID | unsigned int | 音效资源的 ID。 |
详情
获取指定音效的当前播放进度。单位为毫秒。
- 调用时机:必须在加载资源完成后才能调用,否则返回值为 0。
- 相关接口:[start],[loadResource]。
- 支持版本:1.16.0 及以上。
- 使用限制:无。
loadResource
public void loadResource(unsigned int audioEffectID, std::string path, ZegoAudioEffectPlayerLoadResourceCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| audioEffectID | unsigned int | 音效资源的 ID。 |
| path | std::string | 音效资源路径,不能传入 nullptr 或 ""。<br>取值范围:目前仅支持播放本地文件,不支持 "assets://"、"ipod-library://" 和网络资源等。 |
| callback | ZegoAudioEffectPlayerLoadResourceCallback | 加载音效资源结果回调。 |
详情
加载音效资源。
- 业务场景:在频繁播放相同音效场景中,SDK 为了优化重复读文件并解码的性能,提供了预加载音效文件到内存中的功能。
- 调用时机:在 [createAudioEffectPlayer] 之后可调用。
- 支持版本:1.16.0 及以上。
- 使用限制:预加载支持最多同时加载 15 个音效文件,并且音效文件时长不能超过 30s,否则加载会报错。
unloadResource
public void unloadResource(unsigned int audioEffectID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| audioEffectID | unsigned int | 音效资源的 ID。 |
详情
卸载指定音效的音效资源。
- 调用时机:在音效使用完毕之后,可以通过此函数释放相关资源;否则 SDK 将在 AudioEffectPlayer 实例销毁时释放加载的资源。
- 相关接口:[loadResource]。
- 支持版本:1.16.0 及以上。
- 使用限制:无。
updatePosition
public void updatePosition(unsigned int audioEffectID, const float[3] position)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| audioEffectID | unsigned int | 音效资源的 ID。 |
| position | const float[3] | 自身在世界坐标系中的坐标,参数是长度为 3 的 float 数组。 |
详情
更新音效播放器(音频源)位置。。
- 业务场景:音效播放器也需要有 3D 空间音效。
- 调用时机:监听[onAudioEffectPlayStateUpdate]回调,请在播放状态为ZegoAudioEffectPlayState.Playing之后ZegoAudioEffectPlayState.NoPlay/PlayEnded之前调用该接口。
- 支持版本:3.6.0 及以上。
- 使用限制:此接口需要与 RangeAudio/RangeScene 模块配合使用,RangeAudio/RangeScene 模块开启 3D 音效后,此接口才能调用成功。
getIndex
public int getIndex()ZegoExpressInterface.h获取音效播放器索引。
- 调用时机:在 [createAudioEffectPlayer] 之后可调用。
- 支持版本:1.16.0 及以上。
- 使用限制:无。
音效播放器索引。
IZegoAudioEffectPlayerEventHandler
Declared in ZegoExpressEventHandler.h
方法
onAudioEffectPlayStateUpdate
public void onAudioEffectPlayStateUpdate(IZegoAudioEffectPlayer* audioEffectPlayer, unsigned int audioEffectID, ZegoAudioEffectPlayState state, int errorCode)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| audioEffectPlayer | IZegoAudioEffectPlayer* | 触发此次回调的音效播放器实例。 |
| audioEffectID | unsigned int | 触发此次回调的音效资源的 ID。 |
| state | ZegoAudioEffectPlayState | 音效的播放状态。 |
| errorCode | int | 错误码,详情请参考 常见错误码文档 https://doc-zh.zego.im/zh/4378.html |
详情
当音效播放器的某条音效的播放状态改变时会触发此回调。
- 通知时机:当音效的播放状态变化时会触发这个回调。
- 支持版本:1.16.0 及以上。
- 使用限制:无。
IZegoAudioMixingHandler
Declared in ZegoExpressEventHandler.h
方法
onAudioMixingCopyData
public void onAudioMixingCopyData(ZegoAudioMixingData* data)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | ZegoAudioMixingData* | 混音数据。注意此参数为入参,需要开发者修改其中的值。 |
详情
往 SDK 中拷贝混音 PCM 数据,用于将开发者提供的音频数据混到推流的音频数据中。 需要和 [enableAudioMixing] 结合使用。
- 业务场景:当开发者有需要往推流的音频中混入自己的歌曲、音效等音频数据时,可以使用此功能。
- 通知时机:需要在 [createEngine] 之后,调用 [enableAudioMixing] 开启混音功能,且通过 [setAudioMixingHandler] 设置了混音回调处理器才会触发本回调函数。
- 支持版本:1.9.0 及以上。
- 使用限制:支持 16k 32k 44.1k 48k 的采样率、单声道或双声道、16位深的 PCM 音频数据。
- 注意事项:本回调为高频回调,为保证混音质量,请勿在本回调中做耗时操作。
返回值
开发者提供的期望混入推流中的音频数据。
IZegoCopyrightedMusic
Declared in ZegoExpressInterface.h
方法
setEventHandler
public void setEventHandler(std::shared_ptr<IZegoCopyrightedMusicEventHandler> handler)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| handler | std::shared_ptr<IZegoCopyrightedMusicEventHandler> | 用于接收版权音乐回调的对象。 |
详情
设置版权音乐模块回调的接口,可接收歌曲播放状态相关回调通知。
- 调用时机:在创建版权音乐 [createCopyrightedMusic] 之后。
- 支持版本:2.13.0 及以上。
initCopyrightedMusic
public void initCopyrightedMusic(ZegoCopyrightedMusicConfig config, ZegoCopyrightedMusicInitCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoCopyrightedMusicConfig | 版权音乐配置。 |
| callback | ZegoCopyrightedMusicInitCallback | 初始化结果 |
详情
初始化版权音乐,以便后续使用版权音乐的功能。
- 调用时机:在创建版权音乐 [createCopyrightedMusic] 和登录房间 [loginRoom] 之后。
- 支持版本:2.13.0 及以上。
- 注意事项:1. 必须传入真实用户信息,否则无法获取歌曲资源进行播放。2. 初始化版权音乐时设置的用户 ID 和用户名需要和登录房间时设置的用户 ID 和用户名一致。
getCacheSize
public unsigned long long getCacheSize()ZegoExpressInterface.h在使用本模块时,可能产生一些缓存文件,可以通过本接口获取缓存文件的大小。
- 业务场景:用于展示 App 的缓存大小。
- 调用时机:在创建版权音乐 [createCopyrightedMusic] 之后。
- 支持版本:2.13.0 及以上。
缓存文件大小,单位 byte。
clearCache
public void clearCache()ZegoExpressInterface.h在使用本模块时,可能产生一些缓存文件,可以通过本接口进行清除。
- 业务场景:用于清除 App 的缓存。
- 调用时机:在创建版权音乐 [createCopyrightedMusic] 之后。
- 支持版本:2.13.0 及以上。
sendExtendedRequest
public void sendExtendedRequest(std::string command, std::string params, ZegoCopyrightedMusicSendExtendedRequestCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| command | std::string | 请求命令,具体支持的命令请参考 https://doc-zh.zego.im/article/15077 |
| params | std::string | 请求参数,每个请求命令具备对应的请求参数,请参考 https://doc-zh.zego.im/article/15077 |
| callback | ZegoCopyrightedMusicSendExtendedRequestCallback | 发送扩展功能请求结果 |
详情
发送扩展功能请求,访问版权歌曲库获取相关歌单、榜单歌曲信息。
- 业务场景:用于获取歌曲列表。
- 调用时机:在初始化版权音乐 [initCopyrightedMusic] 成功之后。
- 支持版本:2.13.0 及以上。
getLrcLyric
public void getLrcLyric(std::string songID, ZegoCopyrightedMusicVendorID vendorID, ZegoCopyrightedMusicGetLrcLyricCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| songID | std::string | 歌曲或伴奏的 ID,一首歌的歌曲和伴奏共用同一个 ID。 |
| vendorID | ZegoCopyrightedMusicVendorID | 版权方。 |
| callback | ZegoCopyrightedMusicGetLrcLyricCallback | 获取 lrc 格式歌词结果 |
详情
获取 lrc 格式歌词,支持逐行解析歌词。
- 业务场景:用于逐行显示歌词。
- 调用时机:在初始化版权音乐 [initCopyrightedMusic] 成功之后。
- 支持版本:3.2.1 及以上。
getLrcLyric
public void getLrcLyric(ZegoCopyrightedMusicGetLyricConfig config, ZegoCopyrightedMusicGetLrcLyricCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoCopyrightedMusicGetLyricConfig | 获取歌词的配置。 |
| callback | ZegoCopyrightedMusicGetLrcLyricCallback | 获取 lrc 格式歌词结果 |
详情
获取 lrc 格式歌词,支持逐行解析歌词。
- 业务场景:用于逐行显示歌词。
- 调用时机:在初始化版权音乐 [initCopyrightedMusic] 成功之后。
- 支持版本:3.12.0 及以上。
getKrcLyricByToken
public void getKrcLyricByToken(std::string krcToken, ZegoCopyrightedMusicGetKrcLyricByTokenCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| krcToken | std::string | 通过调用 [requestResource] 点伴奏或点高潮片段、或调用 [getSharedResource] 接口获取分享资源时获取的 krcToken。详情请参考 https://doc-zh.zego.im/article/15079#2_2 |
| callback | ZegoCopyrightedMusicGetKrcLyricByTokenCallback | 获取逐字格式歌词结果。 |
详情
获取逐字歌词,支持逐字解析歌词。
- 业务场景:用于逐字显示歌词。
- 调用时机:在初始化版权音乐 [initCopyrightedMusic] 成功之后。
- 支持版本:2.13.0 及以上。
requestResource
public void requestResource(ZegoCopyrightedMusicRequestConfig config, ZegoCopyrightedMusicResourceType type, ZegoCopyrightedMusicRequestResourceCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoCopyrightedMusicRequestConfig | 获取音乐资源的配置。 |
| type | ZegoCopyrightedMusicResourceType | 版权音乐资源类型。 |
| callback | ZegoCopyrightedMusicRequestResourceCallback | 获取音乐资源结果回调。 |
详情
可以获取到歌曲的基本信息(时长、歌名、歌手等),以及最重要的可以用于本地播放的资源 id,还有相关的一些鉴权信息。
- 业务场景:获取版权歌曲,用于本地播放与分享。
- 相关接口:房间内某个用户调用此接口获取某音乐资源成功后,房间内其他用户可以调用 [getSharedResource] 接口免费获取一次该音乐资源。
- 调用时机:在初始化版权音乐 [initCopyrightedMusic] 之后。
- 支持版本:3.0.2 及以上。
- 注意事项: 1. 每个资源有唯一的资源 ID。 2. 每调用一次此接口,都会触发一次计费,详情请咨询 ZEGO 商务人员。 3. 调用本接口获取到的资源,具有时效性,有效时长为 “SDK 初始化生命周期结束” 与 “24 小时资源有效期” 两者之间的最小值。
requestResource
public void requestResource(ZegoCopyrightedMusicRequestConfigV2 config, ZegoCopyrightedMusicRequestResourceCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoCopyrightedMusicRequestConfigV2 | 获取音乐资源的配置。 |
| callback | ZegoCopyrightedMusicRequestResourceCallback | 获取音乐资源结果回调。 |
详情
可以获取到歌曲的基本信息(时长、歌名、歌手等),以及最重要的可以用于本地播放的资源 id,还有相关的一些鉴权信息。
- 业务场景:获取版权歌曲,用于本地播放与分享。
- 相关接口:房间内某个用户调用此接口获取某音乐资源成功后,房间内其他用户可以调用 [getSharedResource] 接口免费获取一次该音乐资源。
- 调用时机:在初始化版权音乐 [initCopyrightedMusic] 之后。
- 支持版本:3.12.0 及以上。
- 注意事项: 1. 每个资源有唯一的资源 ID。 2. 每调用一次此接口,都会触发一次计费,详情请咨询 ZEGO 商务人员。 3. 调用本接口获取到的资源,具有时效性,有效时长为 “SDK 初始化生命周期结束” 与 “24 小时资源有效期” 两者之间的最小值。
getSharedResource
public void getSharedResource(ZegoCopyrightedMusicGetSharedConfig config, ZegoCopyrightedMusicResourceType type, ZegoCopyrightedMusicGetSharedResourceCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoCopyrightedMusicGetSharedConfig | 获取分享歌曲资源的配置。 |
| type | ZegoCopyrightedMusicResourceType | 版权音乐资源类型。 |
| callback | ZegoCopyrightedMusicGetSharedResourceCallback | 获取分享音乐资源结果回调。 |
详情
可以获取到歌曲的基本信息(时长、歌名、歌手等),以及最重要的可以用于本地播放的资源 id,还有相关的一些鉴权信息。
- 业务场景:获取版权歌曲,用于本地播放。
- 相关接口:房间内某个用户调用 [requestResource] 接口获取某音乐资源成功后,房间内其他用户可以调用此接口免费获取一次该音乐资源。
- 调用时机:在初始化版权音乐 [initCopyrightedMusic] 之后。
- 支持版本:3.0.2 及以上。
- 注意事项:每个资源有唯一的资源 ID。调用本接口获取到的资源,具有时效性,有效时长为 “SDK 初始化生命周期结束” 与 “24 小时资源有效期” 两者之间的最小值。
getSharedResource
public void getSharedResource(ZegoCopyrightedMusicGetSharedConfigV2 config, ZegoCopyrightedMusicGetSharedResourceCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoCopyrightedMusicGetSharedConfigV2 | 获取分享歌曲资源的配置。 |
| callback | ZegoCopyrightedMusicGetSharedResourceCallback | 获取分享音乐资源结果回调。 |
详情
可以获取到歌曲的基本信息(时长、歌名、歌手等),以及最重要的可以用于本地播放的资源 id,还有相关的一些鉴权信息。
- 业务场景:获取版权歌曲,用于本地播放。
- 相关接口:房间内某个用户调用 [requestResource] 接口获取某音乐资源成功后,房间内其他用户可以调用此接口免费获取一次该音乐资源。
- 调用时机:在初始化版权音乐 [initCopyrightedMusic] 之后。
- 支持版本:3.12.0 及以上。
- 注意事项:每个资源有唯一的资源 ID。调用本接口获取到的资源,具有时效性,有效时长为 “SDK 初始化生命周期结束” 与 “24 小时资源有效期” 两者之间的最小值。
download
public void download(std::string resourceID, ZegoCopyrightedMusicDownloadCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| resourceID | std::string | 歌曲或伴奏对应的资源 ID。 |
| callback | ZegoCopyrightedMusicDownloadCallback | 下载载歌曲或伴奏结果。 |
详情
下载音乐资源,下载成功后才能进行播放。
- 业务场景:获取音乐资源授权后,利用本接口下载对应的资源。
- 调用时机:在初始化版权音乐 [initCopyrightedMusic] 成功之后。
- 支持版本:2.13.0 及以上。
- 注意事项:下载版权音乐资源受网络影响。
cancelDownload
public void cancelDownload(std::string resourceID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| resourceID | std::string | 歌曲或伴奏对应的资源 ID。 |
详情
取消下载音乐资源。
- 业务场景:当开始下载音乐资源后,利用本接口取消对应的下载任务。
- 调用时机:在开始下载 [download] 之后。
- 支持版本:3.11.0 及以上。
- 注意事项:当传入有效的 resourceID 时, 只会取消未完成的下载任务, 当传入空字符串时, 取消所有未完成的下载任务。
queryCache
public bool queryCache(ZegoCopyrightedMusicQueryCacheConfig config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoCopyrightedMusicQueryCacheConfig | 查询资源缓存的配置。 |
详情
查询资源是否有缓存
- 业务场景:可以用于在查询歌曲资源是否有缓存。
- 调用时机:在初始化版权音乐 [initCopyrightedMusic] 成功之后。
- 支持版本:3.9.0 及以上。
queryCache
public bool queryCache(ZegoCopyrightedMusicQueryCacheConfigV2 config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoCopyrightedMusicQueryCacheConfigV2 | 查询资源缓存的配置。 |
详情
查询资源是否有缓存
- 业务场景:可以用于在查询歌曲资源是否有缓存。
- 调用时机:在初始化版权音乐 [initCopyrightedMusic] 成功之后。
- 支持版本:3.12.0 及以上。
getDuration
public unsigned long long getDuration(std::string resourceID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| resourceID | std::string | 歌曲或伴奏对应的资源 ID。 |
详情
获取歌曲或伴奏文件的播放时长。
- 业务场景:可以用于在视图上显示歌曲或伴奏的播放时长信息。
- 调用时机:在初始化版权音乐 [initCopyrightedMusic] 成功之后。
- 支持版本:2.13.0 及以上。
setScoringLevel
public void setScoringLevel(int level)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| level | int | 打分难度级别。level 取值范围 0 ~ 4。打分难度由 0 到 4 逐级递减。 |
详情
用户可以通过该接口设置打分难度级别。
- 调用时机:调用 [initCopyrightedMusic] 初始化版权音乐成功后,调用 [startScore] 开始打分前。
- 默认值:未调用该函数时,打分难度级别默认是 4。
- 支持版本:2.22.0 及以上。
- 注意事项:该方法不支持动态设置,调用该方法成功后,下一次调用 [startScore] 生效。
startScore
public int startScore(std::string resourceID, int pitchValueInterval)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| resourceID | std::string | 伴奏或高潮片段对应的资源 ID。 |
| pitchValueInterval | int | 实时音高线回调的时间间隔, 单位毫秒,默认 50 毫秒。 |
详情
开始评分后,将会根据设置的回调时间间隔,收到评分结果 [OnCurrentPitchValueUpdate] 回调。
- 业务场景:可以用于在视图上显示唱歌评分。
- 调用时机:在获取到逐字歌词,并播放版权音乐的伴奏资源之后可调用。
- 支持版本:2.15.0 及以上。
- 注意事项:目前仅支持在推流开始 [startPublishingStream] 后,才能开始打分。
pauseScore
public int pauseScore(std::string resourceID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| resourceID | std::string | 伴奏或高潮片段对应的资源 ID。 |
详情
暂停正在进行的评分,将停止 [OnCurrentPitchValueUpdate] 回调。
- 业务场景:正在评分时可调用此接口暂停评分功能。
- 调用时机:正在评分时可调用。
- 支持版本:2.15.0 及以上。
resumeScore
public int resumeScore(std::string resourceID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| resourceID | std::string | 伴奏或高潮片段对应的资源 ID。 |
详情
恢复当前暂停的评分。
- 业务场景:当前有暂停的评分时可调用此接口恢复评分功能。
- 调用时机:当前有暂停的评分时可调用。
- 支持版本:2.15.0 及以上。
stopScore
public int stopScore(std::string resourceID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| resourceID | std::string | 伴奏或高潮片段对应的资源 ID。 |
详情
结束当前评分,将停止 [OnCurrentPitchValueUpdate] 回调,但依然可以正常获取平均分或总分。
- 业务场景:正在评分时可调用此接口结束评分。
- 调用时机:正在评分时可调用。
- 支持版本:2.15.0 及以上。
resetScore
public int resetScore(std::string resourceID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| resourceID | std::string | 伴奏或高潮片段对应的资源 ID。 |
详情
重置已经进行过的评分,将停止 [OnCurrentPitchValueUpdate] 回调,获取平均分或总分将为 0。
- 业务场景:常用于重唱同一首歌的场景。
- 调用时机:已经进行过评分后可以调用。
- 支持版本:2.15.0 及以上。
getPreviousScore
public int getPreviousScore(std::string resourceID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| resourceID | std::string | 伴奏或高潮片段对应的资源 ID。 |
详情
返回值是获取上一句的评分。
- 业务场景:可以用于在视图上显示每一句的评分。
- 调用时机:在播放版权伴奏或高潮片段,并开始打分后可调用。
- 支持版本:2.15.0 及以上。
getAverageScore
public int getAverageScore(std::string resourceID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| resourceID | std::string | 伴奏或高潮片段对应的资源 ID。 |
详情
获取平均评分。
- 业务场景:可以用于在视图上显示平均评分。
- 调用时机:在播放版权伴奏或高潮片段,并开始打分后可调用。
- 支持版本:2.15.0 及以上。
getTotalScore
public int getTotalScore(std::string resourceID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| resourceID | std::string | 伴奏或高潮片段对应的资源 ID。 |
详情
获取总评分。
- 业务场景:可以用于在视图上显示总评分。
- 调用时机:在播放版权伴奏或高潮片段,并开始打分后可调用。
- 支持版本:2.15.0 及以上。
getFullScore
public int getFullScore(std::string resourceID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| resourceID | std::string | 伴奏或高潮片段对应的资源 ID。 |
详情
获取满分。
- 业务场景:可以用于在视图上显示满分。
- 调用时机:在播放版权伴奏或高潮片段,并开始打分后可调用。
- 支持版本:3.0.2 及以上。
getStandardPitch
public void getStandardPitch(std::string resourceID, ZegoCopyrightedMusicGetStandardPitchCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| resourceID | std::string | 伴奏或高潮片段对应的资源 ID。 |
| callback | ZegoCopyrightedMusicGetStandardPitchCallback | 获取标准音高数据结果。 |
详情
获取标准音高数据。
- 业务场景:可以用于在视图上显示标准音高线。
- 支持版本:2.15.0 及以上。
- 注意事项:只有伴奏或高潮片段资源才有音高线。
getCurrentPitch
public int getCurrentPitch(std::string resourceID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| resourceID | std::string | 歌曲或伴奏对应的资源 ID。 |
详情
获取实时音高数据。
- 业务场景:可以用于在视图上显示实时音高线。
- 调用时机:在播放版权伴奏或高潮片段,并开始打分后可调用。
- 支持版本:2.15.0 及以上。
requestSong
public void requestSong(ZegoCopyrightedMusicRequestConfig config, ZegoCopyrightedMusicRequestSongCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoCopyrightedMusicRequestConfig | 请求配置。 |
| callback | ZegoCopyrightedMusicRequestSongCallback | 点歌结果 |
详情
点歌不仅可以获取到歌曲的基本信息(时长、歌名、歌手等),还可以用于本地播放的资源 ID 或用于分享给他人播放的 share_token,还有相关的一些鉴权信息。支持按次点歌方式。
- 业务场景:获取版权歌曲,用于本地播放与分享。
- 调用时机:在初始化版权音乐 [initCopyrightedMusic] 成功之后。
- 支持版本:2.13.0 及以上。
- 注意事项:该接口会触发计费。一首歌曲可能存在普通、高清、无损三种音质,每种音质都有不同的资源文件,每个资源文件有唯一的资源 ID。
requestAccompaniment
public void requestAccompaniment(ZegoCopyrightedMusicRequestConfig config, ZegoCopyrightedMusicRequestAccompanimentCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoCopyrightedMusicRequestConfig | 请求配置。 |
| callback | ZegoCopyrightedMusicRequestAccompanimentCallback | 点伴奏结果。 |
详情
可以获取 songID 对应歌曲的伴奏资源,包括 resource_id、krc_token、share_token 等。支持按次点伴奏方式。
- 业务场景:获取版权歌曲伴奏,用于本地播放与分享。
- 调用时机:在初始化版权音乐 [initCopyrightedMusic] 成功之后。
- 支持版本:2.13.0 及以上。
- 注意事项:该接口会触发计费。
requestAccompanimentClip
public void requestAccompanimentClip(ZegoCopyrightedMusicRequestConfig config, ZegoCopyrightedMusicRequestAccompanimentClipCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoCopyrightedMusicRequestConfig | 请求配置。 |
| callback | ZegoCopyrightedMusicRequestAccompanimentClipCallback | 点伴奏高潮片段结果。 |
详情
可以获取 songID 对应歌曲的高潮片段资源,包括 resource_id、krc_token、share_token 等。支持按次点伴奏高潮片段方式。
- 业务场景:获取版权歌曲伴奏高潮片段,用于本地播放与分享。
- 调用时机:在初始化版权音乐 [initCopyrightedMusic] 成功之后。
- 支持版本:2.13.0 及以上。
- 注意事项:该接口会触发计费。
getMusicByToken
public void getMusicByToken(std::string shareToken, ZegoCopyrightedMusicGetMusicByTokenCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| shareToken | std::string | 访问一首歌曲或伴奏的对应授权 token。 |
| callback | ZegoCopyrightedMusicGetMusicByTokenCallback | 获取歌曲或伴奏结果。 |
详情
通过他人分享的歌曲或伴奏 token,获取对应的一首歌曲或伴奏。
- 业务场景:在线 KTV 场景中,合唱者收到主唱分享的歌曲或伴奏 token 后,通过本接口获取对应的一首歌曲或伴奏,然后在本端进行播放。
- 调用时机:在初始化版权音乐 [initCopyrightedMusic] 成功之后。
- 支持版本:2.13.0 及以上。
getLrcLyric
public void getLrcLyric(std::string songID, ZegoCopyrightedMusicGetLrcLyricCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| songID | std::string | 歌曲或伴奏的 ID,一首歌的歌曲和伴奏共用同一个 ID。 |
| callback | ZegoCopyrightedMusicGetLrcLyricCallback | 获取 lrc 格式歌词结果 |
详情
获取 lrc 格式歌词,支持逐行解析歌词。
- 业务场景:用于逐行显示歌词。
- 调用时机:在初始化版权音乐 [initCopyrightedMusic] 成功之后。
- 支持版本:2.13.0 及以上。
queryCache
public bool queryCache(std::string songID, ZegoCopyrightedMusicType type)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| songID | std::string | 歌曲或伴奏的 ID,一首歌的歌曲和伴奏共用同一个 ID。 |
| type | ZegoCopyrightedMusicType | 歌曲资源类型。 |
详情
查询资源是否有缓存。
- 业务场景:可以用于在查询歌曲资源是否有缓存。
- 调用时机:在初始化版权音乐 [initCopyrightedMusic] 成功之后。
- 支持版本:2.13.0 及以上。
queryCache
public bool queryCache(std::string songID, ZegoCopyrightedMusicType type, ZegoCopyrightedMusicVendorID vendorID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| songID | std::string | 歌曲或伴奏的 ID,一首歌的歌曲和伴奏共用同一个 ID。 |
| type | ZegoCopyrightedMusicType | 歌曲资源类型。 |
| vendorID | ZegoCopyrightedMusicVendorID | 版权方。 |
详情
查询资源是否有缓存
- 业务场景:可以用于在查询歌曲资源是否有缓存。
- 调用时机:在初始化版权音乐 [initCopyrightedMusic] 成功之后。
- 支持版本:3.2.1 及以上。
IZegoCopyrightedMusicEventHandler
Declared in ZegoExpressEventHandler.h
方法
onDownloadProgressUpdate
public void onDownloadProgressUpdate(IZegoCopyrightedMusic* copyrightedMusic, std::string resourceID, float progressRate)ZegoExpressEventHandler.h| 名称 | 类型 | 描述 |
|---|---|---|
| copyrightedMusic | IZegoCopyrightedMusic* | 触发此次回调的版权音乐实例。 |
| resourceID | std::string | 触发此次回调的歌曲或伴奏对应的资源 ID。 |
| progressRate | float | 加载进度。 |
onCurrentPitchValueUpdate
public void onCurrentPitchValueUpdate(IZegoCopyrightedMusic* copyrightedMusic, std::string resourceID, int currentDuration, int pitchValue)ZegoExpressEventHandler.h| 名称 | 类型 | 描述 |
|---|---|---|
| copyrightedMusic | IZegoCopyrightedMusic* | 触发此次回调的版权音乐实例。 |
| resourceID | std::string | 触发此次回调的歌曲或伴奏对应的资源 ID。 |
| currentDuration | int | 当前播放进度。 |
| pitchValue | int | 实时音高准确程度或值。 |
IZegoCustomAudioProcessHandler
Declared in ZegoExpressEventHandler.h
方法
onProcessCapturedAudioData
public void onProcessCapturedAudioData(unsigned char* data, unsigned int dataLength, ZegoAudioFrameParam* param, double timestamp)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | unsigned char* | PCM 格式的音频数据。 |
| dataLength | unsigned int | 数据的长度。 |
| param | ZegoAudioFrameParam* | 音频帧参数。 |
| timestamp | double | 音频帧时间戳,当启动采集时从 0 开始计时,单位为毫秒。 |
详情
在此回调中可以收到自定义音频处理本地采集的 PCM 音频帧,开发者可对音频帧数据进行修改,同时可以修改声道数、采样率。返回的时间戳可用于数据同步,如歌词等。如果需要经过耳返后的数据,请使用 [onProcessCapturedAudioDataAfterUsedHeadphoneMonitor] 回调。
- 通知时机:需要先调用 [enableCustomAudioCaptureProcessing] 开启功能后,并且在调用 [startPreview] 或 [startPublishingStream] 后,才会触发本回调函数。
- 支持版本:2.13.0 及以上。
- 使用限制:无。
- 注意事项:本回调为高频回调,请勿在本回调中做耗时操作。
onProcessCapturedAudioDataAfterUsedHeadphoneMonitor
public void onProcessCapturedAudioDataAfterUsedHeadphoneMonitor(unsigned char* data, unsigned int dataLength, ZegoAudioFrameParam* param, double timestamp)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | unsigned char* | PCM 格式的音频数据 |
| dataLength | unsigned int | 数据的长度 |
| param | ZegoAudioFrameParam* | 音频帧参数 |
| timestamp | double | 音频帧时间戳,当启动采集时从 0 开始计时,单位为毫秒。 |
详情
在此回调中可以收到自定义音频处理本地采集经耳返后的 PCM 音频帧,开发者可对音频帧数据进行修改,同时可以修改声道数、采样率。返回的时间戳可用于数据同步,如歌词等。
- 通知时机:需要先调用 [enableCustomAudioCaptureProcessingAfterHeadphoneMonitor] 开启功能后,并且在调用 [startPreview] 或 [startPublishingStream] 后,才会触发本回调函数。
- 支持版本:2.13.0 及以上。
- 注意事项:本回调为高频回调,请勿在本回调中做耗时操作。
onBeforeAudioPrepAudioData
public void onBeforeAudioPrepAudioData(const unsigned char* data, unsigned int dataLength, ZegoAudioFrameParam param)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | const unsigned char* | PCM 格式的音频数据。 |
| dataLength | unsigned int | 数据的长度。 |
| param | ZegoAudioFrameParam | 音频帧参数。 |
详情
在此回调中可以收到 SDK 内部音频前处理前的音频数据。
- 通知时机:需要先调用 [enableBeforeAudioPrepAudioData] 开启抛出 SDK 内部音频前处理前的音频数据功能,并且在调用 [startPublishingStream] 后,才会触发本回调函数。
- 支持版本:3.11.0 及以上。
- 使用限制:无。
- 注意事项:本回调为高频回调,请勿在本回调中做耗时操作,且该回调中数据不允许修改。
onProcessRemoteAudioData
public void onProcessRemoteAudioData(unsigned char* data, unsigned int dataLength, ZegoAudioFrameParam* param, std::string streamID, double timestamp)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | unsigned char* | PCM 格式的音频数据。 |
| dataLength | unsigned int | 数据的长度 |
| param | ZegoAudioFrameParam* | 音频帧参数。 |
| streamID | std::string | 对应的流 ID。 |
| timestamp | double | 音频帧时间戳,当启动采集时从 0 开始计时,单位为毫秒。 |
详情
在此回调中可以收到自定义音频处理远端拉流 PCM 音频帧,开发者可对音频帧数据进行修改,同时可以修改声道数、采样率。返回的时间戳可用于数据同步,如歌词等。
- 通知时机:需要先调用 [enableCustomAudioRemoteProcessing] 开启功能后,并且在调用 [startPlayingStream] 后,才会触发本回调函数。
- 支持版本:2.13.0 及以上。
- 使用限制:无。
- 注意事项:本回调为高频回调,请勿在本回调中做耗时操作。
onProcessPlaybackAudioData
public void onProcessPlaybackAudioData(unsigned char* data, unsigned int dataLength, ZegoAudioFrameParam* param, double timestamp)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | unsigned char* | PCM 格式的音频数据。 |
| dataLength | unsigned int | 数据的长度。 |
| param | ZegoAudioFrameParam* | 音频帧参数。 |
| timestamp | double | 音频帧时间戳,以开启采集从 0 开始计时,单位为毫秒(当有且仅有一路流的时候才有效)。 |
详情
在此回调中可以收到自定义音频处理 SDK 播放音频的 PCM 音频帧,开发者可对音频帧数据进行修改,同时可以修改声道数、采样率。返回的时间戳可用于数据同步,如歌词等。
- 通知时机:需要先调用 [enableCustomAudioPlaybackProcessing] 开启功能后,并且在调用 [startPublishingStream], [startPlayingStream], [startPreview], [createMediaPlayer] 或 [createAudioEffectPlayer] 后,才会触发本回调函数。
- 支持版本:2.13.0 及以上。
- 使用限制:无。
- 注意事项:本回调为高频回调,请勿在本回调中做耗时操作。
IZegoCustomVideoCaptureHandler
Declared in ZegoExpressEventHandler.h
方法
onStart
public void onStart(ZegoPublishChannel channel)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| channel | ZegoPublishChannel | 推流通道。 |
详情
SDK 通知将要开始采集视频帧,收到该回调后向 SDK 发送的视频帧数据才有效。
- 业务场景:直播非摄像头采集的数据。例如本地视频文件播放、屏幕分享、游戏直播等。
- 通知时机:调用 [startPreview] 或 [startPublishingStream] 成功之后。
- 相关回调:自定义视频采集结束通知 [onCaptureStop]。
- 相关接口:可调用 [setCustomVideoCaptureHandler] 设置自定义视频采集回调。
- 支持版本:1.1.0 及以上。
- 注意事项:收到该回调后向 SDK 发送的视频帧数据才有效。
onStop
public void onStop(ZegoPublishChannel channel)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| channel | ZegoPublishChannel | 推流通道。 |
详情
SDK 通知将要结束采集视频帧。
- 业务场景:直播非摄像头采集的数据。例如本地视频文件播放、屏幕分享、游戏直播等。
- 通知时机:调用 [stopPreview] 或 [stopPublishingStream] 成功之后。
- 相关回调:自定义视频采集开始通知 [onCaptureStart]。
- 相关接口:可调用 [setCustomVideoCaptureHandler] 设置自定义视频采集回调。
- 支持版本:1.1.0 及以上。
- 注意事项:如果开启自定义采集后同时调用 [startPreview] 和 [startPublishingStream] 开启预览和推流,则应该调用 [stopPreview] 和 [stopPublishingStream] 停止预览和推流后才会触发该回调。
onEncodedDataTrafficControl
public void onEncodedDataTrafficControl(ZegoTrafficControlInfo trafficControlInfo, ZegoPublishChannel channel)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| trafficControlInfo | ZegoTrafficControlInfo | 流控参数。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
使用自定义视频采集时,SDK 检测到网络变化,通知开发者需要做流量控制,根据SDK的推荐参数调整编码配置。由于自定义采集传输已编码数据的情况下,SDK 无法得知外部的编码配置,因此流控操作需要开发者自行完成。SDK 会根据当前的网络情况,将视频配置的推荐值通知到开发者,开发者需要自行对编码器配置进行修改,以保证视频传输的流畅性。
- 业务场景:直播非摄像头采集的数据。例如本地视频文件播放、屏幕分享、游戏直播等。
- 通知时机:自定义视频采集过程中发生网络状态变化,需要做流量控制时。
- 相关接口:可调用 [setCustomVideoCaptureHandler] 设置自定义视频采集回调。
- 支持版本:1.14.0 及以上。
- 注意事项:请不要在此回调中执行耗时操作,比如大文件读写,若需执行耗时操作,请切换线程。
IZegoCustomVideoProcessHandler
Declared in ZegoExpressEventHandler.h
方法
onCapturedUnprocessedRawData
public void onCapturedUnprocessedRawData(const unsigned char** data, unsigned int* dataLength, ZegoVideoFrameParam param, unsigned long long referenceTimeMillisecond, ZegoPublishChannel channel)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | const unsigned char** | 原始视频数据。RGB 格式数据存放位置为 data[0],YUV 格式数据存放位置分别为 Y 分量:data[0],U 分量:data[1],V 分量:data[2]。 |
| dataLength | unsigned int* | 原始视频数据长度。RGB 格式数据长度存放位置为 dataLength[0],YUV 格式数据存放位置分别为 Y 分量长度:dataLength[0],U 分量长度:dataLength[1],V 分量长度:dataLength[2]。 |
| param | ZegoVideoFrameParam | 视频帧参数。 |
| referenceTimeMillisecond | unsigned long long | 视频帧的索引时间,UNIX 时间戳,或系统启动时间戳,单位为毫秒。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
开启自定义视频前处理时,调用 [setCustomVideoProcessHandler] 设置回调后,SDK 收到原始视频数据并回调给开发者。当开发者处理完原始图像之后,必须调用 [sendCustomVideoProcessedRawData] 将处理后数据传回 SDK 中,否则会导致丢帧现象。
- 业务场景:开发者自行采集视频数据或获取到 SDK 采集的视频数据后,若 SDK 自带的基础美颜和水印功能无法满足开发者需求时(例如美颜效果无法达到预期),可以结合 ZegoEffects SDK 对视频进行一些特殊处理,例如美颜、添加挂件等,该过程即为自定义视频前处理。
- 通知时机:开启自定义视频前处理,SDK 采集到原始视频数据时。
- 平台差异:适用于 Window、Android 平台。
- 支持版本:2.2.0 及以上。
- 使用限制:当调用 [enableCustomVideoProcessing] 开启自定义视频前处理且 config 的 bufferType 传入 [ZegoVideoBufferTypeRawData] 时,此接口生效。
onCapturedUnprocessedCVPixelBuffer
public void onCapturedUnprocessedCVPixelBuffer(void * buffer, unsigned long long referenceTimeMillisecond, ZegoPublishChannel channel)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| buffer | void * | CVPixelBufferRef 类型数据。 |
| referenceTimeMillisecond | unsigned long long | 视频帧的索引时间,UNIX 时间戳,单位为毫秒。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
开启自定义视频前处理时,调用 [setCustomVideoProcessHandler] 设置回调后,SDK 收到原始视频数据并回调给开发者。当开发者处理完原始图像之后,必须调用 [sendCustomVideoProcessedCVPixelbuffer] 将处理后数据传回 SDK 中,否则会导致丢帧现象。
- 业务场景:开发者自行采集视频数据或获取到 SDK 采集的视频数据后,若 SDK 自带的基础美颜和水印功能无法满足开发者需求时(例如美颜效果无法达到预期),可以结合 ZegoEffects SDK 对视频进行一些特殊处理,例如美颜、添加挂件等,该过程即为自定义视频前处理。
- 通知时机:开启自定义视频前处理,SDK 采集到原始视频数据时。
- 平台差异:仅在 iOS/macOS 平台生效。
- 支持版本:2.2.0 及以上。
- 使用限制:当调用 [enableCustomVideoProcessing] 开启自定义视频前处理且 config 的 bufferType 传入 [ZegoVideoBufferTypeCVPixelBuffer] 或 [ZegoVideoBufferTypeNV12CVPixelBuffer] 时,此接口生效。
IZegoCustomVideoRenderHandler
Declared in ZegoExpressEventHandler.h
方法
onCapturedVideoFrameRawData
public void onCapturedVideoFrameRawData(unsigned char** data, unsigned int* dataLength, ZegoVideoFrameParam param, ZegoVideoFlipMode flipMode, ZegoPublishChannel channel)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | unsigned char** | 原始视频帧数据(例:RGBA 只需考虑 data[0],I420 需考虑 data[0,1,2])。 |
| dataLength | unsigned int* | 数据的长度(例:RGBA 只需考虑 dataLength[0],I420 需考虑 dataLength[0,1,2])。 |
| param | ZegoVideoFrameParam | 视频帧参数。 |
| flipMode | ZegoVideoFlipMode | 视频帧翻转模式。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
使用自定义视频渲染时,SDK 回调本地预览采集的原始视频帧数据,由开发者自行渲染。
- 业务场景:使用了跨平台界面框架或游戏引擎;需要获取 SDK 采集或拉流的视频帧数据进行特殊处理。
- 通知时机:开启本地预览后,SDK 采集到本地预览视频帧数据时。
- 相关接口:可调用 [setCustomVideoRenderHandler] 设置自定义视频渲染回调。
- 支持版本:1.1.0 及以上。
onRemoteVideoFrameRawData
public void onRemoteVideoFrameRawData(unsigned char** data, unsigned int* dataLength, ZegoVideoFrameParam param, std::string streamID)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | unsigned char** | 原始视频帧数据(例:RGBA 只需考虑 data[0],I420 需考虑 data[0,1,2])。 |
| dataLength | unsigned int* | 数据的长度(例:RGBA 只需考虑 dataLength[0],I420 需考虑 dataLength[0,1,2])。 |
| param | ZegoVideoFrameParam | 视频帧参数。 |
| streamID | std::string | 拉流的流 ID。 |
详情
开启自定义视频渲染时,SDK 回调远端拉流原始视频帧数据,通过 streamID 区分不同的流,由开发者自行渲染。
- 业务场景:使用了跨平台界面框架或游戏引擎;需要获取 SDK 采集或拉流的视频帧数据进行特殊处理。
- 通知时机:开始拉流后,SDK 收到远端拉流视频帧数据时。
- 相关接口:可调用 [setCustomVideoRenderHandler] 设置自定义视频渲染回调。
- 支持版本:1.1.0 及以上。
onRemoteVideoFrameEncodedData
public void onRemoteVideoFrameEncodedData(const unsigned char* data, unsigned int dataLength, ZegoVideoEncodedFrameParam param, unsigned long long referenceTimeMillisecond, std::string streamID)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | const unsigned char* | 视频帧的编码数据。 |
| dataLength | unsigned int | 数据的长度。 |
| param | ZegoVideoEncodedFrameParam | 视频帧参数。 |
| referenceTimeMillisecond | unsigned long long | 视频帧的索引时间,UNIX 时间戳,单位为毫秒。 |
| streamID | std::string | 拉流的流 ID。 |
详情
当使用 [enableCustomVideoRender] 开启自定义视频渲染并且指定数据类型为 [EncodedData] 时,远端拉流未解码视频帧数据回调,通过 streamID 区分不同的流,视频数据由开发者自行渲染。 详情描述:开启自定义视频渲染时,远端拉流视频帧编码后的数据回调,通过 streamID 区分不同的流,由开发者自行渲染。
- 通知时机:开始拉流后,SDK 收到远端拉流视频帧数据时。
- 相关接口:可调用 [setCustomVideoRenderHandler] 设置自定义视频渲染回调。
- 支持版本:1.10.0 及以上。
IZegoDataRecordEventHandler
Declared in ZegoExpressEventHandler.h
方法
onCapturedDataRecordStateUpdate
public void onCapturedDataRecordStateUpdate(ZegoDataRecordState state, int errorCode, ZegoDataRecordConfig config, ZegoPublishChannel channel)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| state | ZegoDataRecordState | 文件录制状态。 |
| errorCode | int | 错误码,详情请参考 常见错误码文档 https://doc-zh.zego.im/zh/4378.html |
| config | ZegoDataRecordConfig | 录制配置对象。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
本地录制的状态更新回调,当录制过程状态变化时触发。
- 业务场景:开发者应根据此回调来判断文件录制的状态或者进行 UI 的提示等。
- 通知时机:调用 [startRecordingCapturedData] 后,当录制过程状态变化时触发。
- 支持版本:1.10.0 及以上。
- 使用限制:无。
onCapturedDataRecordProgressUpdate
public void onCapturedDataRecordProgressUpdate(ZegoDataRecordProgress progress, ZegoDataRecordConfig config, ZegoPublishChannel channel)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| progress | ZegoDataRecordProgress | 文件录制过程进度,开发者可以此对用户界面进行 UI 的提示等。 |
| config | ZegoDataRecordConfig | 录制配置对象。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
本地录制的进度更新回调,录制过程中定时触发。
- 业务场景:开发者可以此对用户界面进行 UI 的提示等。
- 通知时机:调用 [startRecordingCapturedData] 后,如果配置了需要回调,录制过程中定时触发。
- 支持版本:1.10.0 及以上。
- 使用限制:无。
IZegoEventHandler
Declared in ZegoExpressEventHandler.h
方法
onDebugError
public void onDebugError(int errorCode, std::string funcName, std::string info)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| errorCode | int | 错误码,详情请参考 常见错误码文档 https://doc-zh.zego.im/zh/4378.html |
| funcName | std::string | 函数名。 |
| info | std::string | 错误的详细信息。 |
详情
调用 SDK 函数出现异常时,会通过该回调提示详细的异常信息。
- 业务场景:开发者在集成 SDK 的开发、测试阶段,可以通过本回调中的详细异常信息快速定位问题。
- 通知时机:在 SDK 出现异常时通知开发者。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:无。
onEngineStateUpdate
public void onEngineStateUpdate(ZegoEngineState state)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| state | ZegoEngineState | 音视频引擎状态。 |
详情
音视频引擎状态更新的回调通知,当启用音视频功能时,比如预览、推流、本地媒体播放器、原始音频数据获取等,音视频引擎会进入开始状态,当退出房间或停用所有音视频功能时,音视频引擎会进入停止状态。
- 通知时机:开发者调用了相关函数改变了音视频引擎的状态。例如:1. 调用了ZegoExpressEngine的 [startPreview]、[stopPreview]、[startPublishingStream]、[startPlayingStream]、[startAudioDataObserver] 等函数。2. 调用了 MediaPlayer 的相关函数等。3. 调用了 [logoutRoom] 函数。4.调用了 RealTimeSequentialDataManager 的相关接口等。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项: 1. 开发者调用 [destroyEngine] 时,由于 SDK 的资源被完全释放,并不会触发此通知。 2. 如无特殊需要,开发者可以不必关注本回调。
onRecvExperimentalAPI
public void onRecvExperimentalAPI(std::string content)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| content | std::string | 回调的内容,JSON 字符串格式。 |
详情
接收实验性 API 回调,请在 ZEGO 技术支持的帮助下使用此功能。
- 支持版本:2.7.0 及以上。
onFatalError
public void onFatalError(int errorCode)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| errorCode | int | 错误码。 |
详情
发生致命性错误的回调通知。
- 通知时机:当 APP 开启了禁止域外 IP 访问的限制,当前客户端处于域外,就会触发。
- 支持版本:3.6.0 及以上。
- 使用限制:无。
- 注意事项: 无。
onRoomStateUpdate
public void onRoomStateUpdate(std::string roomID, ZegoRoomState state, int errorCode, std::string extendedData)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 房间 ID,最大长度为 128 字节的字符串。 |
| state | ZegoRoomState | 变化后的房间状态。 |
| errorCode | int | 错误码,详情请参考 常见错误码。 |
| extendedData | std::string | 状态更新附带的扩展信息。当房间登录成功时,可通过"room_session_id" key 获取每一次音视频通信唯一的 RoomSessionID,标识房间内首个用户发起音视频通信到最后一个用户结束通信的持续通信。可用于通话质量评分、通话问题诊断等场景中。 |
详情
当房间的连接状态改变时触发该回调,并通知改变的原因。2.18.0 及以上版本推荐使用 onRoomStateChanged 回调来替代 onRoomStateUpdate 回调监听房间状态变化。
- 业务场景:开发者可以通过这个回调来判断房间内当前用户的状态。
- 通知时机: 1. 开发者调用 [loginRoom]、[logoutRoom]、[switchRoom] 函数时会收到此通知。
- 用户设备的网络情况变化时也可能收到此通知 (SDK 在断线时会自动重新登录房间,详情请参考 SDK 是否支持断线重连机制。
- 相关接口:[loginRoom]、[logoutRoom]、[switchRoom]。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:若长时间处于正在请求连接状态(ZegoRoomStateConnecting),一般是因为用户端网络不稳定导致。
onRoomStateChanged
public void onRoomStateChanged(std::string roomID, ZegoRoomStateChangedReason reason, int errorCode, std::string extendedData)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 房间 ID,最大长度为 128 字节的字符串。 |
| reason | ZegoRoomStateChangedReason | 房间状态变化原因。 |
| errorCode | int | 错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html |
| extendedData | std::string | 状态更新附带的扩展信息。当房间登录成功时,可通过 "room_session_id" key 获取每一次音视频通信唯一的 RoomSessionID,标识房间内首个用户发起音视频通信到最后一个用户结束通信的持续通信。可用于通话质量评分、通话问题诊断等场景中。 |
详情
当房间的连接状态改变时触发该回调,并通知改变的原因。2.18.0 及以上版本推荐使用 onRoomStateChanged 回调来替代 onRoomStateUpdate 回调监听房间状态变化。
- 业务场景:开发者可以通过这个回调来判断房间内当前用户的状态。
- 通知时机: 1. 开发者调用房间相关函数 (参考 "相关接口") 时会收到此通知。 2. 用户设备的网络情况变化时也可能收到此通知 (SDK 在断线时会自动重新登录房间,详情请参考 https://doc-zh.zego.im/faq/reconnect )。
- 相关接口:[loginRoom], [logoutRoom], [switchRoom]
- 支持版本:2.18.0 及以上。
- 使用限制:无。
- 注意事项:若长时间处于正在请求连接状态 [ZegoRoomStateConnecting],一般是因为用户端网络不稳定导致。
onRoomUserUpdate
public void onRoomUserUpdate(std::string roomID, ZegoUpdateType updateType, const std::vector<ZegoUser>& userList)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 用户已登录的房间 ID,最大长度为 128 字节的字符串。 |
| updateType | ZegoUpdateType | 更新类型(添加/删除)。 |
| userList | const std::vector<ZegoUser>& | 当前房间内变更的用户列表。 |
详情
当房间内有其他用户上线或下线时,导致房间内用户列表发生变化,会通过本回调通知开发者。
- 业务场景:开发者可以通过这个回调来实时更新房间内的用户列表展示。
- 通知时机: 1. 用户首次登录房间时,如果房间内有其他用户,SDK 会触发 "updateType" 为 [ZegoUpdateTypeAdd] 的回调通知,此时 "userList" 为房间内的其他用户。 2. 用户已在房间内,如果有其他用户通过 [loginRoom]、[switchRoom] 函数登录到本房间,SDK 会触发 "updateType" 为 [ZegoUpdateTypeAdd] 的回调通知。 3. 用户已在房间内,有其他用户通过 [logoutRoom]、[switchRoom] 函数登出本房间,SDK 会触发 "updateType" 为 [ZegoUpdateTypeDelete] 的回调通知。 4. 用户已在房间内,如果有其他用户从服务端被踢出本房间,SDK 会触发 "updateType" 为 [ZegoUpdateTypeDelete] 的回调通知。
- 相关接口:[loginRoom]、[logoutRoom]、[switchRoom]。
- 支持版本:1.1.0 及以上。
- 使用限制:调用 [loginRoom] 登录房间时设置 [ZegoRoomConfig] 参数中的 "isUserStatusNotify" 属性为 "true" 时,才会接收到这个回调通知。如果开发者需要使用在回调通知中处理相关业务,请确保每个登录的用户都将 "isUserStatusNotify" 设置为 "true"。
onRoomOnlineUserCountUpdate
public void onRoomOnlineUserCountUpdate(std::string roomID, int count)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 用户已登录的房间 ID,最大长度为 128 字节的字符串。 |
| count | int | 当前在线用户数量。 |
详情
此方法会通知用户当前房间内的在线人数。
- 业务场景:开发者可根据此回调来来展示当前房间内的在线人数。
- 通知时机:登录房间成功后。
- 支持版本:1.7.0 及以上。
- 使用限制:无。
- 注意事项:1. 此函数 30 秒回调一次。2. 因设计如此,当房间内用户超过 500 后,对房间内在线人数的统计会有一些误差。
onRoomStreamUpdate
public void onRoomStreamUpdate(std::string roomID, ZegoUpdateType updateType, const std::vector<ZegoStream>& streamList, std::string extendedData)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 用户已登录的房间 ID,最大长度为 128 字节的字符串。 |
| updateType | ZegoUpdateType | 更新类型(添加/删除)。 |
| streamList | const std::vector<ZegoStream>& | 更新的流列表。 |
| extendedData | std::string | 流更新附带的扩展信息。收到流删除通知时,开发者可将该字符串转为 json 对象得到 stream_delete_reason 字段,该字段为流删除原因的数组,stream_delete_reason[].code 字段可能为如下值:1(用户主动停止推流); 2(用户心跳超时); 3(用户重复登录); 4(用户被踢出); 5(用户断线); 6(被服务端移除)。 |
详情
当房间内有其他用户开始推流或停止推流时,导致房间内流列表发生变化,会通过本回调通知开发者。
- 业务场景:开发者可根据此回调来判断指定房间内其他用户是否新增推流或停止推流,并根据情况选择调用 [startPlayingStream] 主动拉流或调用[stopPlayingStream] 停止拉流,同时也可以变更拉流的 UI 控件。
- 通知时机: 1. 用户首次登录房间时,如果房间内其他用户正在推流,SDK 会触发 updateType 为 [ZegoUpdateTypeAdd] 的回调通知,此时 "streamList" 为已存在的流列表。 2. 用户已在房间内,如果有其他用户新增推流,SDK 会触发 "updateType" 为 [ZegoUpdateTypeAdd] 的回调通知。 3. 用户已在房间内,如果有其他用户停止推流,SDK 会触发 "updateType" 为 [ZegoUpdateTypeDelete] 的回调通知。 4. 用户已在房间内,如果有其他用户退出房间,SDK 会触发 "updateType" 为 [ZegoUpdateTypeDelete] 的回调通知。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
onRoomStreamExtraInfoUpdate
public void onRoomStreamExtraInfoUpdate(std::string roomID, const std::vector<ZegoStream>& streamList)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 用户已登录的房间 ID,最大长度为 128 字节的字符串。 |
| streamList | const std::vector<ZegoStream>& | 流附加信息更新的流列表。 |
详情
房间内流附加信息更新时所有房间内用户会收到通知。
- 业务场景:用户可通过流附加信息与流生命周期一致的特性实现一些业务功能。
- 通知时机:当相同房间内一个正在推流的用户更新了流的附加信息时,相同房间内的其他用户会收到该回调。
- 相关接口:推流用户可以通过 [setStreamExtraInfo] 设置流附加信息。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:不同于流 ID 在推流过程中不可修改,流附加信息可以在对应流 ID 的生命周期中更新。
onRoomExtraInfoUpdate
public void onRoomExtraInfoUpdate(std::string roomID, const std::vector<ZegoRoomExtraInfo>& roomExtraInfoList)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 用户已登录的房间 ID,最大长度为 128 字节的字符串。 |
| roomExtraInfoList | const std::vector<ZegoRoomExtraInfo>& | 更新的房间附加信息列表。 |
详情
房间附加信息更新后,除更新房间附加信息的用户外,房间内所有用户会收到通知。
- 业务场景:为房间附加信息。
- 通知时机:当相同房间内其他用户更新了房间附加信息时,相同房间内的其他用户会收到该回调。
- 相关接口:用户可以通过 [setRoomExtraInfo] 更新房间附加信息。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
onRoomTokenWillExpire
public void onRoomTokenWillExpire(std::string roomID, int remainTimeInSecond)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 用户已登录的房间 ID,最大长度为 128 字节的字符串。 |
| remainTimeInSecond | int | token 过期前的剩余时间。 |
详情
房间 Token 鉴权将要过期的回调通知,请用户通过 [renewToken] 函数更新房间 Token 鉴权。
- 业务场景:为了防止炸麦场景,需要对登录房间、推流等操作进行鉴权控制,提高安全性。
- 通知时机:在 Token 过期前 30 秒,SDK 会通过 onRoomTokenWillExpire 回调发出通知。
- 相关接口:当开发者收到此回调后,可通过 [renewToken] 来更新 token 鉴权信息。
- 支持版本:2.8.0 及以上。
- 使用限制:无。
- 注意事项:Token 中包含用户的房间权限、推流权限、有效时间等重要信息,详情请参考 https://doc-zh.zego.im/article/10360 。
onPublisherStateUpdate
public void onPublisherStateUpdate(std::string streamID, ZegoPublisherState state, int errorCode, std::string extendedData)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 推流的流 ID。 |
| state | ZegoPublisherState | 推流状态。 |
| errorCode | int | 推流状态变更对应的错误码。请参考 常见错误码文档 https://doc-zh.zego.im/zh/4378.html |
| extendedData | std::string | 状态更新附带的扩展信息,包含CDN拉流地址。 |
详情
在调用推流接口 [startPublishingStream] 成功后,可以通过该回调函数获取推流状态变更的通知。开发者可根据 state 参数是否在 [正在请求推流状态] 来大体判断用户的推流网络情况。
- 相关回调:在调用拉流接口 [startPlayingStream] 成功后,可以通过回调函数 [onPlayerStateUpdate] 获取拉流状态变更的通知。开发者可根据 state 参数是否在 [正在请求拉流状态] 来大体判断用户的拉流网络情况。
- 支持版本:1.1.0 及以上。
- 注意事项:参数 [extendedData] 为状态更新附带的扩展信息。若使用 ZEGO 的 CDN 内容分发网络,在推流成功后,该参数的内容的键为 [flv_url_list]、[rtmp_url_list]、[hls_url_list],分别对应 flv、rtmp、hls 协议的拉流 URL。
onPublisherQualityUpdate
public void onPublisherQualityUpdate(std::string streamID, const ZegoPublishStreamQuality& quality)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 推流的流 ID。 |
| quality | const ZegoPublishStreamQuality& | 推流质量,包含了音视频帧率、码率、RTT 等值。 |
详情
在调用推流接口 [startPublishingStream] 成功后默认3秒(该时间如果需要变更,请联系 ZEGO 技术支持配置)会收到此回调,通过该回调可以获取推送的音视频流的采集帧率,码率,RTT,丢包率等质量数据。开发者可根据此函数的质量参数实时监控推送的音视频流的健康情况,以便在设备 UI 界面上实时展示上行网络状况。
- 相关回调:当调用拉流接口 [startPlayingStream] 成功后每3秒会收到回调 [onPlayerQualityUpdate],开发者可根据拉取的音视频流的帧率,码率,RTT,丢包率等质量数据,实时监控拉取流的健康情况。
- 支持版本:1.1.0 及以上。
- 注意事项:若开发者不清楚该回调函数的各个参数应该如何使用,可以只关注其中的 [quality] 参数的 [level] 字段,这是 SDK 内部根据质量参数计算的一个描述上行网络的综合值。
onPublisherCapturedAudioFirstFrame
public void onPublisherCapturedAudioFirstFrame()ZegoExpressEventHandler.hSDK 启动麦克风采集到第一帧音频数据时会收到此回调。若未收到该回调,说明音频采集设备被占用或异常。
- 通知时机:SDK内部的音视频模块的引擎启动时,SDK 会去采集本机设备的音频数据,此时会收到该回调。
- 相关回调:通过回调函数[onPublisherCapturedVideoFirstFrame] 判断 SDK 是否真正采集到了视频数据,通过回调[onPublisherRenderVideoFirstFrame] 判断 SDK 是否渲染完了采集到的第一帧视频数据。
- 支持版本:1.1.0 及以上。
onPublisherCapturedVideoFirstFrame
public void onPublisherCapturedVideoFirstFrame(ZegoPublishChannel channel)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| channel | ZegoPublishChannel | 推流通道,如果只推一路音视频流,可以不关注该参数。 |
详情
SDK 启动摄像头采集到第一帧视频数据时会收到此回调。若未收到该回调,说明视频采集设备被占用或异常。
- 通知时机:SDK 内部的音视频模块的引擎启动时,SDK 会去采集本机设备的视频数据,此时会收到该回调。
- 相关回调:通过回调函数 [onPublisherCapturedAudioFirstFrame] 判断 SDK 是否真的采集到音频数据,通过回调 [onPublisherRenderVideoFirstFrame] 判断 SDK 是否渲染完采集到的第一帧视频数据。
- 支持版本:1.1.0 及以上。
onPublisherSendAudioFirstFrame
public void onPublisherSendAudioFirstFrame(ZegoPublishChannel channel)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| channel | ZegoPublishChannel | 推流通道,如果只推一路音频流,可以不关注该参数。 |
详情
调用推流函数 [startPublishingStream] 成功后,SDK 发出第一帧音频数据时会收到此回调。开发者可根据该回调判断 SDK 是否真的发出音频数据,若未收到该回调,说明音频发送异常。
- 通知时机:在未调用推流函数 [startPublishingStream] 的情况下,首次推流 SDK 会收到该回调。
- 相关回调:调用推流函数 [startPublishingStream] 成功后, 通过回调函数 [onPublisherCapturedVideoFirstFrame] 判断 SDK 是否真的采集到视频数据,通过回调 [onPublisherRenderVideoFirstFrame] 判断 SDK 是否渲染完采集到的第一帧视频数据。
- 支持版本:3.5.0 及以上。
onPublisherSendVideoFirstFrame
public void onPublisherSendVideoFirstFrame(ZegoPublishChannel channel)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| channel | ZegoPublishChannel | 推流通道,如果只推一路视频流,可以不关注该参数。 |
详情
调用推流函数 [startPublishingStream] 成功后,SDK 发出第一帧视频数据时会收到此回调。开发者可根据该回调判断 SDK 是否真的发出视频数据,若未收到该回调,说明视频发送异常。
- 通知时机:在未调用推流函数 [startPublishingStream] 的情况下,首次推流 SDK 会收到该回调。
- 相关回调:调用推流函数 [startPublishingStream] 成功后, 通过回调函数 [onPublisherCapturedAudioFirstFrame] 判断 SDK 是否真的采集到音频数据,通过回调 [onPublisherRenderVideoFirstFrame] 判断 SDK 是否渲染完采集到的第一帧视频数据。
- 支持版本:3.5.0 及以上。
onPublisherRenderVideoFirstFrame
public void onPublisherRenderVideoFirstFrame(ZegoPublishChannel channel)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| channel | ZegoPublishChannel | 推流通道,如果只推一路音视频流,可以不关注该参数。 |
详情
SDK 渲染完采集到的第一帧视频数据时会收到此回调,该接口为预览渲染,自定义视频采集内部预览才有首帧回调,如果不是 SDK 渲染没有此回调。
- 相关回调:调用推流函数 [startPublishingStream] 成功后, 通过回调函数 [onPublisherCapturedAudioFirstFrame] 判断 SDK 是否真的采集到音频数据,通过回调 [onPublisherCapturedVideoFirstFrame] 判断 SDK 是否真的采集到视频数据。
- 支持版本:2.4.0 及以上。
onPublisherVideoSizeChanged
public void onPublisherVideoSizeChanged(int width, int height, ZegoPublishChannel channel)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| width | int | 视频采集分辨率宽。 |
| height | int | 视频采集分辨率高。 |
| channel | ZegoPublishChannel | 推流通道,如果只推一路音视频流,可以不关注该参数。 |
详情
当在未推流 [startPublishingStream] 或未预览 [startPreview] 的情况下,首次推流或首次预览,即 SDK 内部的音视频模块的引擎启动时,会去采集本机设备的视频数据,此时采集分辨率会改变。
- 通知时机:推流 [startPublishingStream] 成功后,在推流中途如果有改变视频采集分辨率发生变化将会收到此回调。
- 业务场景:开发者可以根据此回调来去除本地预览的 UI 的遮盖等类似操作。也可以根据该回调的分辨率来动态调整预览视图的比例等。
- 支持版本:1.1.0 及以上。
- 注意事项:外部采集时通知的是编码分辨率大小变化,会受到流控影响。
onPublisherRelayCDNStateUpdate
public void onPublisherRelayCDNStateUpdate(std::string streamID, const std::vector<ZegoStreamRelayCDNInfo>& infoList)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 推流的流 ID。 |
| infoList | const std::vector<ZegoStreamRelayCDNInfo>& | 当前 CDN 正在转推的信息列表。 |
详情
开发者可根据该回调判断转推 CDN 的音视频流是否正常,若不正常根据异常原因进一步定位转推 CDN 的音视频流异常的原因,以及做对应的容灾策略。
- 通知时机:在 ZEGO RTC 服务器将音视频流转推到 CDN 后,如果 CDN 转推状态发生变化,例如出现转推停止或转推重试,将会收到此回调。
- 支持版本:1.1.0 及以上。
- 注意事项:若对异常的原因不了解,可联系 ZEGO 技术人员分析具体异常的原因。
onPublisherVideoEncoderChanged
public void onPublisherVideoEncoderChanged(ZegoVideoCodecID fromCodecID, ZegoVideoCodecID toCodecID, ZegoPublishChannel channel)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| fromCodecID | ZegoVideoCodecID | 变更前的视频编码器 ID。 |
| toCodecID | ZegoVideoCodecID | 变更后的视频编码器 ID。 |
| channel | ZegoPublishChannel | 推流通道,如果只推一路音视频流,可以不关注该参数。 |
详情
推流使用的编码类型发生变化的回调。
- 通知时机:以 H.265 编码进行推流过程中,如果不支持 H.265 编码或编码失败,SDK 会主动降级为指定编码(H.264),此时会触发本回调。
- 支持版本:2.12.0 及以上。
- 注意事项:在触发本回调时,如果正在进行本地视频录制或云端录制,则会导致生成多个录制文件,开发者需要在录制结束后,收集所有录制文件进行处理。在触发本回调时,因为推流编码发生变更,开发者可以评估是否通知拉流端,以便拉流端做对应处理。
onPublisherStreamEvent
public void onPublisherStreamEvent(ZegoStreamEvent eventID, std::string streamID, std::string extraInfo)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| eventID | ZegoStreamEvent | 推流事件ID |
| streamID | std::string | 推流的流 ID。 |
| extraInfo | std::string | 附加信息。JSON 格式的字符串。目前包括的信息有 "url"表示地址, "streamProtocol"表示流协议,包括rtmp,flv,avertp,hls,webrtc等, "netProtocol"表示网络协议,包括tcp,udp,quic, "resourceType"表示资源类型,包括cdn,rtc,l3。 |
详情
发起推流后,这个回调会返回当前使用的推流地址,资源类型和协议相关信息。
- 通知时机:推流以及重试推流的事件。
- 支持版本:2.18.0 及以上。
- 注意事项:无。
onVideoObjectSegmentationStateChanged
public void onVideoObjectSegmentationStateChanged(ZegoObjectSegmentationState state, ZegoPublishChannel channel, int errorCode)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| state | ZegoObjectSegmentationState | 主体分割状态。 |
| channel | ZegoPublishChannel | 推流通道,如果只推一路音视频流,可以不关注该参数。 |
| errorCode | int | 主体分割状态变更对应的错误码。请参考 常见错误码文档 https://doc-zh.zego.im/zh/4378.html |
详情
推流端视频主体分割状态变化。
- 通知时机:当 [enableVideoObjectSegmentation] 开启或关闭主体分割后,根据实际情况通知开发者是否开启主体分割。
- 支持版本:3.4.0 及以上。
- 注意事项:该回调依赖于开启预览或者推流。
onPublisherLowFpsWarning
public void onPublisherLowFpsWarning(ZegoVideoCodecID codecID, ZegoPublishChannel channel)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| codecID | ZegoVideoCodecID | 视频编码器 ID。 |
| channel | ZegoPublishChannel | 推流通道,如果只推一路音视频流,可以不关注该参数。 |
详情
推流视频编码低帧率警告。
- 通知时机:推流视频编码出现低帧率会触发本回调。
- 支持版本:3.8.0 及以上。
- 注意事项:该回调默认关闭,若有需要,请联系 ZEGO 技术支持。
onPublisherDummyCaptureImagePathError
public void onPublisherDummyCaptureImagePathError(int errorCode, std::string path, ZegoPublishChannel channel)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| errorCode | int | 错误码。 |
| path | std::string | 图片路径。 |
| channel | ZegoPublishChannel | 推流通道,如果只推一路音视频流,可以不关注该参数。 |
详情
通知设置关闭摄像头时所推静态图片的路径错误。
- 通知时机:通过 [setDummyCaptureImagePath] 设置了图片的路径,但是推流时无法获取到该图片,就会触发本回调。
- 支持版本:3.9.0 及以上。
- 注意事项:设置前请确保该图片路径正确,有读权限。
onPlayerStateUpdate
public void onPlayerStateUpdate(std::string streamID, ZegoPlayerState state, int errorCode, std::string extendedData)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID。 |
| state | ZegoPlayerState | 拉流状态。 |
| errorCode | int | 拉流状态变更对应的错误码。请参考 常见错误码文档 https://doc-zh.zego.im/zh/4378.html |
| extendedData | std::string | 状态更新附带的扩展信息。备用,目前仅返回空 json 表。 |
详情
在调用拉流接口 [startPlayingStream] 成功后,可以通过该回调函数获取拉流状态变更的通知。开发者可根据 state 参数是否在 [正在请求拉流状态] 来大体判断用户的拉流网络情况。
- 通知时机:在调用拉流接口 [startPlayingStream] 成功后,拉流状态变更时。
- 相关回调:在调用推流接口 [startPublishingStream] 成功后,可以通过回调函数 [onPublisherStateUpdate] 获取推流状态变更的通知。开发者可根据 state 参数是否在 [正在请求推流状态] 来大体判断用户的推流网络情况。
- 支持版本:1.1.0 及以上。
onPlayerSwitched
public void onPlayerSwitched(std::string streamID, int errorCode)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 当前播放的流 ID。 |
| errorCode | int | 切换流结果对应的错误码。请参考 常见错误码文档 https://doc-zh.zego.im/zh/4378.html |
详情
在调用切换流接口 [switchPlayingStream] 成功后,可以通过该回调函数获取切换流的结果。
- 通知时机:在调用切换流接口 [switchPlayingStream] 成功后,切换流请求最终成功或失败时。
- 相关回调:在切换流成功或失败后,可以通过回调函数 [onPlayerStateUpdate] 获取当前拉流状态。
- 支持版本:3.16.0 及以上。
onPlayerQualityUpdate
public void onPlayerQualityUpdate(std::string streamID, const ZegoPlayStreamQuality& quality)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 拉流的流 ID。 |
| quality | const ZegoPlayStreamQuality& | 拉流质量,包含了音视频帧率、码率、RTT 等值。 |
详情
在调用拉流接口 [startPlayingStream] 成功后每3秒(该时间如果需要变更,请联系 ZEGO 技术支持配置)会收到此回调,通过该回调可以获取拉取的音视频流的帧率,码率,RTT,丢包率等质量数据。
- 业务场景:开发者可根据此函数的质量参数实时监控拉取的音视频流的健康情况,以便在设备 UI 界面上实时展示下行网络状况。
- 相关回调:当调用推流接口 [startPublishingStream] 成功后每3秒会收到回调 [onPublisherQualityUpdate],开发者可根据推送的音视频流的帧率,码率,RTT,丢包率等质量数据,实时监控推送流的健康情况。
- 支持版本:1.1.0 及以上。
- 注意事项:若开发者不清楚该回调函数的各个参数应该如何使用,可以只关注其中的 quality 参数的 level 字段,这是 SDK 内部根据质量参数计算的一个描述下行网络的综合值。
onPlayerMediaEvent
public void onPlayerMediaEvent(std::string streamID, ZegoPlayerMediaEvent event)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 拉流的流 ID。 |
| event | ZegoPlayerMediaEvent | 拉流时收到的具体事件。 |
详情
该回调用于接收拉流媒体事件。
- 业务场景:开发者可以根据此回调对卡顿情况做统计或在 App 的 UI 界面做友好的展示。
- 通知时机:在调用拉流接口 [startPlayingStream]后,当拉流发生音视频卡顿以及恢复等事件发生时会触发此回调。
- 支持版本:1.1.0 及以上。
onPlayerRecvAudioFirstFrame
public void onPlayerRecvAudioFirstFrame(std::string streamID)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 拉流的流 ID。 |
详情
调用拉流函数 [startPlayingStream] 成功后,SDK 接收到第一帧音频数据时会收到此回调。
- 业务场景:开发者可用该回调来统计首帧耗时或更新播放流的 UI 组件。
- 通知时机:SDK 从网络接收到第一帧音频数据时,会收到该回调。
- 相关回调:调用拉流函数 [startPlayingStream] 成功后, 通过回调函数 [onPlayerRecvVideoFirstFrame] 判断 SDK 是否接收到视频数据,通过回调 [onPlayerRenderVideoFirstFrame] 判断 SDK 是否渲染完接收到的第一帧视频数据。
- 支持版本:1.1.0 及以上。
onPlayerSyncRecvAudioFirstFrame
public void onPlayerSyncRecvAudioFirstFrame(std::string streamID)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 拉流的流 ID。 |
详情
调用拉流函数 [startPlayingStream] 成功后,SDK 接收到第一帧音频数据时会收到此回调。
- 业务场景:开发者可用该回调来统计首帧耗时或更新播放流的 UI 组件。
- 通知时机:SDK 从网络接收到第一帧音频数据时,会收到该回调。
- 相关回调:调用拉流函数 [startPlayingStream] 成功后, 通过回调函数 [onPlayerSyncRecvVideoFirstFrame] 判断 SDK 是否接收到视频数据,通过回调 [onPlayerSyncRecvRenderVideoFirstFrame] 判断 SDK 是否渲染完接收到的第一帧视频数据。
- 支持版本:3.22.0 及以上。
onPlayerRecvVideoFirstFrame
public void onPlayerRecvVideoFirstFrame(std::string streamID)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 拉流的流 ID。 |
详情
调用拉流函数 [startPlayingStream] 成功后,SDK 接收到第一帧视频数据时会收到此回调。
- 业务场景:开发者可用该回调来统计首帧耗时或更新播放流的 UI 组件。
- 通知时机:SDK 从网络接收到第一帧视频数据时,会收到该回调。
- 相关回调:调用拉流函数 [startPlayingStream] 成功后, 通过回调函数 [onPlayerRecvAudioFirstFrame] 判断 SDK 是否接收到音频数据,通过回调 [onPlayerRenderVideoFirstFrame] 判断 SDK 是否渲染完接收到的第一帧视频数据。
- 支持版本:1.1.0 及以上。
onPlayerSyncRecvVideoFirstFrame
public void onPlayerSyncRecvVideoFirstFrame(std::string streamID)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 拉流的流 ID。 |
详情
调用拉流函数 [startPlayingStream] 成功后,SDK 接收到第一帧视频数据时会收到此回调。
- 业务场景:开发者可用该回调来统计首帧耗时。
- 通知时机:SDK 从网络接收到第一帧视频数据时,会收到该回调。
- 相关回调:调用拉流函数 [startPlayingStream] 成功后, 通过回调函数 [onPlayerSyncRecvAudioFirstFrame] 判断 SDK 是否接收到音频数据,通过回调 [onPlayerSyncRecvRenderVideoFirstFrame] 判断 SDK 是否渲染完接收到的第一帧视频数据。
- 支持版本:3.8.0 及以上。
onPlayerRenderVideoFirstFrame
public void onPlayerRenderVideoFirstFrame(std::string streamID)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 拉流的流 ID。 |
详情
调用拉流函数 [startPlayingStream] 成功后,SDK 拉流并渲染完第一帧视频数据后会收到此回调。
- 业务场景:开发者可用该回调来统计首帧耗时或更新播放流的 UI 组件。
- 通知时机:SDK 拉流并渲染完第一帧视频数据后会收到此回调。
- 相关回调:调用拉流函数 [startPlayingStream] 成功后, 通过回调函数 [onPlayerRecvAudioFirstFrame] 判断 SDK 是否接收到音频数据,通过回调 [onPlayerRecvVideoFirstFrame] 判断 SDK 是否接收到第一帧视频数据。
- 支持版本:1.1.0 及以上。
onPlayerSyncRecvRenderVideoFirstFrame
public void onPlayerSyncRecvRenderVideoFirstFrame(std::string streamID)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 拉流的流 ID。 |
详情
调用拉流函数 [startPlayingStream] 成功后,SDK 拉流并渲染完第一帧视频数据后会收到此回调。
- 业务场景:开发者可用该回调来统计首帧耗时或更新播放流的 UI 组件。
- 通知时机:SDK 拉流并渲染完第一帧视频数据后会收到此回调。
- 相关回调:调用拉流函数 [startPlayingStream] 成功后, 通过回调函数 [onPlayerSyncRecvAudioFirstFrame] 判断 SDK 是否接收到音频数据,通过回调 [onPlayerSyncRecvVideoFirstFrame] 判断 SDK 是否接收到第一帧视频数据。
- 支持版本:3.22.0 及以上。
onPlayerRenderCameraVideoFirstFrame
public void onPlayerRenderCameraVideoFirstFrame(std::string streamID)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 拉流的流 ID。 |
详情
调用 [startPlayingStream] 函数拉流成功后,SDK 拉流并渲染完第一帧远端摄像头视频数据后会收到此回调。
- 业务场景:开发者可用该回调来统计首帧耗时或更新播放流的 UI 组件。
- 通知时机:远端 [enableCamera] 开启摄像头后,或者 [mutePublishStreamVideo] 为 true 开始发送视频数据后,SDK 拉流并渲染完第一帧远端摄像头视频数据后会收到此回调。
- 相关回调:调用拉流函数 [startPlayingStream] 成功后, 通过回调 [onPlayerRecvVideoFirstFrame] 判断 SDK 是否接收到第一帧视频数据。
- 支持版本:3.0.0 及以上。
- 注意事项:仅适用于远端使用摄像头推流的情况。仅适用于 RTC 推拉流场景。
onPlayerVideoSizeChanged
public void onPlayerVideoSizeChanged(std::string streamID, int width, int height)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 拉流的流 ID。 |
| width | int | 视频解码分辨率宽。 |
| height | int | 视频解码分辨率高。 |
详情
调用拉流函数 [startPlayingStream] 成功后,当收到视频首帧数据,或推流方通过 [setVideoConfig] 改变编码分辨率,或流控策略生效时,拉流分辨率会发生改变。
- 业务场景:开发者可根据流的最终分辨率来更新或切换真正播放流的 UI 组件。
- 通知时机:拉流 [startPlayingStream] 成功后,在拉流中途如果有视频分辨率发生变化将会收到此回调。
- 支持版本:1.1.0 及以上。
- 注意事项: 1. 若拉的是流只有音频数据,则不会收到该回调。
- 若用户开启 ZegoVideoBufferTypeEncodedData 类型的自定义视频渲染, SDK 不负责视频解码,则不会收到该回调。
onPlayerRecvSEI
public void onPlayerRecvSEI(std::string streamID, const unsigned char* data, unsigned int dataLength)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 拉流的流 ID。 |
| data | const unsigned char* | SEI 内容。 |
| dataLength | unsigned int | SEI 内容长度。 |
详情
调用拉流函数 [startPlayingStream] 成功后,当远端流发送 SEI 后(如 直接调用 [sendSEI] 、混音中带 SEI 数据、自定义视频采集发送码流数据时附带 SEI 等等),本端会收到此回调。
- 通知时机:拉流 [startPlayingStream] 成功后,当远端流发送 SEI 后,本端会收到此回调。
- 支持版本:1.1.0 及以上。
- 注意事项: 1. 客户可在此回调函数中直接操作 UI 控件。
- 由于视频编码器自身会产生 payload type 为 5 的 SEI,或者使用视频文件推流时,视频文件中也可能存在这样的 SEI,因此若开发者需要过滤掉这类型的 SEI 时,可在 [createEngine] 之前调用 [ZegoEngineConfig.advancedConfig("unregister_sei_filter", "XXXXX")]。其中 unregister_sei_filter 为 key,XXXXX 为需要设置的uuid过滤字符串。 3.调用 [mutePlayStreamVideo] 或 [muteAllPlayStreamVideo] 设置只拉音频流时,将无法接收媒体次要信息。
onPlayerSyncRecvSEI
public void onPlayerSyncRecvSEI(std::string streamID, const unsigned char* data, unsigned int dataLength)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 拉流的流 ID。 |
| data | const unsigned char* | SEI 内容。 |
| dataLength | unsigned int | SEI 内容长度。 |
详情
调用拉流函数 [startPlayingStream] 成功后,当远端流发送 SEI 后(例如 直接调用 [sendSEI] 、混音中带 SEI 数据、自定义视频采集发送码流数据时附带 SEI 等等),本端会收到此回调。
- 通知时机:拉流 [startPlayingStream] 成功且远端流发送 SEI 后,本端会收到此回调。
- 支持版本:3.4.0 及以上。
- 注意事项: 1. 由于视频编码器自身会产生 payload type 为 5 的 SEI,或者使用视频文件推流时,视频文件中也可能存在这样的 SEI,因此若开发者需要过滤掉这类型的 SEI 时,可在 [createEngine] 之前调用 [ZegoEngineConfig.advancedConfig("unregister_sei_filter", "XXXXX")],其中 unregister_sei_filter 为 key,XXXXX 为需要设置的 uuid 过滤字符串。 2.执行 [mutePlayStreamVideo] 或 [muteAllPlayStreamVideo] 设置只拉音频流时,将无法接收媒体次要信息。
onPlayerRecvMediaSideInfo
public void onPlayerRecvMediaSideInfo(const ZegoMediaSideInfo& info)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| info | const ZegoMediaSideInfo& | SEI 回调信息。 |
详情
调用拉流函数 [startPlayingStream] 成功后,当远端流发送 SEI 后(例如 直接调用 [sendSEI] 、混音中带 SEI 数据、自定义视频采集发送码流数据时附带 SEI 等等),本端会收到此回调。
- 通知时机:拉流 [startPlayingStream] 成功且远端流发送 SEI 后,本端会收到此回调。
- 支持版本:3.9.0 及以上。
- 注意事项:1. 由于视频编码器自身会产生 payload type 为 5 的 SEI,或者使用视频文件推流时,视频文件中也可能存在这样的 SEI,因此若开发者需要过滤掉这类型的 SEI 时,可在 [createEngine] 之前调用 [ZegoEngineConfig.advancedConfig("unregister_sei_filter", "XXXXX")],其中 unregister_sei_filter 为 key,XXXXX 为需要设置的 uuid 过滤字符串。 2.执行 [mutePlayStreamVideo] 或 [muteAllPlayStreamVideo] 设置只拉音频流时,将无法接收媒体次要信息。
onPlayerRecvAudioSideInfo
public void onPlayerRecvAudioSideInfo(std::string streamID, const unsigned char* data, unsigned int dataLength)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 拉流的流 ID。 |
| data | const unsigned char* | 音频次要信息内容。 |
| dataLength | unsigned int | 音频次要信息内容长度。 |
详情
调用拉流函数 [startPlayingStream] 成功后,当远端流发送音频次要信息成功后 [sendAudioSideInfo],本端会收到此回调。
- 通知时机:拉流 [startPlayingStream] 成功后,当远端流发送音频次要信息后,本端会收到此回调。
- 相关接口:可通过接口 [sendAudioSideInfo] 发送音频次要信息。
- 支持版本:2.19.0 及以上。
- 注意事项:1. 调用 [mutePlayStreamAudio] 或 [muteAllPlayStreamAudio] 设置只拉视频流时,将无法接收音频次要信息。2. 受网络等因素影响,收到的数据可能会有缺失,但是保证顺序。
onPlayerLowFpsWarning
public void onPlayerLowFpsWarning(ZegoVideoCodecID codecID, std::string streamID)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| codecID | ZegoVideoCodecID | 视频解码器 ID。 |
| streamID | std::string | 拉流的流 ID。 |
详情
拉流出现低帧率触发的回调。
- 通知时机:拉流出现低帧率会触发本回调。
- 支持版本:2.14.0 及以上。
- 注意事项:如果用户拉 H.265 流触发本回调,可以停拉 H.265 流,转拉 H.264 流。
onPlayerStreamEvent
public void onPlayerStreamEvent(ZegoStreamEvent eventID, std::string streamID, std::string extraInfo)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| eventID | ZegoStreamEvent | 拉流事件ID |
| streamID | std::string | 拉流的流 ID。 |
| extraInfo | std::string | 附加信息。JSON 格式的字符串。目前包括的信息有 "url"表示地址, "streamProtocol"表示流协议,包括rtmp,flv,avertp,hls,webrtc等, "netProtocol"表示网络协议,包括tcp,udp,quic, "resourceType"表示资源类型,包括cdn,rtc,l3。 |
详情
发起拉流后,这个回调会返回当前使用的拉流地址,资源类型和协议相关信息。
- 通知时机:拉流以及重试拉流的事件。
- 支持版本:2.18.0 及以上。
- 注意事项:无。
onPlayerVideoSuperResolutionUpdate
public void onPlayerVideoSuperResolutionUpdate(std::string streamID, ZegoSuperResolutionState state, int errorCode)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 拉流的流 ID。 |
| state | ZegoSuperResolutionState | 超分状态。 |
| errorCode | int | 错误码,详情请参考 常见错误码文档 https://doc-zh.zego.im/zh/4378.html |
详情
拉流视频超分辨率开启状态变化。
- 通知时机:当 [enableVideoSuperResolution] 开启或关闭视频超分后,拉流视频渲染时根据实际情况通知开发者是否开启超分。
- 支持版本:3.0.0 及以上。
- 注意事项:无。
onMixerRelayCDNStateUpdate
public void onMixerRelayCDNStateUpdate(std::string taskID, const std::vector<ZegoStreamRelayCDNInfo>& infoList)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| taskID | std::string | 混流任务 ID。取值范围:长度不超过256。注意事项:该参数为字符串格式,不可以包含 URL 关键字,例如 'http', '?' 等,否则推拉流失败。仅支持数字,英文字符 和 '~', '!', '@', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', '\'。 |
| infoList | const std::vector<ZegoStreamRelayCDNInfo>& | 当前 CDN 正在混流的信息列表。 |
详情
在 ZEGO RTC 服务器的混流任务的一般情况会以 RTMP 协议将输出流向 CDN 推送,推送过程中出现的状态的变化会从该回调函数通知出来。
- 业务场景:常用于需要多个视频画面合成一个视频时使用混流,比如教育类,直播老师和学生的画面。
- 通知时机:开发者调用 [startMixerTask] 函数开始混流后,ZEGO RTC服务器将输出流向CDN推送的时候出现状态变化时。
- 相关回调:可通过 [onMixerSoundLevelUpdate] 获取混流中的每条单流的声浪更新通知。
- 相关接口:可通过 [startMixerTask] 开始混流任务。
- 支持版本:1.2.1 及以上。
- 使用限制:无。
onMixerSoundLevelUpdate
public void onMixerSoundLevelUpdate(const std::unordered_map<unsigned int, float>& soundLevels)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| soundLevels | const std::unordered_map<unsigned int, float>& | 混流中每条单流的声浪键值对,key 为每条单流的 soundLevelID,value 为对应的单流的声浪值。取值范围:value 的取值范围为 0.0 ~ 100.0(该取值仅表示回调的声浪取值范围,不表示精度)。 |
详情
开发者可根据此回调在观众拉混流的 UI 界面显示哪条流的主播在说话的效果。
- 业务场景:常用于需要多个视频画面合成一个视频时使用混流,比如教育类,直播老师和学生的画面。
- 通知时机:开发者调用 [startPlayingStream] 函数开始拉混流后,回调通知周期为 100 ms。
- 相关回调:可通过 [onMixerRelayCDNStateUpdate] 获取混流转推 CDN 状态更新通知。
- 相关接口:可通过 [startMixerTask] 开始混流任务。
- 支持版本:1.2.1 及以上。
- 使用限制:该回调每 100 ms 触发一次,触发频率不支持设置。由于该回调频率高,请勿在该回调中执行耗时任务或者 UI 操作,以免造成卡顿。
onAutoMixerSoundLevelUpdate
public void onAutoMixerSoundLevelUpdate(const std::unordered_map<std::string, float>& soundLevels)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| soundLevels | const std::unordered_map<std::string, float>& | 混流中每条单流的声浪键值对,key 为每条单流的 streamID,value 为对应的单流的声浪值,value 的取值范围为 0.0 ~ 100.0(该取值仅表示回调的声浪取值范围,不表示精度)。 |
详情
用户可根据此回调获取自动混流时拉取到的每条流的声浪信息,包括 streamID 和声浪值。
- 业务场景:常用于语聊房场景,用户可根据此回调在观众拉混流时显示哪条流的主播在说话。
- 通知时机:调用 [startPlayingStream] 函数拉流后触发。
- 相关接口:可调用 [startAutoMixerTask] 函数,开始自动混流任务。可调用 [stopAutoMixerTask] 函数,停止自动混流任务。
- 支持版本:2.10.0 及以上。
onAudioDeviceStateChanged
public void onAudioDeviceStateChanged(ZegoUpdateType updateType, ZegoAudioDeviceType deviceType, const ZegoDeviceInfo& deviceInfo)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| updateType | ZegoUpdateType | 更新类型(添加/删除) |
| deviceType | ZegoAudioDeviceType | 音频设备类型 |
| deviceInfo | const ZegoDeviceInfo& | 音频设备信息 |
详情
通过监听此回调,用户可在必要的时候更新使用特定设备进行声音采集或输出。
- 通知时机:监测到系统中有音频设备添加或移除时,会触发此回调。
- 平台差异:仅支持 Windows、macOS。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
onAudioDeviceVolumeChanged
public void onAudioDeviceVolumeChanged(ZegoAudioDeviceType deviceType, std::string deviceID, int volume)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| deviceType | ZegoAudioDeviceType | 音频设备类型 |
| deviceID | std::string | 音频设备ID |
| volume | int | 音频设备音量 |
详情
音频设备音量变更事件回调。
- 通知时机:调用 [startAudioDeviceVolumeMonitor] 函数启动设备音量监控器后,且监控的音频设备音量发生变更时。
- 平台差异:仅支持 Windows 和 macOS。
- 支持版本:1.1.0 及以上。
onVideoDeviceStateChanged
public void onVideoDeviceStateChanged(ZegoUpdateType updateType, const ZegoDeviceInfo& deviceInfo)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| updateType | ZegoUpdateType | 更新类型(添加/删除) |
| deviceInfo | const ZegoDeviceInfo& | 视频设备信息 |
详情
通过监听此回调,用户可在必要的时候更新使用特定设备进行视频采集。
- 通知时机:监测到系统中有视频设备添加或移除时,会触发此回调。
- 平台差异:仅支持 Windows、macOS。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
onCapturedSoundLevelUpdate
public void onCapturedSoundLevelUpdate(float soundLevel)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| soundLevel | float | 本地采集的声浪值,取值范围为 0.0 ~ 100.0(该取值仅表示回调的声浪取值范围,不表示精度)。 |
详情
本地采集音频声浪回调。
- 通知时机:调用 [startSoundLevelMonitor] 函数启动声浪监控器后。
- 相关接口:通过 [startSoundLevelMonitor] 启动声浪监控,通过回调 [onRemoteSoundLevelUpdate] 监控远端拉流音频声浪。
- 支持版本:1.1.0 及以上。
- 注意事项: 1. 回调通知周期为调用 [startSoundLevelMonitor] 时设置的参数值,当处于未推流 [startPublishingStream] 且未预览 [startPreview] 状态时,回调数值为默认值 0。 2. 该回调为高频回调,建议不要在回调内部做复杂逻辑处理。
onCapturedSoundLevelInfoUpdate
public void onCapturedSoundLevelInfoUpdate(const ZegoSoundLevelInfo& soundLevelInfo)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| soundLevelInfo | const ZegoSoundLevelInfo& | 本地采集的声浪值,取值范围为 0.0 ~ 100.0(该取值仅表示回调的声浪取值范围,不表示精度)。 |
详情
本地采集音频声浪回调。
- 通知时机:调用 [startSoundLevelMonitor] 函数启动声浪监控器后。
- 相关接口:通过 [startSoundLevelMonitor] 启动声浪监控,通过回调 [onRemoteSoundLevelUpdate] 或 [onRemoteSoundLevelInfoUpdate] 监控远端拉流音频声浪。
- 支持版本:2.10.0 及以上。
- 注意事项: 1. 回调通知周期为调用 [startSoundLevelMonitor] 时设置的参数值。 2. 该回调为高频回调,建议不要在回调内部做复杂逻辑处理。
onRemoteSoundLevelUpdate
public void onRemoteSoundLevelUpdate(const std::unordered_map<std::string, float>& soundLevels)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| soundLevels | const std::unordered_map<std::string, float>& | 远端的声浪键值对,key 为流 ID,value 为对应的流的声浪值,value 取值范围为 0.0 ~ 100.0(该取值仅表示回调的声浪取值范围,不表示精度)。 |
详情
远端拉流音频声浪回调。
- 通知时机:调用 [startSoundLevelMonitor] 函数启动声浪监控器后,且处于正在拉流 [startPlayingStream] 的状态。
- 相关接口:通过 [startSoundLevelMonitor] 启动声浪监控,通过回调 [onCapturedSoundLevelUpdate] 或 [onCapturedSoundLevelInfoUpdate] 监控本地拉流音频声浪。
- 支持版本:1.1.0 及以上。
- 注意事项:回调通知周期为调用 [startSoundLevelMonitor] 时设置的参数值。
onRemoteSoundLevelInfoUpdate
public void onRemoteSoundLevelInfoUpdate(const std::unordered_map<std::string, ZegoSoundLevelInfo>& soundLevelInfos)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| soundLevelInfos | const std::unordered_map<std::string, ZegoSoundLevelInfo>& | 远端的声浪键值对,key 为流 ID,value 为对应的流的声浪值,value 取值范围为 0.0 ~ 100.0(该取值仅表示回调的声浪取值范围,不表示精度)。 |
详情
远端拉流音频声浪回调。
- 通知时机:调用 [startSoundLevelMonitor] 函数启动声浪监控器后,且处于正在拉流 [startPlayingStream] 的状态。
- 相关接口:通过 [startSoundLevelMonitor] 启动声浪监控,通过回调 [onCapturedSoundLevelUpdate] 或 [onCapturedSoundLevelInfoUpdate] 监控本地拉流音频声浪。
- 支持版本:2.10.0 及以上。
- 注意事项:回调通知周期为调用 [startSoundLevelMonitor] 时设置的参数值。
onCapturedAudioSpectrumUpdate
public void onCapturedAudioSpectrumUpdate(const ZegoAudioSpectrum& audioSpectrum)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| audioSpectrum | const ZegoAudioSpectrum& | 本地采集的音频频谱值数组,频谱值范围为 [0-2^30]。 |
详情
本地采集音频频谱回调。
- 通知时机:调用 [startAudioSpectrumMonitor] 函数启动声浪监控器后。
- 相关接口:通过 [startAudioSpectrumMonitor] 启动声浪监控,通过回调 [onRemoteAudioSpectrumUpdate] 监控远端拉流音频频谱。
- 支持版本:1.1.0 及以上。
- 注意事项:回调通知周期为调用 [startAudioSpectrumMonitor] 时设置的参数值,当处于未推流 [startPublishingStream] 且未预览 [startPreview] 状态时,回调数值为默认值 0。
onRemoteAudioSpectrumUpdate
public void onRemoteAudioSpectrumUpdate(const std::unordered_map<std::string, ZegoAudioSpectrum>& audioSpectrums)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| audioSpectrums | const std::unordered_map<std::string, ZegoAudioSpectrum>& | 远端音频频谱键值对,key 是流 ID,value 为对应的流的音频频谱值数组,频谱值范围为 [0-2^30] |
详情
远端拉流音频频谱回调。
- 通知时机:调用 [startAudioSpectrumMonitor] 函数启动声浪监控器后,且处于正在拉流 [startPlayingStream] 的状态。
- 相关接口:通过 [startAudioSpectrumMonitor] 启动音频频谱监控,通过回调 [onCapturedAudioSpectrumUpdate] 监控本地采集音频频谱。
- 支持版本:1.1.0 及以上。
- 注意事项:回调通知周期为调用 [startAudioSpectrumMonitor] 时设置的参数值。
onLocalDeviceExceptionOccurred
public void onLocalDeviceExceptionOccurred(ZegoDeviceExceptionType exceptionType, ZegoDeviceType deviceType, std::string deviceID)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| exceptionType | ZegoDeviceExceptionType | 设备异常类型。 |
| deviceType | ZegoDeviceType | 发生异常的设备类型。 |
| deviceID | std::string | 设备 ID。目前仅支持桌面端设备,用于标识具体的设备;对于移动端设备,此参数将返回空字符串。 |
详情
本地设备异常。
- 通知时机:当本地音频或视频设备功能出现异常时会触发此回调。
- 支持版本:2.15.0 及以上。
onRemoteCameraStateUpdate
public void onRemoteCameraStateUpdate(std::string streamID, ZegoRemoteDeviceState state)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 拉流的流 ID。 |
| state | ZegoRemoteDeviceState | 远端摄像头状态。 |
详情
远端摄像头设备状态通知。
- 业务场景:1v1 教育场景的开发者或者教育小班课场景及相似场景的开发者可以根据此回调来判断远端推流设备的摄像头设备是否正常工作,以及根据相应的 state 初步了解设备出问题的原因。
- 通知时机:远端摄像头设备状态发生变更时,例如开关摄像头等,通过监听此回调,能够获取远端摄像头相关的事件,可以用于提示用户可能导致视频异常的情况。
- 支持版本:1.1.0 及以上。
- 注意事项:当从 CDN 拉流时,或对端使用了自定义视频采集时,不会触发此回调。
onRemoteMicStateUpdate
public void onRemoteMicStateUpdate(std::string streamID, ZegoRemoteDeviceState state)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 拉流的流 ID。 |
| state | ZegoRemoteDeviceState | 远端麦克风状态。 |
详情
远端麦克风设备状态通知。
- 业务场景:1v1 教育场景的开发者或者教育小班课场景及相似场景的开发者可以根据此回调来判断远端推流设备的麦克风设备是否正常工作,以及根据相应的 state 初步了解设备出问题的原因。
- 通知时机:远端麦克风设备状态发生变更时,例如开关麦克风等,通过监听此回调,能够获取远端麦克风相关的事件,可以用于提示用户可能导致音频异常的情况。
- 支持版本:1.1.0 及以上。
- 注意事项:当从 CDN 拉流时,或对端使用了自定义音频采集时(且不是推流到 ZEGO RTC服务器),不会触发此回调。
onRemoteSpeakerStateUpdate
public void onRemoteSpeakerStateUpdate(std::string streamID, ZegoRemoteDeviceState state)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 拉流的流 ID。 |
| state | ZegoRemoteDeviceState | 远端扬声器状态。 |
详情
远端扬声器设备状态通知。
- 业务场景:1v1 教育场景的开发者或者教育小班课场景及相似场景的开发者可以根据此回调来判断远端推流设备的扬声器设备是否正常工作,以及根据相应的 state 初步了解设备出问题的原因。
- 通知时机:远端扬声器设备状态发生变更时,例如开关扬声器等,通过监听此回调,能够获取远端扬声器相关的事件。
- 支持版本:1.1.0 及以上。
- 注意事项:此回调当从 CDN 拉流时不会回调。
onAudioRouteChange
public void onAudioRouteChange(ZegoAudioRoute audioRoute)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| audioRoute | ZegoAudioRoute | 当前音频路由。 |
详情
音频设备路由变更通知。
- 通知时机:当有耳机插拔、扬声器和听筒切换等音频路由发生变化时会抛出此回调。
- 平台差异:仅支持 iOS 和 Android。
- 支持版本:1.20.0 及以上。
onAudioVADStateUpdate
public void onAudioVADStateUpdate(ZegoAudioVADStableStateMonitorType type, ZegoAudioVADType state)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| type | ZegoAudioVADStableStateMonitorType | 语音检测器类型 |
| state | ZegoAudioVADType | 语音检测结果 |
详情
检测音频数据的稳态语音状态的回调。 触发时机:调用 [startAudioVADStableStateMonitor] 启动语音状态检测,且处于正在推流的状态或预览预览状态。
- 相关接口:[startAudioVADStableStateMonitor], [stopAudioVADStableStateMonitor]。
- 支持版本:2.14.0 及以上。
- 使用限制:回调通知周期为 3 秒。
onRecvRoomTransparentMessage
public void onRecvRoomTransparentMessage(std::string roomID, const ZegoRoomRecvTransparentMessage& message)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 房间 ID。取值范围:最大长度为 128 字节。 |
| message | const ZegoRoomRecvTransparentMessage& | 收到的消息。 |
详情
该回调用于接收相同房间内其他用户发送的房间透传消息。
- 通知时机:调用 [loginRoom] 登录房间之后,如果房间内有用户通过 [sendTransparentMessage] 函数发送指定客户端接收的消息,则触发此回调。
- 支持版本:3.11.0 及以上。
- 使用限制:无。
- 注意事项:用户自己发送的弹幕消息不会通过此回调得到通知。[sendTransparentMessage] 时指定仅服务端回调,则不会触发此回调。
onIMRecvBroadcastMessage
public void onIMRecvBroadcastMessage(std::string roomID, std::vector<ZegoBroadcastMessageInfo> messageList)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 房间 ID。取值范围:最大长度为 128 字节。 |
| messageList | std::vector<ZegoBroadcastMessageInfo> | 收到的消息列表。取值范围:每次最多接收 50 条消息。 |
详情
该回调用于接收相同房间内其他用户发送的广播消息。
- 业务场景:一般在直播房间内使用。
- 通知时机:调用 [loginRoom] 登录房间之后,如果房间内有用户通过 [sendBroadcastMessage] 函数发送广播消息,则触发此回调。
- 相关回调:可通过[onIMRecvBarrageMessage]接收房间弹幕消息,可通过 [onIMRecvCustomCommand] 接收房间自定义信令。
- 支持版本:1.2.1 及以上。
- 使用限制:无。
- 注意事项:用户自己发送的广播消息不会通过此回调得到通知。
onIMRecvBarrageMessage
public void onIMRecvBarrageMessage(std::string roomID, std::vector<ZegoBarrageMessageInfo> messageList)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 房间 ID。取值范围:最大长度为 128 字节。 |
| messageList | std::vector<ZegoBarrageMessageInfo> | 收到的消息列表。取值范围:每次最多接收 50 条消息。 |
详情
该回调用于接收相同房间内其他用户发送的弹幕消息。
- 业务场景:一般用于房间内有大量消息收发,且不需要保证消息可靠性的场景,例如直播弹幕。
- 通知时机:调用 [loginRoom] 登录房间之后,如果房间内有用户通过 [sendBarrageMessage] 函数发送弹幕消息,则触发此回调。
- 相关回调:可通过[onIMRecvBroadcastMessage]接收房间广播消息,可通过 [onIMRecvCustomCommand] 接收房间自定义信令。
- 支持版本:1.5.0 及以上。
- 使用限制:无。
- 注意事项:用户自己发送的弹幕消息不会通过此回调得到通知。在房间内有大量弹幕消息时可能会延迟收到通知,且可能丢失部分弹幕消息。
onIMRecvCustomCommand
public void onIMRecvCustomCommand(std::string roomID, ZegoUser fromUser, std::string command)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 房间 ID。取值范围:最大长度为 128 字节。 |
| fromUser | ZegoUser | 信令的发送人。 |
| command | std::string | 信令内容。取值范围:最大长度为 1024 字节。 |
详情
该回调用于接收相同房间内其他用户发送的自定义信令。
- 业务场景:一般在直播房间内使用。
- 通知时机:调用 [loginRoom] 登录房间之后,如果房间内有其他用户通过 [sendCustomCommand] 函数发送自定义信令给开发者,则触发此回调。
- 相关回调:可通过[onIMRecvBroadcastMessage]接收房间广播消息,可通过 [onIMRecvBarrageMessage] 接收房间弹幕消息。
- 支持版本:1.2.1 及以上。
- 使用限制:无。
- 注意事项:用户自己发送给自己的自定义信令不会通过此回调得到通知。
onPerformanceStatusUpdate
public void onPerformanceStatusUpdate(const ZegoPerformanceStatus& status)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| status | const ZegoPerformanceStatus& | 系统性能监控状态。 |
详情
系统性能监控回调。回调周期为调用 [startPerformanceMonitor] 时设置的 millisecond 参数值。
- 业务场景:通过监控系统性能,协助用户快速定位、解决性能问题,提升用户体验。
- 通知时机:需要在 [createEngine] 之后,调用 [startPerformanceMonitor] 启动系统性能监控后才会触发本回调函数。
- 支持版本:1.19.0 及以上。
- 使用限制:无。
onNetworkModeChanged
public void onNetworkModeChanged(ZegoNetworkMode mode)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mode | ZegoNetworkMode | 当前网络模式。 |
详情
网络模式变更回调。
- 通知时机:当设备的网络模式改变时,例如从 WiFi 切换到 5G,或断网等情况,将会触发本回调。
- 支持版本:1.20.0 及以上。
- 使用限制:无。
onNetworkSpeedTestError
public void onNetworkSpeedTestError(int errorCode, ZegoNetworkSpeedTestType type)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| errorCode | int | 网络测速错误码。请参考常见错误码文档 https://doc-zh.zego.im/zh/4378.html |
| type | ZegoNetworkSpeedTestType | 上行或下行网络。 |
详情
网络测速异常回调。
- 业务场景:用于检测当前网络环境是否适合推/拉指定码率的流。
- 通知时机:网络测试过程中发生异常时,例如:连接测速服务器失败等,将触发本回调。
- 支持版本:1.20.0 及以上。
- 使用限制:无。
onNetworkSpeedTestQualityUpdate
public void onNetworkSpeedTestQualityUpdate(const ZegoNetworkSpeedTestQuality& quality, ZegoNetworkSpeedTestType type)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| quality | const ZegoNetworkSpeedTestQuality& | 网速测速质量. |
| type | ZegoNetworkSpeedTestType | 上行或下行网络。 |
详情
网络连通状态下的网络测速质量回调。
- 业务场景:用于检测当前网络环境是否适合推/拉指定码率的流。
- 通知时机:调用 [startNetworkSpeedTest] 启动网络测速后,将触发本回调。回调通知周期为调用 [startNetworkSpeedTest] 时设置的参数值,未设置该参数时,默认 3 秒回调一次。
- 支持版本:1.20.0 及以上。
- 使用限制:无。
- 注意事项:当测速发生异常或停止测速时,本回调将会不再触发。
onNetworkQuality
public void onNetworkQuality(std::string userID, ZegoStreamQualityLevel upstreamQuality, ZegoStreamQualityLevel downstreamQuality)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| userID | std::string | 用户 ID,空表示本地用户 |
| upstreamQuality | ZegoStreamQualityLevel | 上行网络质量 |
| downstreamQuality | ZegoStreamQualityLevel | 下行网络质量 |
详情
本地和远端用户的上下行网络回调,默认每两秒回调一次本地和每个拉取的远端用户的网络状况。 2.10.0 至 2.13.1 版本: 1. 自身必须既推流又拉流,才会收到自身的网络质量回调。 2. 当拉一条流时,推流端有拉流且推流端在自己所在房间内,才会收到该用户的网络质量。 2.14.0 至 2.21.1 版本:
- 自身只要推流或拉流,就会收到自身的网络质量回调。 2. 当拉一条流时,推流端在自己所在房间内,就会收到该用户的网络质量。 2.22.0 及以上版本:
- 自身只要推流或拉流,就会收到自身的网络质量回调。 2. 当拉一条流时,推流端在自己所在房间内,就会收到该用户的网络质量。
- 预估远端推流用户的网络情况,如果远端推流用户心跳丢失 1 次,回调其网络质量为 unknown;如果远端推流用户心跳丢失达到 3 次,回调其网络质量为 die。
- 业务场景:当开发者希望分析链路上的网络情况,或想要了解本地和远端用户的网络状况。
- 通知时机:调用 [startPublishingStream] 推流或 [startPlayingStream] 拉流后触发。
- 支持版本:2.10.0 及以上。
onRtcStats
public void onRtcStats(const ZegoRtcStatsInfo& info)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| info | const ZegoRtcStatsInfo& | 统计信息. |
详情
RTC 网络统计信息回调。
- 业务场景:当开发者希望分析本端的网络情况。
- 通知时机:调用 [startPublishingStream] 开始推 RTC 流后,会回调上行统计信息,调用 [startPlayingStream] 开始拉 RTC 或 L3 流后,会回调下行统计信息。默认回调周期为 3 秒。
- 支持版本:3.20.0 及以上。
- 使用限制:无。
- 注意事项:无。
onNetworkTimeSynchronized
public void onNetworkTimeSynchronized()ZegoExpressEventHandler.h- 支持版本:2.12.0 及以上。 当开发者调用 [createEngine] 后,内部完成网络时间同步时会触发此回调。
onRequestDumpData
public void onRequestDumpData()ZegoExpressEventHandler.h- 通知时机:当客户反馈问题后,ZEGO 希望用户转储数据用于分析音视频处理问题时会触发此回调。
- 支持版本:3.10.0 及以上。
onRequestUploadDumpData
public void onRequestUploadDumpData(std::string dumpDir, bool takePhoto)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| dumpDir | std::string | 转储数据路径 |
| takePhoto | bool | 在上传转储文件时是否需要拍照 |
- 通知时机:当客户反馈问题后,ZEGO 希望用户转储数据用于分析音视频处理问题时会触发此回调。
- 支持版本:3.11.0 及以上。
onStartDumpData
public void onStartDumpData(int errorCode)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| errorCode | int | 错误码 |
- 通知时机:当调用 [startDumpData] 后会触发此回调。
- 支持版本:3.10.0 及以上。
onStopDumpData
public void onStopDumpData(int errorCode, std::string dumpDir)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| errorCode | int | 错误码 |
| dumpDir | std::string | 转储数据路径 |
- 通知时机:当调用 [stopDumpData] 后会触发此回调。
- 支持版本:3.10.0 及以上。
onUploadDumpData
public void onUploadDumpData(int errorCode)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| errorCode | int | 错误码 |
- 通知时机:当调用 [uploadDumpData] 后,SDK 执行上传任务后会触发此回调。
- 支持版本:3.10.0 及以上。
onScreenCaptureExceptionOccurred
public void onScreenCaptureExceptionOccurred(ZegoScreenCaptureExceptionType exceptionType)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| exceptionType | ZegoScreenCaptureExceptionType | 采集源异常类型。 |
详情
移动端屏幕采集错误通知。
- 通知时机:移动端屏幕开始采集后产生异常会触发此回调。
- 支持版本:3.6.0 及以上。
- 使用限制:仅对 Android 和 iOS 系统生效。
- 注意事项:调用接口 [setEventHandler] 设置后该回调才生效。
onScreenCaptureStart
public void onScreenCaptureStart()ZegoExpressEventHandler.h移动端屏幕采集开始通知。
- 通知时机:调用 [startScreenCapture] 后,成功开始屏幕采集会触发此回调,失败会触发 [onScreenCaptureExceptionOccurred]。
- 支持版本:3.16.0 及以上。
- 使用限制:仅对 Android 和 iOS 系统生效。
- 注意事项:调用接口 [setEventHandler] 设置后该回调才生效。
IZegoExpressEngine
Declared in ZegoExpressInterface.h
方法
setEventHandler
public void setEventHandler(std::shared_ptr<IZegoEventHandler> eventHandler)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| eventHandler | std::shared_ptr<IZegoEventHandler> | 事件通知回调。传 [nullptr] 则清空已设置的回调。开发者应根据自身业务场景,监听相应的回调。SDK 主要的回调函数都在这里。 |
详情
设置事件通知回调,用于监听如 engine 状态变化、room 状态变化等回调。
- 调用时机:在 [createEngine] 后。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:调用此函数或 [createEngine] 设置了回调后,除非调用此函数清空回调,否则再次设置一个回调将不生效。在调用 [destroyEngine] 销毁引擎之后,该回调会失效,在下一次 [createEngine] 后需要重新设置。
setRoomScenario
public void setRoomScenario(ZegoScenario scenario)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| scenario | ZegoScenario | 房间场景。 |
详情
开发者可设置房间的使用场景,SDK 会针对不同的场景采取不同的优化策略,以便获取更优的效果;此函数的作用与 [createEngine] 的 [profile] 配置中的 [scenario] 参数完全一致。
- 业务场景:此函数适用于多种音视频业务场景的 App,例如有 1v1 音视频通话场景和秀场直播场景;通过此函数可以实现在不销毁引擎 [destroyEngine] 的前提下切换场景。
- 调用时机:必须在调用 [createEngine] 之后且调用 [loginRoom] 之前设置。
- 支持版本:3.0.0 及以上。
- 使用限制:一旦登录了房间就不再允许修改房间场景,若需要修改场景需要先退出房间,若登录了多个房间则需要退出所有房间后才能修改。
- 注意事项: 1. 同一个房间内的用户建议使用同一种房间场景以获得最佳效果。 2. 设置场景会影响音视频码率、帧率、分辨率、编码类型、音频设备模式、路由、流控、3A、耳返等音视频配置,若开发者有特殊需求可以在设置房间场景后再调用其他各种 API 来设置上述配置。 3. 调用此函数将覆盖 [createEngine] 时指定的场景或上一次调用此函数设置的场景。 4. 调用此函数将覆盖你通过 [setVideoConfig], [setAudioConfig] 等 API 设置的音视频相关配置,因此建议先第一时间设置场景再通过其他 API 调整音视频配置。
uploadLog
public void uploadLog()ZegoExpressInterface.h默认情况下,SDK 会在 App 默认目录创建日志文件并打印,每个日志文件默认最大 5MB,三个日志文件循环覆盖写入。当调用此函数时 SDK 会自动将日志文件打包并上传到 ZEGO 服务器。
- 业务场景:开发者可在 App 提供业务上的“反馈”渠道,当用户反馈的问题属于 ZEGO SDK 时,可调用此函数将 SDK 的本地日志信息上传,并联系 ZEGO 技术支持协助定位用户问题。
- 调用时机:在 [createEngine] 后。
- 支持版本:1.1.0 及以上。
- 使用限制:限频每分钟1次。
- 注意事项:1.在调用本接口上传日志后,如果过快的调用 [destroyEngine] 或 退出 App,则可能存在失败的情况。建议等待几秒,等收到上传成功回调后,再调用 [destroyEngine] 或 退出 App。2.如果希望在 [createEngine] 之前调用,请调用 [submitLog] 接口。
uploadLog
public void uploadLog(ZegoUploadLogResultCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| callback | ZegoUploadLogResultCallback | 日志上传结果回调。 |
详情
默认情况下,SDK 会在 App 默认目录创建日志文件并打印,每个日志文件默认最大 5MB,三个日志文件循环覆盖写入。当调用此函数时 SDK 会自动将日志文件打包并上传到 ZEGO 服务器。
- 业务场景:开发者可在 App 提供业务上的“反馈”渠道,当用户反馈的问题属于 ZEGO SDK 时,可调用此函数将 SDK 的本地日志信息上传,并联系 ZEGO 技术支持协助定位用户问题。
- 调用时机:在 [createEngine] 后。
- 支持版本:2.4.0 及以上。
- 使用限制:限频每分钟1次。
- 注意事项:1. 在调用本接口上传日志后,如果过快的调用 [destroyEngine] 或 退出 App,则可能存在失败的情况。建议等待几秒,等收到上传成功回调后,再调用 [destroyEngine] 或 退出 App。2.如果希望在 [createEngine] 之前调用,请调用 [submitLog] 接口。
enableDebugAssistant
public void enableDebugAssistant(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启调试助手。 |
详情
开启后,SDK 将会打印日志到控制台,并且将会在 SDK 其他函数的调用发生问题时 UI 弹窗提示错误。
- 默认值:默认不开启。
- 调用时机:可在创建引擎 [createEngine] 后立刻调用此函数。
- 平台差异:弹窗提示功能仅支持 Android / iOS / macOS / Windows,而输出控制台日志功能支持全平台。
- 支持版本:2.17.0 及以上。
- 使用限制:无。
- 注意事项:请务必在 App 发布前确认此功能已关闭,以避免在正式版本中当发生错误时弹出 UI 提示。建议将此函数的 [enable] 参数与 App 的 DEBUG 变量相关联,即仅在 DEBUG 环境下开启调试助手。
callExperimentalAPI
public std::string callExperimentalAPI(std::string params)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| params | std::string | 传入的参数,格式为 JSON 字符串,具体可咨询 ZEGO 技术支持。 |
详情
ZEGO 通过此 API 提供 RTC 业务中的部分技术预览或特别定制功能,需要获取功能的使用或详情其详情可咨询 ZEGO 技术支持。
- 调用时机:在 [createEngine] 后。
- 支持版本:2.7.0 及以上。
返回值
返回的参数,格式为 JSON 字符串,具体可咨询 ZEGO 技术支持。
loginRoom
public void loginRoom(std::string roomID, ZegoUser user)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 房间 ID,不得为空,最大长度小于 128 字节的字符串。 注意事项: 1.房间 ID 由您自己定义。 2. 仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', ''。 3. 如果需要与 Web SDK 互通,请不要使用 '%'。 |
| user | ZegoUser | 用户对象实例,配置用户 ID、用户名。 注意事项:注意用户 ID 需要在相同的 appID 下全局唯一,否则会出现后登录的用户踢掉先登录的用户的情况。 |
详情
如果房间不存在,[loginRoom] 会创建并登录房间。 SDK 用"房间"概念来组织用户,用户必须首先登录某个房间,才能进行一系列关键操作,比如推流 [startPublishingStream]、拉流[startPlayingStream]、收发广播消息 [sendBroadcastMessage] 等。
- 业务场景:在同一个房间内用户可以进行直播、音视频通话等。
- 调用时机:在 [createEngine] 初始化 SDK 之后调用该函数。
- 相关回调: 1. 当用户开始登录房间、登录房间成功或登录房间失败后,将会触发 [onRoomStateChanged] (2.18.0 之前版本不支持,请使用 [onRoomStateUpdate]) 回调通知开发者当前用户连接房间的状态。 2. 登录同一个房间的不同用户可以得到以相同房间为单位的房间信令通知(例如:[onRoomUserUpdate], [onRoomStreamUpdate] 等),一个房间内的用户收不到另一个房间房间信令的通知。 3. 如果由于网络质量原因导致网络临时中断,SDK 内部会自动进行重连。可通过监听 [onRoomStateChanged] (2.18.0 之前版本不支持,请使用 [onRoomStateUpdate]) 回调获取本端当前房间连接状态的变化情况,同时同房间其他用户会接收到 [onRoomUserUpdate] 回调通知。详情请参考 https://doc-zh.zego.im/faq/reconnect 4. 一个房间发的消息(例如 [setStreamExtraInfo], [sendBroadcastMessage], [sendBarrageMessage], [sendCustomCommand] 等)在别的房间无法收到(例如 [onRoomStreamExtraInfoUpdate], [onIMRecvBroadcastMessage], [onIMRecvBarrageMessage], [onIMRecvCustomCommand] 等),目前 ZegoExpressEngine 未提供跨房间消息的能力。开发者可以集成 IM 的 SDK 来实现。
- 相关接口: 1. 可调用 [logoutRoom] 退出登录,如果没有退出登录而重复调用登录接口(roomID 和 user 保持相同的情况下),控制台会报错,打印错误码 1002001。 2. 如果需要登录多个房间,请在创建引擎前通过 [ZegoRoomMode] 选择多房间模式,然后调用 [loginRoom] 接口登录多房间。 3. 调用 [destroyEngine] 也会使用户自动退出登录。
- 支持版本:1.1.0 及以上。
- 使用限制:同一房间登录接口的调用频率 (QPS) 有一定限制,详情查阅 https://doc-zh.zego.im/article/7581 或联系 ZEGO 技术支持。
- 注意事项: 1. 使用不同 appID 的 App 不能互通。 2. SDK 支持拉相同 appID 下非同一个房间的流,即跨房间拉流。由于 SDK 的房间信令的相关回调通知是以相同房间为单位,当开发者想要跨房间拉流时,开发者需自行维护相关的消息及信令通知。 3. 强烈建议 userID 与业务 APP 的用户 ID 一一对应,即一个 userID 与一个真实用户是固定且唯一的,而不应该是以随机的 userID 的方式传给 SDK 的方式。因为唯一且固定的 userID 可以让 ZEGO 技术人员快速定位线上问题。 4. 首次因网络原因登录失败或者房间断开连接之后,SDK 重连默认时间为 20min。 隐私保护申明:请勿在此接口填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。
loginRoom
public void loginRoom(std::string roomID, ZegoUser user, ZegoRoomConfig config, ZegoRoomLoginCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 房间 ID,不得为空,最大长度小于 128 字节的字符串。 注意事项: 1.房间 ID 由您自己定义。 2. 仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', ''。 3. 如果需要与 Web SDK 互通,请不要使用 '%'。 |
| user | ZegoUser | 用户对象实例,配置用户 ID、用户名。 注意事项:注意用户 ID 需要在相同的 appID 下全局唯一,否则会出现后登录的用户踢掉先登录的用户的情况。 |
| config | ZegoRoomConfig | 房间进阶配置。 |
| callback | ZegoRoomLoginCallback | 本次登录结果的回调(2.18.0 及以上版本支持),如果需要详细的房间状态,请关注 [onRoomStateChanged] 回调。是否必填:否。默认值:nullptr。注意事项:如果因为网络问题导致多次重试连接,重试状态将不会通过此回调抛出。 |
详情
如果房间不存在,[loginRoom] 会创建并登录房间。 SDK 用"房间"概念来组织用户,用户必须首先登录某个房间,才能进行一系列关键操作,比如推流 [startPublishingStream]、拉流[startPlayingStream]、收发广播消息 [sendBroadcastMessage] 等。为了防止 App 被恶意用户模拟登录,可以在登录房间之前加上鉴权验证,即 [config] 参数传入的 ZegoRoomConfig 对象中的 [token] 参数。
- 业务场景:在同一个房间内用户可以进行直播、音视频通话等。
- 调用时机:在 [createEngine] 初始化 SDK 之后调用该函数。
- 相关回调: 1. 当用户开始登录房间、登录房间成功或登录房间失败后,将会触发 [onRoomStateChanged] (2.18.0 之前版本不支持,请使用 [onRoomStateUpdate]) 回调通知开发者当前用户连接房间的状态。 2. 登录同一个房间的不同用户可以得到以相同房间为单位的房间信令通知(例如:[onRoomUserUpdate], [onRoomStreamUpdate] 等),一个房间内的用户收不到另一个房间房间信令的通知。 3. 如果由于网络质量原因导致网络临时中断,SDK 内部会自动进行重连。可通过监听 [onRoomStateChanged] (2.18.0 之前版本不支持,请使用 [onRoomStateUpdate]) 回调获取本端当前房间连接状态的变化情况,同时同房间其他用户会接收到 [onRoomUserUpdate] 回调通知。详情请参考 https://doc-zh.zego.im/faq/reconnect 4. 一个房间发的消息(例如 [setStreamExtraInfo], [sendBroadcastMessage], [sendBarrageMessage], [sendCustomCommand] 等)在别的房间无法收到(例如 [onRoomStreamExtraInfoUpdate], [onIMRecvBroadcastMessage], [onIMRecvBarrageMessage], [onIMRecvCustomCommand] 等),目前 ZegoExpressEngine 未提供跨房间消息的能力。开发者可以集成 IM 的 SDK 来实现。
- 相关接口: 1. 可调用 [logoutRoom] 退出登录,如果没有退出登录而重复调用登录接口(roomID 和 user 保持相同的情况下),控制台会报错,打印错误码 1002001。 2. 如果需要登录多个房间,请在创建引擎前通过 [ZegoRoomMode] 选择多房间模式,然后调用 [loginRoom] 接口登录多房间。 3. 调用 [destroyEngine] 也会使用户自动退出登录。
- 支持版本:1.1.0 及以上。
- 使用限制:同一房间登录接口的调用频率 (QPS) 有一定限制,详情查阅 https://doc-zh.zego.im/article/7581 或联系 ZEGO 技术支持。
- 注意事项: 1. 使用不同 appID 的 App 不能互通。 2. SDK 支持拉相同 appID 下非同一个房间的流,即跨房间拉流。由于 SDK 的房间信令的相关回调通知是以相同房间为单位,当开发者想要跨房间拉流时,开发者需自行维护相关的消息及信令通知。 3. 强烈建议 userID 与业务 APP 的用户 ID 一一对应,即一个 userID 与一个真实用户是固定且唯一的,而不应该是以随机的 userID 的方式传给 SDK 的方式。因为唯一且固定的 userID 可以让 ZEGO 技术人员快速定位线上问题。 4. 首次因网络原因登录失败或者房间断开连接之后,SDK 重连默认时间为 20min。 隐私保护申明:请勿在此接口填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。
logoutRoom
public void logoutRoom(ZegoRoomLogoutCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| callback | ZegoRoomLogoutCallback | 本次登出房间结果的回调,如果需要详细房间状态,请关注 [onRoomStateChagned] 回调。是否必填:否。默认值:NULL。 |
详情
该接口会退出当前用户已登录的房间,若开启了多房间,则全部房间均会被退出。
- 业务场景:在同一个房间内用户可以进行直播、音视频通话等。
- 调用时机:登录房间成功后,若不再使用房间功能,用户可以调用函数 [logoutRoom]。
- 相关回调:调用此函数后会收到 [onRoomStateChanged] (2.18.0 之前版本不支持,请使用 [onRoomStateUpdate]) 回调通知成功退出房间,同时同房间其他用户会接收到 [onRoomUserUpdate] 回调通知(开启 isUserStatusNotify 配置的前提下)。
- 相关接口:用户可以调用 [loginRoom]、[switchRoom] 函数登录或更换房间。
- 支持版本:2.9.0 及以上。
- 使用限制:无。
- 注意事项:1. 退出房间会停止该用户的所有推拉流,引擎会停止,SDK 内部会主动停止本地预览。如果切换房间想保留预览能力,请使用 [switchRoom] 函数。2. 若用户未登录房间,调用该接口也会返回成功。
logoutRoom
public void logoutRoom(std::string roomID, ZegoRoomLogoutCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 房间 ID,最大长度为 128 字节的字符串。 注意事项: 1. 仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', ''。 2. 如果需要与 Web SDK 互通,请不要使用 '%'。 |
| callback | ZegoRoomLogoutCallback | 本次登出房间结果的回调,如果需要详细房间状态,请关注 [onRoomStateChagned] 回调。是否必填:否。默认值:NULL。 |
详情
该接口会退出房间名为 roomID 的房间。
- 业务场景:在同一个房间内用户可以进行直播、音视频通话等。
- 调用时机:登录房间成功后,若不再使用房间功能,用户可以调用函数 [logoutRoom]。
- 相关回调:调用此函数后会收到 [onRoomStateChanged] (2.18.0 之前版本不支持,请使用 [onRoomStateUpdate]) 回调通知成功退出房间,同时同房间其他用户会接收到 [onRoomUserUpdate] 回调通知(开启 isUserStatusNotify 配置的前提下)。
- 相关接口:用户可以调用 [loginRoom]、[switchRoom] 函数登录或更换房间。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:1. 退出房间会停止该用户的所有推拉流,引擎会停止,SDK 内部会主动停止本地预览。如果切换房间想保留预览能力,请使用 [switchRoom] 函数。2. 若用户登出房间,但传入 roomID 与已登录房间名不同,SDK 会返回失败。
switchRoom
public void switchRoom(std::string fromRoomID, std::string toRoomID, ZegoRoomConfig* config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| fromRoomID | std::string | 当前处于的房间 ID。 |
| toRoomID | std::string | 需要登录的下一个房间 ID。 |
| config | ZegoRoomConfig* | 房间进阶配置。 |
详情
使用此函数可以让用户快速从一个房间切换到另外一个房间。
- 业务场景:若需要快速切换到下一个房间,可调用此函数。
- 调用时机:登录房间成功后。
- 相关回调:当用户调用 [switchRoom] 函数时,将会触发 [onRoomStateChanged] (2.18.0 之前版本不支持,请使用 [onRoomStateUpdate]) 回调通知开发者当前用户连接房间的状态。
- 相关接口:用户可以调用 [logoutRoom] 函数退出房间。
- 支持版本:1.15.0 及以上。
- 使用限制:无。
- 注意事项: 1. 当调用此函数后,当前正在推或拉的所有流都将会停止(但本地预览不会停止)。 2. 为了防止 App 被恶意用户模拟登录,可以在切换房间之前加上鉴权验证,即 [config] 参数传入的 ZegoRoomConfig 对象中的 [token] 参数。此参数配置作用于即将切换过去的房间。 3. 3.5.0 版本开始支持多房间模式(使用函数 [setRoomMode] 设置 ZegoRoomMode 为 ZEGO_ROOM_MODE_MULTI_ROOM)。 4. 若登录房间 [loginRoom] 时传入了 Token 进行登录,则调用 [switchroom] 切换房间时,必须使用带有 config 参数的 [switchroom] 接口切换房间,并传入对应 Token 值。 隐私保护申明:请勿在此接口填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。
renewToken
public void renewToken(std::string roomID, std::string token)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 房间 ID。 |
| token | std::string | 需要更新的 token。 |
详情
当开发者收到 [onRoomTokenWillExpire] 之后,可使用此 API 更新 token 鉴权信息,保障后续 RTC 功能正常。
- 业务场景:Token 将要过期时使用。
- 调用时机:收到 [onRoomTokenWillExpire] 之后。
- 支持版本:2.8.0 及以上。
- 使用限制:无。
- 注意事项:Token 中包含用户的房间权限、推流权限、有效时间等重要信息,详情请参考 https://doc-zh.zego.im/article/10360 。
setRoomExtraInfo
public void setRoomExtraInfo(std::string roomID, std::string key, std::string value, ZegoRoomSetRoomExtraInfoCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 房间 ID。 |
| key | std::string | 附加消息键。 |
| value | std::string | 附加消息值。 |
| callback | ZegoRoomSetRoomExtraInfoCallback | 设置房间附加消息结果回调。 |
详情
用户调用此函数设置房间的附加消息。
- 业务场景:可以设置一些房间相关的业务属性,比如是否有人在上麦。
- 调用时机:登录房间成功后。
- 相关回调:相同房间内的其他用户会通过 [onRoomExtraInfoUpdate] 回调函数获得通知。
- 相关接口:无。
- 支持版本:1.13.0 及以上。
- 使用限制:关于此函数的使用限制,请参考 https://doc-zh.zego.im/article/7581 或联系 ZEGO 技术支持。
- 注意事项:key、value 的限制,请参考“使用限制”。新设置的 value 会覆盖旧的设置。
getRoomStreamList
public ZegoRoomStreamList getRoomStreamList(std::string roomID, ZegoRoomStreamListType streamListType)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 房间 ID。 |
| streamListType | ZegoRoomStreamListType | 获取类型 |
详情
获取房间内流列表。
- 业务场景:获取房间内流列表
- 调用时机:登录房间成功后。
- 相关接口:无。
- 支持版本:3.12.0 及以上。
- 注意事项:该接口是获取实时内部的流列表,在房间与服务断开链接的状态下,可能会不准确。请勿高频调用本接口。
返回值
返回的列表
startPublishingStream
public void startPublishingStream(std::string streamID, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID,长度不超过 256 的字符串。 注意事项: 1. 流 ID 由您自己定义。 2. 需要在整个 AppID 内全局唯一,若出现在同一个 AppID 内,不同的用户各推了一条流且流名相同,将会导致后推流的用户推流失败。 3. 仅支持数字,英文字符 和 '-', '_'。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
用户将自己本地的音视频流推送到 ZEGO RTC 服务器 或 CDN,同一房间的其他用户通过 "streamID" 或 CDN 拉流地址就可以拉取该音视频流进行观看。
- 业务场景:可以用于实时连麦、直播等场景下进行推流。
- 调用时机:调用 [loginRoom] 加入房间后调用该函数。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项: 1. 开始推流前,用户可选择调用 [setVideoConfig] 设置相关视频参数,调用 [startPreview] 进行视频预览。 2. 当推流成功之后,同房间内其他用户可通过监听 [onRoomStreamUpdate] 回调来获取流的新增情况。 3. 在网络质量不佳的情况下,用户推流可能出现中断,SDK 会尝试重连并推流(连接成功后 SDK 会自动进行推流),开发者可通过监听 [onPublisherStateUpdate] 事件来获知当前推流状态以及错误信息。详情请参考 https://doc-zh.zego.im/faq/reconnect 。
startPublishingStream
public void startPublishingStream(std::string streamID, ZegoPublisherConfig config, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID,长度不超过 256 的字符串。 注意事项: 1. 流 ID 由您自己定义。 2. 需要在整个 AppID 内全局唯一,若出现在同一个 AppID 内,不同的用户各推了一条流且流名相同,将会导致后推流的用户推流失败。 3. 仅支持数字,英文字符 和 '-', '_'。 |
| config | ZegoPublisherConfig | 推流进阶配置。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
用户将自己本地的音视频流推送到 ZEGO RTC 服务器 或 CDN,同一房间的其他用户通过 "streamID" 或 CDN 拉流地址就可以拉取该音视频流进行观看。
- 业务场景:可以用于实时连麦、直播等场景下进行推流。
- 调用时机:调用 [loginRoom] 加入房间后调用该函数。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项: 1. 开始推流前,用户可选择调用 [setVideoConfig] 设置相关视频参数,调用 [startPreview] 进行视频预览。 2. 当推流成功之后,同房间内其他用户可通过监听 [onRoomStreamUpdate] 回调来获取流的新增情况。 3. 在网络质量不佳的情况下,用户推流可能出现中断,SDK 会尝试重连并推流(连接成功后 SDK 会自动进行推流),开发者可通过监听 [onPublisherStateUpdate] 事件来获知当前推流状态以及错误信息。详情请参考 https://doc-zh.zego.im/faq/reconnect 4. 调用 [SetRoomMode] 函数选择多房间,必须明确指定房间 ID。
startPublishingStreamInScene
public void startPublishingStreamInScene(std::string streamID, ZegoPublishChannel channel, ZegoScenePublisherConfig config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID,长度不超过 256 的字符串。 注意事项: 1. 流 ID 由您自己定义。 2. 需要在整个 AppID 内全局唯一,若出现在同一个 AppID 内,不同的用户各推了一条流且流名相同,将会导致后推流的用户推流失败。 3. 仅支持数字,英文字符 和 '-', '_'。 |
| channel | ZegoPublishChannel | 推流通道。 |
| config | ZegoScenePublisherConfig | 场景推流进阶配置。 |
详情
用户将自己本地的音视频流推送到 ZEGO RTC 服务器。
- 业务场景:范围场景场景下推流。
- 调用时机:调用 [loginScene] 加入场景后调用该函数。
- 支持版本:3.0.0 及以上。
- 使用限制:无。
- 注意事项:无。
stopPublishingStream
public void stopPublishingStream(ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| channel | ZegoPublishChannel | 推流通道。 |
详情
用户停止发送本地的音视频流,房间内其他用户会收到流删除通知。
- 业务场景:可以用于实时连麦、直播等场景下停止推流。
- 调用时机:调用 [startPublishingStream] 开始推流后。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项: 1. 在停止推流之后,同房间内其他用户可通过监听 [onRoomStreamUpdate] 回调来收到流的删除通知。 2. 如果用户已经启动推流,在推送新流(与之前的 streamID 不同)之前,必须要调用此函数停止当前流的推送,否则新流推送会返回失败。 3. 在停止推流之后,开发者应该根据业务情况来决定是否需要停止本地预览。
setStreamExtraInfo
public void setStreamExtraInfo(std::string extraInfo, ZegoPublisherSetStreamExtraInfoCallback callback, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| extraInfo | std::string | 流附加信息,长度不超过1024的字符串。 |
| callback | ZegoPublisherSetStreamExtraInfoCallback | 设置流附加信息执行结果通知。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
可通过此函数设置当前推流的流附加信息。流附加信息是流 ID 的附加信息标识,不同于流 ID 在推流过程中不可修改,流附加信息可以在对应流 ID 的推流中途修改。开发者可根据流附加信息来实现流 ID 相关的可变内容的同步。
- 调用时机:在创建引擎 [createEngine] 之后,在推流 [startPublishingStream] 前后调用都可生效。
- 相关回调:结果会通过 [ZegoPublisherSetStreamExtraInfoCallback] 回调通知。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
startPreview
public void startPreview(ZegoCanvas canvas, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| canvas | ZegoCanvas | 启动预览时用于显示画面的视图,视图设置为 null 则不进行预览。 |
| channel | ZegoPublishChannel | 推流通道 |
详情
用户通过调用此函数可以看到自己本地的画面。
- 业务场景:可以用于实时连麦、直播等场景下的本地预览。
- 调用时机:调用 [createEngine] 后。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:1. 预览功能不需要先登录房间或推流,但是在退出房间之后 SDK 内部默认会主动停止预览。2. 可以通过再次调用此函数来切换视图或修改预览模式(ZegoViewMode)。用户只能在一个视图上预览,如果再次调用 [startPreview] 传入新的视图,则预览画面只会在新视图展现。3. 可以通过调用 [setVideoMirrorMode] 函数来设置预览画面的镜像模式,移动端默认开启预览画面的镜像效果。4. 调用此函数后,SDK 会启动音视频引擎,并尝试采集音频与视频。
startPreview
public void startPreview()ZegoExpressInterface.h在创建引擎之后,未推拉流之前,可以调用此函数开始音频采集。
- 业务场景:可以通过调用此函数配合引擎的声浪功能来检测音频设备是否正常。
- 调用时机:调用 [createEngine] 之后。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:1. 预览功能不需要先登录房间或推流,但是在退出房间之后 SDK 内部默认会主动停止预览。2. 调用此函数后,SDK 会启动音频引擎,并尝试采集音频。
stopPreview
public void stopPreview()ZegoExpressInterface.h当本地不需要预览时可调用此函数停止预览。
- 支持版本:1.1.0 及以上。
- 注意事项:停止预览不会影响推流、拉流功能。
stopPreview
public void stopPreview(ZegoPublishChannel channel)ZegoExpressInterface.hsetVideoConfig
public void setVideoConfig(ZegoVideoConfig config, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoVideoConfig | 视频配置,SDK 提供常用的分辨率、帧率和码率的组合值,也可自定义分辨率、帧率和码率。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
设置视频帧率、码率、视频采集分辨率、视频编码输出分辨率等视频配置。
- 业务场景:不同业务场景下的建议配置 https://doc-zh.zego.im/article/10365
- 默认值:默认视频采集分辨率为 360p,视频编码输出分辨率为 360p,码率为 600 kbps,帧率为 15 fps。
- 调用时机:调用 [createEngine] 之后。
- 支持版本:1.1.0 及以上。
- 使用限制:需要在 [startPreview] 前调用。在 [startPreview] 之后调用无法修改采集分辨率,仅支持修改编码分辨率、码率和帧率。
- 注意事项:移动端分辨率的宽高与 PC 端分辨率的宽高是相反的,例:移动端的 360p 的分辨率为 360x640,而 PC 端 360p 的分辨率为 640x360。
getVideoConfig
public ZegoVideoConfig getVideoConfig(ZegoPublishChannel channel)ZegoExpressInterface.hsetPublishDualStreamConfig
public void setPublishDualStreamConfig(const std::vector<ZegoPublishDualStreamConfig>& configList, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| configList | const std::vector<ZegoPublishDualStreamConfig>& | 配置信息。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
设置大小流配置。
- 调用时机:必须在调用 [createEngine] 之后, 先调用[ZegoExpressEngine > setVideoConfig] 中指定codecID为 ZegoVideoCodecIDH264DualStream 时生效。
- 支持版本:3.7.0 及以上。
- 使用限制:必须同时指定大流和小流参数才能生效, 设置大流, 小流分辨率比要一致。例如都为 4:3 。
- 注意事项:宽、高、分辨率以及码率都大于零才会生效。
setVideoMirrorMode
public void setVideoMirrorMode(ZegoVideoMirrorMode mirrorMode, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mirrorMode | ZegoVideoMirrorMode | 预览或推流的镜像模式。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
设置本地预览视频以及推送的视频是否开启镜像模式,具体镜像模式可以参考 https://doc-zh.zego.im/article/10365
- 调用时机:调用 [createEngine] 之后。
- 支持版本:1.1.0 及以上。
- 使用限制:只有 SDK 负责渲染时该设置才有效。
setAppOrientation
public void setAppOrientation(ZegoOrientation orientation, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| orientation | ZegoOrientation | 视频的朝向。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
设置视频的朝向,详细的介绍可参考文档 https://doc-zh.zego.im/faq/express_video_capture_rotation
- 业务场景:用户使用移动设备进行直播或视频通话时,可以根据现场设置不同的视频方向。
- 调用时机:调用 [createEngine] 之后。
- 支持版本:1.1.0 及以上。
- 使用限制:目前只支持 iOS 和 Android 平台。
setAudioConfig
public void setAudioConfig(ZegoAudioConfig config, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoAudioConfig | 音频质量配置。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
可通过此函数设置音频编码类型、码率、音频声道的组合值。若预设的值无法满足开发者的场景,开发者可自行根据业务要求设置符合的参数。
- 默认值:默认的音频配置参考 [ZegoAudioConfig] 的默认值。
- 调用时机:在创建引擎 [createEngine] 后,且在推流 [startPublishingStream] 前设置。
- 相关接口:[getAudioConfig]。
- 支持版本:1.3.4 及以上。
- 使用限制:无。
getAudioConfig
public ZegoAudioConfig getAudioConfig(ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| channel | ZegoPublishChannel | 推流通道。 |
详情
可通过此函数获取当前的音频编码类型、码率、音频声道的组合值。
- 调用时机:在创建引擎 [createEngine] 后。
- 相关接口:[setAudioConfig]。
- 支持版本:1.8.0 及以上。
- 使用限制:无。
返回值
音频质量配置。
setPublishStreamEncryptionKey
public void setPublishStreamEncryptionKey(std::string key, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| key | std::string | 加密密钥,注意密钥长度仅支持 16/24/32 字节。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
支持在推流中途调用此函数更新加密密钥。
- 调用时机:在创建引擎 [createEngine] 后,在推流 [startPublishingStream] 前后调用都可生效。
- 相关接口:调用 [stopPublishingStream] 或 [logoutRoom] 都将会清空加密密钥。
- 支持版本:1.19.0 及以上。
- 使用限制:该函数仅当向 Zego RTC 服务器推流时调用有效。
- 注意事项:需要先更新拉流端解密密钥后才能更新推流端加密密钥。
takePublishStreamSnapshot
public void takePublishStreamSnapshot(ZegoPublisherTakeSnapshotCallback callback, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| callback | ZegoPublisherTakeSnapshotCallback | 推流画面截图结果回调。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
对推流画面进行截图。
- 调用时机:在调用 [startPublishingStream] 或 [startPreview] 后调用此函数。
- 相关回调:截图结果会通过 [ZegoPublisherTakeSnapshotCallback] 回调。
- 相关接口:[takePlayStreamSnapshot]。
- 支持版本:1.17.0 及以上。
- 使用限制:无。
- 注意事项:截图的分辨率为 [setVideoConfig] 里设置的编码分辨率,若需改为采集分辨率,请调用 [setCapturePipelineScaleMode] 将采集缩放时机模式改为 [Post]。
takePublishStreamSnapshotByConfig
public void takePublishStreamSnapshotByConfig(ZegoPublisherTakeSnapshotConfig config, ZegoPublisherTakeSnapshotCallback callback, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoPublisherTakeSnapshotConfig | 推流画面截图配置 |
| callback | ZegoPublisherTakeSnapshotCallback | 推流画面截图结果回调。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
对推流画面进行截图。
- 调用时机:在调用 [startPublishingStream] 或 [startPreview] 后调用此函数。
- 相关回调:截图结果会通过 [ZegoPublisherTakeSnapshotCallback] 回调。
- 相关接口:[takePlayStreamSnapshot]。
- 支持版本:3.22.0 及以上。
- 使用限制:无。
- 注意事项:截图的分辨率为 [setVideoConfig] 里设置的编码分辨率,若需改为采集分辨率,请调用 [setCapturePipelineScaleMode] 将采集缩放时机模式改为 [Post]。
mutePublishStreamAudio
public void mutePublishStreamAudio(bool mute, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mute | bool | 是否停止发送音频流;true 表示不发送音频流;false 表示发送音频流;默认为 false。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
推流时可调用此函数实现不推音频数据流,本地仍会采集和处理音频,但向网络发送静音帧数据包。
- 业务场景:用户不希望推出任何音频数据时,可以调用该接口。该接口不影响 [onBeforeAudioPrepAudioData]。
- 调用时机:在创建引擎 [createEngine] 后调用生效。
- 相关回调:如果在本地设置了停止发送音频流,拉本地流的远端用户可以通过监听 [onRemoteMicStateUpdate] 回调收到
Mute的状态变更通知。 - 相关接口:[mutePublishStreamVideo]。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
mutePublishStreamVideo
public void mutePublishStreamVideo(bool mute, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mute | bool | 是否停止发送视频流;true 表示只发送音频流不发送视频流;false 表示同时发送音频和视频流;默认为 false。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
推流时可调用此函数实现不推视频流,本地摄像头仍能正常工作,能正常采集,预览和处理视频画面,但不向网络发送视频数据。
- 调用时机:在创建引擎 [createEngine] 后调用生效。
- 相关回调:如果在本地设置了停止发送视频流,拉本地流的远端用户可以通过监听 [onRemoteCameraStateUpdate] 回调收到
Mute的状态变更通知。 - 相关接口:[mutePublishStreamAudio]。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
setStreamAlignmentProperty
public void setStreamAlignmentProperty(int alignment, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| alignment | int | 是否开启精准对齐功能,1 表示开启,0 表示关闭。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
调用本接口开启或关闭流对齐功能。
- 业务场景:常用于 KTV 等需要流对齐的场景。
- 默认值:若未调该接口,默认为 不对齐
- 调用时机:在创建引擎 [createEngine] 后。
- 相关接口:[startMixerTask]、[startAutoMixerTask]。
- 支持版本:2.11.0 及以上。
- 注意事项:如果在拉多路流或者混流时需要通过网络时间对各流进行对齐,推流需调用 [startPublishingStream] 且 [ZegoPublisherConfig] 中的 [forceSynchronousNetworkTime] 为1,开启网络时间同步。
enableTrafficControl
public void enableTrafficControl(bool enable, int property, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否使用流量控制;true 表示开启流控;false 表示关闭流控;默认为 true。 |
| property | int | 流量控制的属性,位掩码格式。具体可设置为 [ZegoTrafficControlProperty] 的属性的一个或多个枚举组合。默认为 AdaptiveFPS。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
开启流量控制可以使 SDK 根据当前上行网络环境状况,或者在1 对1 互动场景下根据对方下行网络环境状况,调节音视频推流码率大小,以保障效果流畅。同时,可进一步指定流量控制的属性来调整相应的控制策略。
- 默认值:默认开启。
- 调用时机:在创建引擎 [createEngine] 后,在推流 [startPublishingStream] 之前调用生效。
- 支持版本:1.5.0 及以上。
- 使用限制:仅支持 RTC 推流。
setMinVideoBitrateForTrafficControl
public void setMinVideoBitrateForTrafficControl(int bitrate, ZegoTrafficControlMinVideoBitrateMode mode, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| bitrate | int | 最低视频码率,单位为 kbps。 |
| mode | ZegoTrafficControlMinVideoBitrateMode | 低于最低码率时的视频发送模式。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
设置流量控制时视频码率达到最低阈值时的控制策略。当码率低于最低阈值时,可以选择不发送视频数据或者以极低帧率发送。
- 默认值:无视频码率最低阈值的控制效果。
- 调用时机:在创建引擎 [createEngine] 后,在推流 [startPublishingStream] 前调用生效。
- 相关接口:[enableTrafficControl]。
- 支持版本:1.1.0 及以上。
- 使用限制:必须开启流量控制 [enableTrafficControl]。
setMinVideoFpsForTrafficControl
public void setMinVideoFpsForTrafficControl(int fps, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| fps | int | 流量控制的最低视频帧率阈值,单位为 fps。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
开启流量控制 [enableTrafficControl],并且它的参数 [property] 包含属性 AdaptiveFPS 后,视频的最低帧率不会低于 [setMinVideoFpsForTrafficControl] 接口设置的值, 0 值表示不限制。
- 默认值:无视频帧率最低阈值的控制效果。
- 调用时机:在创建引擎 [createEngine] 后调用生效。
- 相关接口:[enableTrafficControl]。
- 支持版本:2.17.0 及以上。
- 使用限制:必须开启流量控制 [enableTrafficControl],并且它的参数 [property] 必须包含属性 AdaptiveFPS,具体可以参考 [ZegoTrafficControlProperty]。
- 注意事项:如果需要取消该设置值的限制可以设置为 0。
setMinVideoResolutionForTrafficControl
public void setMinVideoResolutionForTrafficControl(int width, int height, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| width | int | 流量控制的最低视频分辨率的宽。 |
| height | int | 流量控制的最低视频分辨率的高。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
开启流量控制 [enableTrafficControl],并且它的参数 [property] 包含属性 AdaptiveResolution 时,视频的最低分辨率不会低于 [setMinVideoResolutionForTrafficControl] 接口设置的值。 0 值表示不限制。
- 默认值:无视频分辨率最低阈值的控制效果。
- 调用时机:在创建引擎 [createEngine] 后调用生效。
- 相关接口:[enableTrafficControl]。
- 支持版本:2.17.0 及以上。
- 使用限制:必须开启流量控制 [enableTrafficControl],并且它的参数 [property] 必须包含属性 AdaptiveResolution,具体可以参考 [ZegoTrafficControlProperty]。
- 注意事项:如果需要取消该设置值的限制可以设置分辨率宽高值为 0。
setTrafficControlFocusOn
public void setTrafficControlFocusOn(ZegoTrafficControlFocusOnMode mode, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mode | ZegoTrafficControlFocusOnMode | 选择 LOCAL_ONLY 时,只关注本地网络状况。选择 REMOTE 时,不仅关注本地网络,同时也兼顾远端网络。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
通过该接口控制是否因为远端网络状况差而启动流量控制。
- 默认值:默认关闭。
- 调用时机:在创建引擎 [createEngine] 后,在推流 [startPublishingStream] 前调用生效。
- 相关接口:[enableTrafficControl]。
- 支持版本:2.4.0 及以上。
- 使用限制:必须开启流量控制 [enableTrafficControl]。
setCaptureVolume
public void setCaptureVolume(int volume)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| volume | int | 音量增益百分比,范围为 0 ~ 200,默认值为 100,表示为设备原始采集音量的 100%. |
详情
此函数用于在设备采集音量的基础上做增益处理,本端用户可控制往远端发送音频流的声音大小。
- 默认值:默认为 100。
- 调用时机:在创建引擎 [createEngine] 后。
- 相关接口:设置拉流音量 [setPlayVolume]。
- 支持版本:1.13.0 及以上。
- 使用限制:在推流途中可以动态设置采集音量。
getCaptureVolume
public int getCaptureVolume()ZegoExpressInterface.h此函数用于获取采集声音大小。
- 调用时机:在创建引擎 [createEngine] 后。
- 相关接口:设置拉流音量 [setCaptureVolume]。
- 支持版本:1.13.0 及以上。
音量增益百分比
setAudioCaptureStereoMode
public void setAudioCaptureStereoMode(ZegoAudioCaptureStereoMode mode)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mode | ZegoAudioCaptureStereoMode | 双声道采集模式。 |
详情
此函数用于设置音频的采集声道模式,当开发者开启双声道采集后,使用专门的双声道采集设备,可以采集到双声道的音频数据并进行推流。
- 业务场景:在一些比较专业的场景里,用户对声音的效果尤为敏感,比如语音电台、乐器演奏,此时就需要对双声道和高音质的支持。
- 默认值:默认 None,即单声道采集。
- 调用时机:需要在 [createEngine] 之后,在 [startPublishingStream]、 [startPlayingStream]、 [startPreview]、 [createMediaPlayer]、 [createAudioEffectPlayer] 和 [createRealTimeSequentialDataManager] 之前调用才有效。
- 相关接口:当推流时需要同时通过 [setAudioConfig] 函数开启双声道音频编码功能。
- 支持版本:1.15.0 及以上 (iOS/Android/Windows/OHOS);自 2.16.0 开始支持 macOS。
- 使用限制:如果需要开启双声道采集,还需要满足如下条件:对于 iOS/Android 来说,需要外接支持双声道采集的音频设备并且处于媒体音量下。对于 macOS 来说需要处于媒体音量下。对于 Windows 来说需要外接支持双声道采集的音频设备。
addPublishCdnUrl
public void addPublishCdnUrl(std::string streamID, std::string targetURL, ZegoPublisherUpdateCdnUrlCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID。 |
| targetURL | std::string | CDN 转推地址,支持的转推地址格式有 rtmp, rtmps. |
| callback | ZegoPublisherUpdateCdnUrlCallback | 更新 CDN 转推结果通知。 |
详情
将 ZEGO RTC 服务器的音视频流转推至自定义的 CDN 内容分发网络,延迟高但是支持高并发拉流。
- 业务场景:1. 常用于对延迟没有特别高要求的大规模直播场景。2. 由于 ZEGO RTC 服务器本身可配置支持 CDN 内容分发网络,此函数主要为自身拥有 CDN 内容分发服务的开发者使用。3. 此函数支持动态转推至多个 CDN 内容分发网络,因此开发者可以使用此函数来作为 CDN 内容分发服务的一个容灾方案。
- 调用时机:在调用 [createEngine] 函数创建引擎后。
- 相关接口:删除转推至 CDN 的 URL [removePublishCdnUrl],结果回调函数 [onPublisherRelayCDNStateUpdate]。
- 支持版本:1.1.0 及以上。
- 使用限制:当调用 [enablePublishDirectToCDN] 函数设置为 true 将流直推到 CDN 时,再调用本函数将无效。
- 注意事项:删除转推至 CDN 的 URL 需要调用 [removePublishCdnUrl],调用 [stopPublishingStream] 不会删除转推至 CDN 的 URL。
addPublishCdnUrl
public void addPublishCdnUrl(std::string streamID, std::string targetURL, int timeout, ZegoPublisherUpdateCdnUrlCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID。 |
| targetURL | std::string | CDN 转推地址,支持的转推地址格式有 rtmp, rtmps. |
| timeout | int | 超时时间。如果在时间内没有开始转推就回调通知。默认为0,表示不超时,有效范围[5,600],单位秒。小于0会被重置为0,1到4会被重置为5,大于600会被重置为600。 |
| callback | ZegoPublisherUpdateCdnUrlCallback | 更新 CDN 转推结果通知。 |
详情
将 ZEGO RTC 服务器的音视频流转推至自定义的 CDN 内容分发网络,延迟高但是支持高并发拉流。
- 业务场景:1. 常用于对延迟没有特别高要求的大规模直播场景。2. 由于 ZEGO RTC 服务器本身可配置支持 CDN 内容分发网络,此函数主要为自身拥有 CDN 内容分发服务的开发者使用。3. 此函数支持动态转推至多个 CDN 内容分发网络,因此开发者可以使用此函数来作为 CDN 内容分发服务的一个容灾方案。
- 调用时机:在调用 [createEngine] 函数创建引擎后。
- 相关接口:删除转推至 CDN 的 URL [removePublishCdnUrl],结果回调函数 [onPublisherRelayCDNStateUpdate]。
- 支持版本:1.1.0 及以上。
- 使用限制:当调用 [enablePublishDirectToCDN] 函数设置为 true 将流直推到 CDN 时,再调用本函数将无效。
- 注意事项:删除转推至 CDN 的 URL 需要调用 [removePublishCdnUrl],调用 [stopPublishingStream] 不会删除转推至 CDN 的 URL。
removePublishCdnUrl
public void removePublishCdnUrl(std::string streamID, std::string targetURL, ZegoPublisherUpdateCdnUrlCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID。 |
| targetURL | std::string | CDN 转推地址,支持的转推地址格式有 rtmp. |
| callback | ZegoPublisherUpdateCdnUrlCallback | 更新 CDN 转推结果通知。 |
详情
当已经通过 [addPublishCdnUrl] 添加了某个 CDN 转推地址,需要将流停止转推时调用此函数。
- 调用时机:在调用 [createEngine] 函数创建引擎后,不需要继续转推至 CDN 时。
- 相关接口:增加转推至 CDN 的 URL [addPublishCdnUrl],结果回调函数 [onPublisherRelayCDNStateUpdate]。
- 支持版本:1.1.0 及以上。
- 使用限制:当调用 [enablePublishDirectToCDN] 函数设置为 true 将流直推到 CDN 时,再调用本函数将无效。
- 注意事项:此函数并不会停止推往 ZEGO RTC 服务器的音视频流。
enablePublishDirectToCDN
public void enablePublishDirectToCDN(bool enable, ZegoCDNConfig config, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启直推 CDN;true 表示开启直推 CDN;false 表示不开启直推 CDN;默认为 false。 |
| config | ZegoCDNConfig | CDN 配置,若为 null 则使用 Zego 的后台配置。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
是否不经过 ZEGO RTC 服务器直接推流到 CDN。
- 业务场景:常用于对延迟没有特别高要求的大规模直播场景。
- 默认值:默认为 false,不开启直推。
- 调用时机:在创建引擎 [createEngine]后,开始推流[startPublishingStream] 前。
- 相关接口:动态转推至 CDN 函数 [addPublishCdnUrl]、[removePublishCdnUrl]。
- 支持版本:1.5.0 及以上。
- 注意事项:直推 CDN 功能在网络传输过程中不经过 ZEGO 实时音视频云,无法使用 ZEGO 的超低延迟音视频服务。
setPublishWatermark
public void setPublishWatermark(ZegoWatermark watermark, bool isPreviewVisible, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| watermark | ZegoWatermark | 水印布局左上角为坐标系原点,区域不能超过编码分辨率设置的大小。若为空表示取消水印。 |
| isPreviewVisible | bool | 是否本地预览能看见水印。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
给推流画面设置水印。
- 业务场景:常用于标识推流来源的场景。
- 调用时机:在调用 [createEngine] 函数创建引擎后。
- 支持版本:1.1.0 及以上。
- 注意事项:水印的布局不能超出推流的视频编码分辨率。可在推流前或推流中途任意时刻设置。
setSEIConfig
public void setSEIConfig(ZegoSEIConfig config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoSEIConfig | SEI 类型配置。默认使用 ZEGO 定义的 SEI。 |
详情
SDK 默认使用 ZEGO 自行定义的 SEI 类型包装数据,且此类型是 SEI 标准未规定的类型。当开发者需要使用第三方解码器解码,会导致解不出正确的 SEI,需要调用 [setSEIConfig] 函数更换 SDK 发送 SEI 的类型为 UserUnregister 类型。
- 业务场景:当开发者使用第三方解码器解码 SEI 时需要执行该函数。
- 调用时机:在创建引擎 [createEngine]后,开始推流[startPublishingStream] 前。
- 支持版本:1.18.0 及以上。
- 使用限制:无。
sendSEI
public void sendSEI(const unsigned char* data, unsigned int dataLength, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | const unsigned char* | SEI 内容。 |
| dataLength | unsigned int | SEI 内容长度。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
在推流传输音视频流数据同时,发送流媒体增强补充信息来同步一些其他附加信息。
- 业务场景:一般用于如同步音乐歌词或视频画面精准布局等场景,可选择使用发送 SEI。
- 调用时机:在开始推流[startPublishingStream] 后。
- 相关接口:当推流方发送 SEI 后,拉流方可通过监听 [onPlayerRecvSEI] 的回调获取 SEI 内容。
- 支持版本:1.1.0 及以上。
- 使用限制:1 秒钟不要超过30次,SEI 数据长度限制为 4096 字节。
- 注意事项:1. 由于网络问题有可能丢帧,因此 SEI 信息也有可能丢,为解决这种情况,应该在限制频率内多发几次。2. 即使调用 [enableCamera] 接口关闭摄像头或通过 [mutePublishStreamVideo] 停止发送视频数据,SEI 仍可发送成功;只要拉流端不调用 [mutePlayStreamVideo] 的接口停止拉音频数据,仍可正常接收 SEI。3. 若 SDK 不支持视频模块,但支持 SEI 功能模块,SEI 信息仍可正常发送。
sendSEISyncWithCustomVideo
public void sendSEISyncWithCustomVideo(const unsigned char* data, unsigned int dataLength, unsigned long long timeStampNs, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | const unsigned char* | SEI 内容。 |
| dataLength | unsigned int | SEI 内容长度。 |
| timeStampNs | unsigned long long | 视频帧的索引时间,UNIX 时间戳,单位为纳秒。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
在使用自定义视频采集时,推流传输视频流数据同时,发送流媒体增强补充信息来同步一些其他附加信息,该信息与当前视频帧同步。
- 业务场景:一般用于需要播放内容与视频帧强同步的场景,比如视频k歌,视频跟歌词强同步;或者需要精确到帧级别做策略处理的场景。
- 调用时机:要保证 SEI 与当前视频帧同步,必须在发送视频帧数据前调用。
- 相关接口:当推流方发送 SEI 后,拉流方可通过监听 [onPlayerRecvSEI] 的回调获取 SEI 内容。
- 支持版本:2.15.0 及以上。
- 使用限制:仅用于自定义视频采集;仅支持视频驱动的 SEI 发送;应该尽量避免连续调用此接口发送 SEI;要保证 SEI 与当前视频帧同步,必须与发送自定义视频帧数据接口保持在同一个线程;SEI 数据长度限制为 4096 字节。
- 注意事项:发送的 SEI 信息跟随视频帧,由于网络问题有可能丢帧,这个时候 SEI 会跟随下一帧视频数据,因此为了保持 SEI 与视频帧同步,应该尽量避免连续发送 SEI;仅在 Android 平台使用 SurfaceTexture 时,需要传时间戳参数 timeStampNs,其他情况该参数无效。
sendAudioSideInfo
public void sendAudioSideInfo(const unsigned char* data, unsigned int dataLength, double timeStampMs, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | const unsigned char* | 音频次要信息内容。 |
| dataLength | unsigned int | 音频次要信息内容长度。 |
| timeStampMs | double | 时间戳,来源于自定义音频处理,单位为毫秒。如果时间戳填0,会跟随当前准备发送的帧发送。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
在推流传输音频数据同时,发送音频次要信息来同步一些其他附加信息。
- 业务场景:在轮唱场景中,需要音频数据通道携带附带信息,例如时间戳帮助伴奏对齐,以及需要知道当前演唱的这一段用户是谁,需不需要放大音量等。
- 调用时机:在开始推流[startPublishingStream] 后。
- 相关接口:当推流方发送音频次要信息后,拉流方可通过监听 [onPlayerRecvAudioSideInfo] 的回调获取音频次要信息内容。
- 支持版本:2.19.0 及以上。
- 使用限制:1. 该函数仅当向 Zego RTC 服务器推流时调用有效并且从 RTC 服务器转推流到 CDN 时也是无效的。2. 音频次要信息数据长度限制为 1024 字节。
- 注意事项:1. 音频次要信息受音频数据驱动,所以必须要推送音频数据(当通过接口 [setEngineConfig] 开启了 DTX 功能后,音频次要信息可能会丢失)。2. 由于网络问题音频次要信息有可能会缺失,SDK 负责传输但是不保证可靠性。
enableHardwareEncoder
public void enableHardwareEncoder(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启硬件编码;true 表示开启硬编;false 表示关闭硬编;默认为 false。 |
详情
推流时是否采用硬件编码的开关,开启硬解编码后会使用 GPU 进行编码,降低 CPU 使用率。
- 调用时机:在推流前设置才能生效,如果在推流后设置,停推后重新推流可以生效。
- 支持版本:1.1.0 及以上。
- 注意事项:由于少部分机型设备硬编支持不是特别好,SDK 默认使用软件编码的方式。若开发者在某些机型测试时发现推大分辨率音视频流时设备发热严重,可考虑调用此函数开启硬编的方式。
setCapturePipelineScaleMode
public void setCapturePipelineScaleMode(ZegoCapturePipelineScaleMode mode)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mode | ZegoCapturePipelineScaleMode | 采集缩放时机。 |
- 调用时机:此函数需要在调用 [createEngine] 之后,调用预览 [startPreview] 或推流 [startPublishingStream] 前设置有效。
- 支持版本:1.1.0 及以上。
- 注意事项:主要影响是当采集分辨率与编码分辨率不同的时候,是否影响本地预览情况。
setDummyCaptureImagePath
public void setDummyCaptureImagePath(std::string filePath, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| filePath | std::string | 图片路径 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
设置关闭摄像头时所推静态图片的路径。开始正常推流后,调用 enableCamera(false) 时会开始推静态图片,调用 enableCamera(true) 时会结束推静态图片。
- 业务场景:开发者希望关闭摄像头时,显示静态图片。例如,主播退后台的时候,会主动关闭摄像头,此时观众侧需要展示主播暂时离开的图片。
- 调用时机:初始化引擎之后,关闭摄像头前调用本 API 进行参数配置,在关闭摄像头后,即可推静态图片。
- 平台差异: 1. Windows:直接填写图片位置,如"D://dir//image.jpg"。 2. iOS/macOS:如果是完整路径则添加 "file:" 前缀,如:@"file:/var/image.png"。资产则添加 "asset:" 前缀,如:@"asset"。 3. Android:如果是完整路径则添加 "file:" 前缀,如:"file:/sdcard/image.png"。“assets” 目录下的图片则添加 "asset:" 前缀,如:"asset.png"。 4. Flutter:如果是绝对路径则添加 "file:" 前缀,如:"file:/sdcard/image.png"。“assets” 资源中的图片则添加 "flutter-asset://" 前缀,如:"flutter-asset://assets/watermark.png"。 5. UniApp:仅支持绝对路径,需要添加 "file:" 前缀,如:"file:/sdcard/image.png"。
- 支持版本:2.9.0 及以上。
- 使用限制: 1. 图片支持类型为 JPEG/JPG、PNG、BMP、HEIF。 2. 该接口只对 SDK 视频采集有效,对自定义视频采集不生效。 3. 不支持图片路径是网络链接。
- 注意事项: 1. 本地预览无法看到该静态图片。 2. 外部滤镜、水印、镜像、截图都不会生效。 3. 如果图片宽高比与设定的编码宽高比不一致,会按照编码宽高比进行裁剪。 4. 推音频流一定要再次调用该接口并把图片路径设置为空,避免产生视频计费。
setDummyCaptureImageParams
public void setDummyCaptureImageParams(ZegoDummyCaptureImageParams params, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| params | ZegoDummyCaptureImageParams | 虚拟采集图片参数。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
设置关闭摄像头时所推静态图片的参数。开始正常推流后,调用 enableCamera(false) 时会开始推静态图片,调用 enableCamera(true) 时会结束推静态图片。
- 业务场景:开发者希望关闭摄像头时,显示静态图片。例如,主播退后台的时候,会主动关闭摄像头,此时观众侧需要展示主播暂时离开的图片。
- 调用时机:初始化引擎之后,关闭摄像头前调用本 API 进行参数配置,在关闭摄像头后,即可推静态图片。
- 平台差异: 1. Windows:直接填写图片位置,如"D://dir//image.jpg"。 2. iOS/macOS:如果是完整路径则添加 "file:" 前缀,如:@"file:/var/image.png"。资产则添加 "asset:" 前缀,如:@"asset"。 3. Android:如果是完整路径则添加 "file:" 前缀,如:"file:/sdcard/image.png"。“assets” 目录下的图片则添加 "asset:" 前缀,如:"asset.png"。 4. Flutter:如果是绝对路径则添加 "file:" 前缀,如:"file:/sdcard/image.png"。“assets” 资源中的图片则添加 "flutter-asset://" 前缀,如:"flutter-asset://assets/watermark.png"。 5. UniApp:仅支持绝对路径,需要添加 "file:" 前缀,如:"file:/sdcard/image.png"。
- 支持版本:3.19.0 及以上。
- 使用限制: 1. 图片支持类型为 JPEG/JPG、PNG、BMP、HEIF。 2. 该接口只对 SDK 视频采集有效,对自定义视频采集不生效。 3. 不支持图片路径是网络链接。
- 注意事项: 1. 本地预览无法看到该静态图片。 2. 外部滤镜、水印、镜像、截图都不会生效。 3. 如果图片宽高比与设定的编码宽高比不一致,会按照编码宽高比进行裁剪。 4. 推音频流一定要再次调用该接口并把图片路径设置为空,避免产生视频计费。
enableH265EncodeFallback
public void enableH265EncodeFallback(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启 H.265 编码自动降级到 H.264 编码;true 表示开启;false 表示关闭;默认为 true |
详情
使用 H.265 编码方式推流时,是否开启在异常情况下 H.265 编码自动降级到 H.264 编码的策略;开启自动降级后,当不支持 H.265 编码或编码 H.265 失败时,SDK 内部会尝试降级使用 H.264 编码进行推流;关闭自动降级后,当不支持 H.265 编码或编码 H.265 失败时,直接推流失败。
- 业务场景:在多人连麦直播、秀场直播场景下,使用 H265 编码推流,达到不降低画质的情况下节省 CDN 流量的目的。
- 默认值:没有调用该接口时,默认为是,即开启 H.265 编码自动降级到 H.264 编码。
- 调用时机:创建引擎后,调用 [startPublishingStream] 函数推流前。
- 相关回调:开启 H.265 编码自动降级到 H.264 编码策略后,编码方式变化时会触发 [onPublisherVideoEncoderChanged] 回调。
- 支持版本:2.12.0 及以上。
- 注意事项:当推流过程中发生从 H.265 降级到 H.264 编码时,如果正在进行本地视频录制或云录制,会导致产生多个录制文件,需要对此做处理。
isVideoEncoderSupported
public bool isVideoEncoderSupported(ZegoVideoCodecID codecID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| codecID | ZegoVideoCodecID | 视频编码类型。是否必填:是。 |
详情
是否支持指定视频编码,主要取决于以下几个方面:硬件型号是否支持硬编、硬件型号性能是否支持软编、SDK 是否带该编码模块。
- 调用时机:创建引擎后。
- 支持版本:2.12.0 及以上。
- 注意事项:建议用户在进行 H.265 编码推流前,先调用本接口获取 H.265 编码支持能力,如果不支持,可以采用其他编码进行推流,比如 H.264。在移动端,SDK 仅支持 H.265 硬件编码,且受机型和硬件能力影响。
返回值
是否支持指定视频编码。取值范围:true 表示支持,可以使用该编码进行推流;false 表示不支持,不可以使用该编码进行推流。
isVideoEncoderSupported
public int isVideoEncoderSupported(ZegoVideoCodecID codecID, ZegoVideoCodecBackend codecBackend)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| codecID | ZegoVideoCodecID | 视频编码类型。是否必填:是。 |
| codecBackend | ZegoVideoCodecBackend | 编码器的后端实现。是否必填:是。 |
详情
是否支持指定视频编码,主要取决于以下几个方面:硬件型号是否支持硬编、硬件型号性能是否支持软编、SDK 是否带该编码模块。
- 调用时机:创建引擎后。
- 支持版本:3.0.0 及以上。
- 注意事项:建议用户在进行 H.265 编码推流前,先调用本接口获取 H.265 编码支持能力,如果不支持,可以采用其他编码进行推流,比如 H.264。在移动端,SDK 仅支持 H.265 硬件编码,且受机型和硬件能力影响。
返回值
是否支持指定视频编码格式;0 表示不支持,不可以使用该编码格式进行推流;1 表示支持,可以使用该编码格式进行推流;2 表示未确认,建议稍后再调用本接口。
setAppOrientationMode
public void setAppOrientationMode(ZegoOrientationMode mode)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mode | ZegoOrientationMode | 视频的朝向模式。 |
详情
为了简化移动端开发者处理视频画面旋转的复杂度,SDK 支持设置多种视频朝向模式,开发者可以根据场景需求选择不同的模式。
- 业务场景:使用移动设备进行直播或者视频通话的场景。
- 默认值:自定义模式。
- 调用时机:此函数需要在调用 [createEngine] 之后,调用预览 [startPreview] 或推流 [startPublishingStream] 前设置有效。
- 相关接口:可调用 [setAppOrientation] 函数,设置 App 朝向。
- 支持版本:2.23.0 及以上。
- 注意事项: 1. 对所有通道生效。 2. 自适应模式在预览、拉流、混流场景下生效,不支持视频外部采集、媒体播放器、云录制、本地录制,不支持通过 CDN 推拉流场景。
setLowlightEnhancement
public void setLowlightEnhancement(ZegoLowlightEnhancementMode mode, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mode | ZegoLowlightEnhancementMode | 低照度增强模式。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
根据设置的低照度增强模式,对摄像头采集的画面亮度进行增强,兼容美颜功能。用户可以在预览时观看效果,并实时切换低照度增强模式。
- 业务场景:推流端环境较暗,或者摄像头设置的帧率较高导致画面偏暗,无法正常显示或识别主体。
- 默认值:关闭。
- 调用时机:创建引擎 [createEngine] 后。
- 支持版本:2.21.0 及以上。
setLowlightEnhancementParams
public void setLowlightEnhancementParams(ZegoExpLowlightEnhancementParams params, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| params | ZegoExpLowlightEnhancementParams | 低照度增强参数。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
根据设置的低照度增强模式,对摄像头采集的画面亮度进行增强,兼容美颜功能。用户可以在预览时观看效果,并实时切换低照度增强模式。
- 业务场景:推流端环境较暗,或者摄像头设置的帧率较高导致画面偏暗,无法正常显示或识别主体。
- 调用时机:创建引擎 [createEngine] 后。
- 支持版本:3.19.0 及以上。
setVideoSource
public int setVideoSource(ZegoVideoSourceType source)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| source | ZegoVideoSourceType | 视频采集源类型。 |
详情
设置视频采集源,用于在不同的视频采集源之间进行切换。
- 业务场景:通常用于需要在不同的视频采集源之间切换的场景下。
- 调用时机:在创建引擎 [createEngine] 后调用生效。
- 支持版本:3.1.0 及以上。
- 使用限制:无。
- 注意事项:作用于主推流通道 ZegoPublishChannel.Main。 主路推流通道 ZegoPublishChannel.Main 不支持设置 ZegoVideoSourceType.Player 和 ZegoVideoSourceType.MainPublishChannel 视频输入源类型。
setVideoSource
public int setVideoSource(ZegoVideoSourceType source, unsigned int instanceID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| source | ZegoVideoSourceType | 视频采集源类型。 |
| instanceID | unsigned int | 视频采集源实例 ID。 |
详情
设置视频采集源,用于在不同的视频采集源之间进行切换。
- 业务场景:通常用于需要在不同的视频采集源之间切换的场景下。
- 调用时机:在创建引擎 [createEngine] 后调用生效。
- 支持版本:3.1.0 及以上。
- 使用限制:无。
- 注意事项:作用于主推流通道 ZegoPublishChannel.Main。 主路推流通道 ZegoPublishChannel.Main 不支持设置 ZegoVideoSourceType.Player 和 ZegoVideoSourceType.MainPublishChannel 视频输入源类型。
setVideoSource
public int setVideoSource(ZegoVideoSourceType source, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| source | ZegoVideoSourceType | 视频采集源类型。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
设置视频采集源,用于在不同的视频采集源之间进行切换。
- 业务场景:通常用于需要在不同的视频采集源之间切换的场景下。
- 调用时机:在创建引擎 [createEngine] 后调用生效。
- 支持版本:3.1.0 及以上。
- 使用限制:无。
- 注意事项:1. 主路推流通道 ZegoPublishChannel.Main 不支持设置 ZegoVideoSourceType.Player 和 ZegoVideoSourceType.MainPublishChannel 视频输入源类型。
- 辅路推流通道 ZegoPublishChannel.Aux 使用 ZegoVideoSourceType.Player 和 ZegoVideoSourceType.MainPublishChannel 视频输入源类型时,需要确保主推流通道 ZegoPublishChannel.Main 设备正常工作。
- 抢占型视频源不允许在多通道同时使用,例如 ZegoVideoSourceType.Camera、ZegoVideoSourceType.ScreenCapture。
- 只有主路使用内部采集,辅路才可复制,且最多支持一路复制。
- 设置 ZegoVideoSourceType.Player 视频输入源类型时,请确保 ZegoMediaPlayer 实例创建成功。
setVideoSource
public int setVideoSource(ZegoVideoSourceType source, unsigned int instanceID, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| source | ZegoVideoSourceType | 视频采集源类型。 |
| instanceID | unsigned int | 视频采集源实例 ID。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
设置视频采集源,用于在不同的视频采集源之间进行切换。
- 业务场景:通常用于需要在不同的视频采集源之间切换的场景下。
- 调用时机:在创建引擎 [createEngine] 后调用生效。
- 支持版本:3.1.0 及以上。
- 使用限制:无。
- 注意事项:1. 主路推流通道 ZegoPublishChannel.Main 不支持设置 ZegoVideoSourceType.Player 和 ZegoVideoSourceType.MainPublishChannel 视频输入源类型。
- 辅路推流通道 ZegoPublishChannel.Aux 使用 ZegoVideoSourceType.Player 和 ZegoVideoSourceType.MainPublishChannel 视频输入源类型时,需要确保主推流通道 ZegoPublishChannel.Main 设备正常工作。
- 抢占型视频源不允许在多通道同时使用,例如 ZegoVideoSourceType.Camera、ZegoVideoSourceType.ScreenCapture。
- 只有主路使用内部采集,辅路才可复制,且最多支持一路复制。
- 设置 ZegoVideoSourceType.Player 视频输入源类型时,请确保 ZegoMediaPlayer 实例创建成功。
setAudioSource
public int setAudioSource(ZegoAudioSourceType source)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| source | ZegoAudioSourceType | 音频采集源类型。 |
详情
设置音频采集源,用于在不同的音频采集源之间进行切换。
- 业务场景:通常用于需要在不同的音频采集源之间切换的场景下。
- 调用时机:在创建引擎 [createEngine] 后调用生效。
- 支持版本:3.1.0 及以上。
- 使用限制:无。
- 注意事项:作用于主路推流通道 ZegoPublishChannel.Main。 主路推流通道 ZegoPublishChannel.Main 不支持设置 ZegoAudioSourceType.MediaPlayer 和 ZegoAudioSourceType.MainPublishChannel 音频输入源类型。
setAudioSource
public int setAudioSource(ZegoAudioSourceType source, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| source | ZegoAudioSourceType | 音频采集源类型。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
设置音频采集源,用于在不同的音频采集源之间进行切换。
- 业务场景:通常用于需要在不同的音频采集源之间切换的教育场景下。
- 调用时机:在创建引擎 [createEngine] 后调用生效。
- 支持版本:3.1.0 及以上。
- 注意事项:1. 主路推流通道 ZegoPublishChannel.Main 不支持设置 ZegoAudioSourceType.MediaPlayer 和 ZegoAudioSourceType.MainPublishChannel 音频输入源类型。
- 辅路推流通道 ZegoPublishChannel.Aux 使用 ZegoAudioSourceType.MediaPlayer 和 ZegoAudioSourceType.MainPublishChannel 音频输入源类型时,需要确保主推流通道 ZegoPublishChannel.Main 设备正常工作。 3. 抢占型音源不允许在多通道同时使用,例如 ZegoAudioSourceType.Microphone。
- 设置 ZegoAudioSourceType.MediaPlayer 音频输入源类型时,请确保 ZegoMediaPlayer 实例创建成功。
setAudioSource
public int setAudioSource(ZegoAudioSourceType source, ZegoAudioSourceMixConfig config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| source | ZegoAudioSourceType | 音频采集源类型。 |
| config | ZegoAudioSourceMixConfig | 音频采集源混音配置。 |
详情
设置音频采集源,用于在不同的音频采集源之间进行切换。
- 业务场景:通常用于需要在不同的音频采集源之间切换的场景下。
- 调用时机:在创建引擎 [createEngine] 后调用生效。
- 支持版本:3.1.0 及以上。
- 使用限制:无。
- 注意事项:作用于主路推流通道 ZegoPublishChannel.Main。 主路推流通道 ZegoPublishChannel.Main 不支持设置 ZegoAudioSourceType.MediaPlayer 和 ZegoAudioSourceType.MainPublishChannel 音频输入源类型。
enableVideoObjectSegmentation
public void enableVideoObjectSegmentation(bool enable, ZegoObjectSegmentationType type, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启主体分割,默认关闭。 |
| type | ZegoObjectSegmentationType | 主体分割类型。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
主体分割与传输即在推流端将矩形视频内的主体(多数情况下是人)通过 AI 算法分离出来,并在 RTC 网络中传输、在拉流端渲染的技术。
- 业务场景:需要将视频中的主体与背景分离的场景,例如混合现实、多人同场互动场景等。
- 调用时机:在创建引擎 [createEngine] 后调用生效。
- 相关回调:通过 [onVideoObjectSegmentationStateChanged] 监听主体分割状态变化。
- 相关接口:使用 [enableAlphaChannelVideoEncoder] 支持对分割后的主体的透明背景编码,再进行推流,则可以在拉流端渲染主体带透明背景效果。
- 支持版本:3.4.0 及以上。
- 使用限制:开启主体分割为耗时操作,轻勿频繁开启关闭。
- 注意事项: 1. 在创建引擎 [createEngine] 后调用生效。
- 如想监听 [onVideoObjectSegmentationStateChanged] 回调,需要调用预览 [startPreview] 或推流 [startPublishingStream]。
enableVideoObjectSegmentation
public void enableVideoObjectSegmentation(bool enable, ZegoObjectSegmentationConfig config, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启主体分割,默认关闭。 |
| config | ZegoObjectSegmentationConfig | 主体分割配置。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
主体分割与传输即在推流端将矩形视频内的主体(多数情况下是人)通过 AI 算法分离出来,并在 RTC 网络中传输、在拉流端渲染的技术。
- 业务场景:需要将视频中的主体与背景分离的场景,例如混合现实、多人同场互动场景等。
- 调用时机:在创建引擎 [createEngine] 后调用生效。
- 相关回调:当开启或者关闭主体分割后,通过 [onVideoObjectSegmentationStateChanged] 可以收到主体分割状态的通知。
- 相关接口:使用 [enableAlphaChannelVideoEncoder] 支持对分割后的主体的透明背景编码,再进行推流,则可以在拉流端渲染主体带透明背景效果。
- 支持版本:3.6.0 及以上。
- 使用限制:开启主体分割为耗时操作,轻勿频繁开启关闭。
- 注意事项:该功能需要特殊编包,请联系 ZEGO 技术支持。
enableAlphaChannelVideoEncoder
public void enableAlphaChannelVideoEncoder(bool enable, ZegoAlphaLayoutType alphaLayout, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启视频编码器透明通道支持,默认关闭。 |
| alphaLayout | ZegoAlphaLayoutType | 指定 Alpha 通道数据的布局位置。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
在推流端开启视频编码器透明通道支持,将分割后的视频主体进行编码,用于推流。
- 业务场景:需要将视频中的主体与背景分离的场景,例如混合现实、多人同场互动场景等。
- 调用时机:创建引擎后。
- 支持版本:3.4.0 及以上。
enableAuxBgmBalance
public void enableAuxBgmBalance(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 开启或关闭根据伴奏音量,自适应调整人声音量。 |
详情
开启或关闭根据伴奏音量,自适应调整人声音量,使人声与伴奏音量均衡。默认关闭。
- 调用时机:在创建引擎 [createEngine] 后调用。
- 支持版本:3.18.0 及以上。
- 使用限制:调用媒体播放器 [EnableAux] 接口开启混音,此接口才生效。
startPlayingStream
public void startPlayingStream(std::string streamID, ZegoCanvas canvas)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID,长度不超过 256 字节的字符串。 注意事项: 仅支持数字,英文字符 和 '-', '_'。 |
| canvas | ZegoCanvas | 用于显示拉流画面的视图,视图设置为 [nullptr] 时不显示视频,只播放音频。该参数可以设置视图显示模式(viewMode)和背景色。 |
详情
从 ZEGO RTC 服务器拉取远端用户的音视频流进行互通。
- 业务场景:在实时连麦场景下,开发者可通过监听 [onRoomStreamUpdate] 事件回调来获取所在房间内新增的流信息,并调用此接口传入 "streamID" 进行拉流操作。
- 调用时机:调用 [loginRoom] 加入房间后调用该函数。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:1. 开发者可通过再次调用此函数实现切换拉流 canvas 的操作(streamID 必须一样)。同一条流只能在唯一的视图中拉取展示,如果调用 [startPlayingStream] 传入相同的 "streamID" 和不同的视图,画面只会在新视图展现。2. 首次拉流时如果因网络原因拉流失败或拉流中断,SDK 会在 20min 内多次尝试重连并拉流。3. 在网络质量不佳的情况下,用户拉流可能出现中断,SDK 会尝试重连并拉流,可通过监听 [onPlayerStateUpdate] 事件来获知当前拉流状态以及错误信息。详情请参考 https://doc-zh.zego.im/faq/reconnect 4. 如果拉取不存在的 "streamID",SDK 会持续尝试拉取,在该 streamID 对应的音视频流被成功推送后,该流可以真正被拉取到。
startPlayingStream
public void startPlayingStream(std::string streamID, ZegoCanvas canvas, ZegoPlayerConfig config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID,长度不超过 256 字节的字符串。 注意事项: 仅支持数字,英文字符 和 '-', '_'。 |
| canvas | ZegoCanvas | 用于显示拉流画面的视图,视图设置为 [nullptr] 时不显示视频,只播放音频。该参数可以设置视图显示模式(viewMode)和背景色。 |
| config | ZegoPlayerConfig | 拉流进阶配置, [ZegoPlayerConfig] 中房间 [roomID] 为登录的房间ID。 |
详情
从 ZEGO RTC 服务器或第三方 CDN 拉取远端用户的音视频流进行互通。
- 业务场景:在实时连麦或直播场景下,开发者可通过监听 [onRoomStreamUpdate] 事件回调来获取所在房间内新增的流信息,并调用此接口传入 "streamID" 进行拉流操作。
- 调用时机:调用 [loginRoom] 加入房间后调用该函数。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:1. 开发者可通过再次调用此函数实现切换拉流 canvas 的操作(streamID 必须一样)。同一条流只能在唯一的视图中拉取展示,如果调用 [startPlayingStream] 传入相同的 "streamID" 和不同的视图,画面只会在新视图展现。2. 首次拉流时如果因网络原因拉流失败或拉流中断,SDK 会在 20min 内多次尝试重连并拉流。3. 在网络质量不佳的情况下,用户拉流可能出现中断,SDK 会尝试重连并拉流,可通过监听 [onPlayerStateUpdate] 事件来获知当前拉流状态以及错误信息。详情请参考 https://doc-zh.zego.im/faq/reconnect 4. 如果拉取不存在的 "streamID",SDK 会持续尝试拉取,在该 streamID 对应的音视频流被成功推送后,该流可以真正被拉取到。
startPlayingStream
public void startPlayingStream(std::string streamID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID,长度不超过 256 字节的字符串。 注意事项: 仅支持数字,英文字符 和 '-', '_'。 |
详情
从 ZEGO RTC 服务器拉取远端用户的音频流进行互通。
- 业务场景:在实时连麦场景下,开发者可通过监听 [onRoomStreamUpdate] 事件回调来获取所在房间内新增的流信息,并调用此接口传入 "streamID" 进行拉流操作。
- 调用时机:调用 [loginRoom] 加入房间后调用该函数。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:1. 首次拉流时如果因网络原因拉流失败或拉流中断,SDK 会在 20min 内多次尝试重连并拉流。2. 在网络质量不佳的情况下,用户拉流可能出现中断,SDK 会尝试重连并拉流,可通过监听 [onPlayerStateUpdate] 事件来获知当前拉流状态以及错误信息。详情请参考 https://doc-zh.zego.im/faq/reconnect 3. 如果拉取不存在的 "streamID",SDK 会持续尝试拉取,在该 streamID 对应的音频流被成功推送后,该流可以真正被拉取到。
startPlayingStream
public void startPlayingStream(std::string streamID, ZegoPlayerConfig config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID,长度不超过 256 字节的字符串。 注意事项: 仅支持数字,英文字符 和 '-', '_'。 |
| config | ZegoPlayerConfig | 拉流进阶配置。 |
详情
从 ZEGO RTC 服务器或第三方 CDN 拉取远端用户的音频流进行互通。
- 业务场景:在实时连麦或直播下,开发者可通过监听 [onRoomStreamUpdate] 事件回调来获取所在房间内新增的流信息,并调用此接口传入 "streamID" 进行拉流操作。
- 调用时机:调用 [loginRoom] 加入房间后调用该函数。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:1. 首次拉流时如果因网络原因拉流失败或拉流中断,SDK 会在 20min 内多次尝试重连并拉流。2. 在网络质量不佳的情况下,用户拉流可能出现中断,SDK 会尝试重连并拉流,可通过监听 [onPlayerStateUpdate] 事件来获知当前拉流状态以及错误信息。详情请参考 https://doc-zh.zego.im/faq/reconnect 3. 如果拉取不存在的 "streamID",SDK 会持续尝试拉取,在该 streamID 对应的音视频流被成功推送后,该流可以真正被拉取到。
startPlayingStreamInScene
public void startPlayingStreamInScene(std::string streamID, ZegoCanvas canvas, ZegoScenePlayerConfig config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID,长度不超过 256 字节的字符串。 注意事项: 仅支持数字,英文字符 和 '-', '_'。 |
| canvas | ZegoCanvas | 用于显示拉流画面的视图,视图设置为 [nullptr] 时不显示视频,只播放音频。该参数可以设置视图显示模式(viewMode)和背景色。 |
| config | ZegoScenePlayerConfig | 场景拉流进阶配置。 |
详情
从 ZEGO RTC 服务器或第三方 CDN 拉取远端用户的音视频流进行互通。
- 业务场景:使用范围场景功能时,用户可以使用该接口自定义拉流。
- 调用时机:调用 [loginScene] 加入场景后调用该函数。
- 支持版本:3.4.0 及以上。
- 使用限制:无。
- 注意事项:1. 开发者可通过再次调用此函数实现切换拉流 canvas 的操作(streamID 必须一样)。同一条流只能在唯一的视图中拉取展示,如果调用 [startPlayingStreamInScene] 传入相同的 "streamID" 和不同的视图,画面只会在新视图展现。
- 首次拉流时如果因网络原因拉流失败或拉流中断,SDK 会在 20min 内多次尝试重连并拉流。
- 在网络质量不佳的情况下,用户拉流可能出现中断,SDK 会尝试重连并拉流,可通过监听 [onPlayerStateUpdate] 事件来获知当前拉流状态以及错误信息。详情请参考 https://doc-zh.zego.im/faq/reconnect
- 如果拉取不存在的 "streamID",SDK 会持续尝试拉取,在该 streamID 对应的音视频流被成功推送后,该流可以真正被拉取到。
startPlayingStreamInScene
public void startPlayingStreamInScene(std::string streamID, ZegoScenePlayerConfig config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID,长度不超过 256 字节的字符串。 注意事项: 仅支持数字,英文字符 和 '-', '_'。 |
| config | ZegoScenePlayerConfig | 场景拉流进阶配置。 |
详情
从 ZEGO RTC 服务器或第三方 CDN 拉取远端用户的音视频流进行互通。
- 业务场景:使用范围场景功能时,用户可以使用该接口自定义拉流。
- 调用时机:调用 [loginScene] 加入场景后后调用该函数。
- 支持版本:3.3.0 及以上。
- 使用限制:无。
- 注意事项:1. 开发者可通过再次调用此函数实现切换拉流 canvas 的操作(streamID 必须一样)。同一条流只能在唯一的视图中拉取展示,如果调用 [startPlayingStreamInScene] 传入相同的 "streamID" 和不同的视图,画面只会在新视图展现。2. 首次拉流时如果因网络原因拉流失败或拉流中断,SDK 会在 20min 内多次尝试重连并拉流。3. 在网络质量不佳的情况下,用户拉流可能出现中断,SDK 会尝试重连并拉流,可通过监听 [onPlayerStateUpdate] 事件来获知当前拉流状态以及错误信息。详情请参考 https://doc-zh.zego.im/faq/reconnect 4. 如果拉取不存在的 "streamID",SDK 会持续尝试拉取,在该 streamID 对应的音视频流被成功推送后,该流可以真正被拉取到。
switchPlayingStream
public void switchPlayingStream(std::string fromStreamID, std::string toStreamID, ZegoPlayerConfig config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| fromStreamID | std::string | 流 ID,长度不超过 256 字节的字符串。 注意事项: 仅支持数字,英文字符 和 '-', '_'。 |
| toStreamID | std::string | 流 ID,长度不超过 256 字节的字符串。 注意事项: 仅支持数字,英文字符 和 '-', '_'。 |
| config | ZegoPlayerConfig | 拉流进阶配置。 |
详情
从拉某条 flv 流平滑的切换到另外一条 flv 流。
- 业务场景:针对同一条流,可能会存在多路不同分辨率的流,在网络质量变差的时候,为了保证拉流质量,拉流端可以选择从高分辨率流切换到低分辨率的流。
- 调用时机:调用 [startPlayingStream] 拉了某条流后。
- 相关回调: 1. 可以通过 [onPlayerSwitched] 事件来获取切换请求的结果。
- 当切换流成功时,可以通过 [onPlayerStateUpdate] 事件来获知当前拉流状态。
- 当切换流失败时,不一定有 [onPlayerStateUpdate] 事件通知。
- 支持版本:3.16.0 及以上。
- 使用限制:只支持 flv 协议的流。
stopPlayingStream
public void stopPlayingStream(std::string streamID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID。 |
详情
停止从 ZEGO RTC 服务器拉取远端用户的音视频流。
- 业务场景:在实时连麦场景下,开发者可通过监听 [onRoomStreamUpdate] 事件回调来获取所在房间内删除的流信息,并调用此接口传入 "streamID" 进行停止拉流操作。
- 调用时机:调用 [loginRoom] 加入房间后调用该函数。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:1. 停止拉流后对此条流此前设置的属性如 [setPlayVolume]、[mutePlayStreamAudio]、[mutePlayStreamVideo] 等拉流相关的配置都会失效,需要在下次拉流之前重新设置。 2.停止拉流后,iOS平台的视图默认会清除最后一帧,保持为视图的背景色。Android 平台视图默认保持在最后一帧,如果需要清除最后一帧,请联系 ZEGO 技术支持。
setPlayStreamDecryptionKey
public void setPlayStreamDecryptionKey(std::string streamID, std::string key)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID。 |
| key | std::string | 解密密钥,注意密钥长度仅支持 16/24/32 字节。 |
详情
拉流时会根据设置的密匙解密音视频数据。
- 业务场景:常用于对音视频通话安全性要求较高的场景。
- 调用时机:[createEngine]后,拉流后可随时变更。
- 相关接口:[setPublishStreamEncryptionKey] 设置推流加密密匙。
- 支持版本:1.19.0 及以上。
- 使用限制:该函数仅当从 ZEGO RTC 或 L3 服务器拉流时调用有效。
- 注意事项:推流端有设置加密才能调用此函数。调用 [stopPlayingStream] 或 [logoutRoom] 都将会清空解密密钥。
setPlayStreamCrossAppInfo
public void setPlayStreamCrossAppInfo(std::string streamID, ZegoCrossAppInfo info)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID。 |
| info | ZegoCrossAppInfo | 跨 App 拉流信息。 |
详情
拉流前或拉流重试时,通过该信息鉴权。
- 业务场景:用于跨 App 拉流等场景。
- 调用时机:[createEngine]后,拉流后可随时变更。
- 支持版本:2.19.0 及以上。
- 使用限制:该函数仅当从 ZEGO RTC 服务器拉流时调用有效。
- 注意事项:调用 [stopPlayingStream] 或 [logoutRoom] 都将会清空拉流信息。
takePlayStreamSnapshot
public void takePlayStreamSnapshot(std::string streamID, ZegoPlayerTakeSnapshotCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 要截图的流 ID。 |
| callback | ZegoPlayerTakeSnapshotCallback | 拉流画面截图结果回调。 |
详情
对指定拉流ID画面截图。
- 调用时机:[startPlayingStream]后调用。
- 相关回调:[onPlayerTakeSnapshotResult] 截图数据回调。
- 支持版本:1.17.0 及以上。
- 使用限制:无。
setPlayVolume
public void setPlayVolume(std::string streamID, int volume)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID。 |
| volume | int | 音量百分比,取值范围为 0 ~ 200,默认值为 100。 |
详情
设置拉流的声音大小,本端用户可控制音频流的播放音量。
- 调用时机:[startPlayingStream] 后调用。
- 相关接口:[setAllPlayStreamVolume] 设置所有拉流音量。
- 支持版本:1.16.0 及以上。
- 使用限制:无。
- 注意事项:停止拉流后,再次拉流需要重新设置。此函数与 [setAllPlayStreamVolume] 函数相互覆盖,最后一个调用生效。
setAllPlayStreamVolume
public void setAllPlayStreamVolume(int volume)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| volume | int | 音量百分比,取值范围为 0 ~ 200,默认值为 100。 |
详情
此函数用于设置所有拉流的声音大小,本端用户可控制所有音频流的播放音量。
- 调用时机:[startPlayingStream]后调用。
- 相关接口:可使用 [setPlayVolume] 设置指定音视频流的音量。
- 支持版本:2.3.0 及以上。
- 使用限制:无。
- 注意事项:与setPlayVolume函数相互覆盖,最后一个调用生效。
setPlayStreamVideoType
public void setPlayStreamVideoType(std::string streamID, ZegoVideoStreamType streamType)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID。 |
| streamType | ZegoVideoStreamType | 视频流类型。 |
详情
当推流方通过 [setVideoConfig] 设置了 codecID 为 SVC 时,拉流方可以动态设置选用不同的流类型(小分辨率为标准图层的二分之一)。
- 业务场景:一般情况下,在网络较弱或者渲染的 UI 窗体较小的情况下,可以选择使用拉取小分辨率的视频来达到节省带宽的目的。
- 调用时机:[createEngine] 后可调用。
- 支持版本:2.3.0 及以上。
- 使用限制:无。
setPlayStreamBufferIntervalRange
public void setPlayStreamBufferIntervalRange(std::string streamID, unsigned int minBufferInterval, unsigned int maxBufferInterval)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID。 |
| minBufferInterval | unsigned int | 缓存自适应区间下限,单位毫秒。默认值为 0ms。 |
| maxBufferInterval | unsigned int | 缓存自适应区间上限,单位毫秒。默认值为 4000ms。 |
详情
设置拉流时 SDK 内部缓存自适应调整的区间范围 0-4000ms。
- 业务场景:一般在网络环境较差的情况下,调整增大拉流的播放缓存,会显著减少音视频卡顿,但会增大延迟。
- 调用时机:[createEngine] 后,如果有设置过,则每次重新拉流时都需要重新设置。
- 支持版本:2.1.0 及以上。
- 使用限制:无。
- 注意事项:当开发者设置的缓存区间上限超过 4000ms 时,会取值 4000 ms。当开发者设置的缓存区间上限小于缓存区间下限时,会自动将上限取值为下限。
setAudioMixMode
public void setAudioMixMode(ZegoAudioMixMode mode, const std::vector<std::string>& streamList)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mode | ZegoAudioMixMode | 混音模式。 |
| streamList | const std::vector<std::string>& | 流列表 |
详情
设置多路混音时突出的拉流ID,当有多路流同时发声,将突出流列表中的流。
- 调用时机:[createEngine]之后 。
- 支持版本:3.15.0 及以上。
- 使用限制:无。
setPlayStreamFocusOn
public void setPlayStreamFocusOn(std::string streamID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID。 |
详情
设置拉音视频流优先级的权重。
- 业务场景:当开发者业务上,需要对某音视流优先保证质量时(纯音频流下请勿使用),可使用此接口。例如:上课场景,学生拉多路流,则可设置老师流高优先级。
- 调用时机:[startPlayingStream]之后 。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:默认所有音视频流的权重相同。只能设置一路流是高优先级的,以最后设置的为准。流停止之后自动恢复初始状态,所有流的权重相同。在本地网络不好的时候,保证focus流的同时,可能造成其他的卡顿更多。
mutePlayStreamAudio
public void mutePlayStreamAudio(std::string streamID, bool mute)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID。 |
| mute | bool | 拉流时是否可以接收指定远端用户的音频数据,“true” 表示禁止,“false” 表示接收,默认值为 “false”。 |
详情
在实时音视频互动过程中,本地用户可根据需要,通过此函数控制拉流时是否接收指定远端用户的音频数据,当开发者不接收音频收据时,可降低硬件和网络的开销。
- 业务场景:当开发者需要快速关闭、恢复远端音频时,可调用此函数。相比重新拉流,能极大降低耗时,提升互动体验。
- 调用时机:在调用 [createEngine] 后可调用此函数。
- 相关接口:可调用 [muteAllPlayStreamAudio] 函数控制是否接收所有音频数据。必须当 [muteAllPlayStreamAudio] 和 [mutePlayStreamAudio] 两个函数同时设置为 "false" 时,本地用户拉流时才能接收远端用户的音频数据:1. 当调用 [muteAllPlayStreamAudio(true)] 函数时,全局生效,即本地用户会禁止接收所有远端用户的音频数据,此时无论在 [muteAllPlayStreamAudio] 之前还是之后调用 [mutePlayStreamAudio] 函数都不生效。2. 当调用 [muteAllPlayStreamAudio(false)] 函数时,本地用户可以接收所有远端用户的音频数据,此时可再通过 [mutePlayStreamAudio] 函数控制是否接收单条音频数据。调用 [mutePlayStreamAudio(true, streamID)] 函数则本地用户可以接收该 "streamID" 之外的其他音频数据;调用 [mutePlayStreamAudio(false, streamID)] 函数则本地用户可以接收 "streamID" 的音频数据。
- 支持版本:1.1.0 及以上。
- 注意事项: 1. 与 [muteAllPlayAudioStreams] 一起使用时,可以互相覆盖配置。
- 与 [muteAllPlayStreamAudio] 一起使用时,只有当 [muteAllPlayStreamAudio] 函数设置为 “false”时,此函数才有效。
- 停止拉流后对此条流此前设置的属性如 [setPlayVolume]、[mutePlayStreamAudio]、[mutePlayStreamVideo] 等拉流相关的配置都会失效,需要在下次拉流之前重新设置。
mutePlayStreamVideo
public void mutePlayStreamVideo(std::string streamID, bool mute)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID。 |
| mute | bool | 拉流时是否可以接收指定远端用户的视频数据,“true” 表示禁止,“false” 表示接收,默认值为 “false”。SDK 内部自动拉取的流默认值为 false。 |
详情
在实时音视频互动过程中,本地用户可根据需要,通过此函数控制拉流时是否接收指定远端用户的视频数据,当开发者不接收视频数据时,可降低硬件和网络的开销。
- 业务场景:当开发者需要快速关闭、恢复观看远端视频画面时,可调用此函数。相比重新拉流,能极大降低耗时,提升互动体验。
- 调用时机:在调用 [createEngine] 后可调用此函数。
- 相关接口:可调用 [muteAllPlayStreamVideo] 函数控制是否接收所有视频数据。必须当 [muteAllPlayStreamVideo] 和 [mutePlayStreamVideo] 两个函数同时设置为 "false" 时,本地用户拉流时才能接收远端用户的视频数据:1. 当调用 [muteAllPlayStreamVideo(true)] 函数时,全局生效,即本地用户会禁止接收所有远端用户的视频数据,此时无论在 [muteAllPlayStreamVideo] 之前还是之后调用 [mutePlayStreamVideo] 函数都不生效。2. 当调用 [muteAllPlayStreamVideo(false)] 函数时,本地用户可以接收所有远端用户的视频数据,此时可再通过 [mutePlayStreamVideo] 函数控制是否接收单条视频数据。调用 [mutePlayStreamVideo(true, streamID)] 函数则本地用户可以接收该 "streamID" 之外的其他视频数据;调用 [mutePlayStreamVideo(false, streamID)] 函数则本地用户可以接收 "streamID" 的视频数据。
- 支持版本:1.1.0 及以上。
- 注意事项: 1. 与 [muteAllPlayAudioStreams] 一起使用时,可以互相覆盖配置。
- 与 [muteAllPlayStreamVideo] 一起使用时,只有当 [muteAllPlayStreamVideo] 函数设置为 “false”时,此函数才有效。
- 当指定不接收视频流数据时,视图默认保持在最后一帧,如果需要清除最后一帧,请联系 ZEGO 技术支持。
- 停止拉流后对此条流此前设置的属性如 [setPlayVolume]、[mutePlayStreamAudio]、[mutePlayStreamVideo] 等拉流相关的配置都会失效,需要在下次拉流之前重新设置。
muteAllPlayStreamAudio
public void muteAllPlayStreamAudio(bool mute)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mute | bool | 拉流时是否可以接收所有远端用户的音频数据,“true” 表示禁止,“false” 表示接收,默认值为 “false”。 |
详情
在实时音视频互动过程中,本地用户可根据需要,通过此函数控制拉流时是否接收所有远端用户的音频数据(包括在调用该函数后新加入房间的用户所推的音频流)。默认情况下,用户加入房间后可以接收所有远端用户推送的音频数据。当开发者不接收音频收据时,可降低硬件和网络的开销
- 业务场景:当开发者需要快速关闭、恢复远端音频时,可调用此函数。相比重新拉流,能极大降低耗时,提升互动体验。
- 调用时机:在调用 [createEngine] 后可调用此函数。
- 相关接口:可调用 [mutePlayStreamAudio] 函数控制是否接收单条音频数据。必须当 [muteAllPlayStreamAudio] 和 [mutePlayStreamAudio] 两个函数同时设置为 "false" 时,本地用户拉流时才能接收远端用户的音频数据:1. 当调用 [muteAllPlayStreamAudio(true)] 函数时,全局生效,即本地用户会禁止接收所有远端用户的音频数据,此时无论在 [muteAllPlayStreamAudio] 之前还是之后调用 [mutePlayStreamAudio] 函数都不生效。 2. 当调用 [muteAllPlayStreamAudio(false)] 函数时,本地用户可以接收所有远端用户的音频数据,此时可再通过 [mutePlayStreamAudio] 函数控制是否接收单条音频数据。调用 [mutePlayStreamAudio(true, streamID)] 函数则本地用户可以接收该 "streamID" 之外的其他音频数据;调用 [mutePlayStreamAudio(false, streamID)] 函数则本地用户可以接收 "streamID" 的音频数据。
- 支持版本:2.4.0 及以上。
- 注意事项:此接口在 SDK 生命周期内不能和 [muteAllPlayAudioStreams] 混用。
muteAllPlayAudioStreams
public void muteAllPlayAudioStreams(bool mute)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mute | bool | 拉流时是否可以接收所有远端用户的音频数据,“true” 表示禁止,“false” 表示接收,默认值为 “false”。 |
详情
在实时音视频互动过程中,本地用户可根据需要,通过此函数控制拉流时是否接收所有远端用户的音频数据(包括在调用该函数后新加入房间的用户所推的音频流)。默认情况下,用户加入房间后可以接收所有远端用户推送的音频数据。当开发者不接收音频收据时,可降低硬件和网络的开销
- 业务场景:当开发者需要快速关闭、恢复远端音频时,可调用此函数。相比重新拉流,能极大降低耗时,提升互动体验。
- 调用时机:在调用 [createEngine] 后可调用此函数。
- 相关接口:可调用 [mutePlayStreamAudio] 函数控制是否接收单条音频数据。
- 支持版本:3.10.0 及以上。
- 注意事项:此接口在 SDK 生命周期内不能和 [muteAllPlayStreamAudio] 混用。
muteAllPlayStreamVideo
public void muteAllPlayStreamVideo(bool mute)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mute | bool | 拉流时是否可以接收所有远端用户的视频数据,“true” 表示禁止,“false” 表示接收,默认值为 “false”。 |
详情
在实时音视频互动过程中,本地用户可根据需要,通过此函数控制拉流时是否接收所有远端用户的视频数据(包括在调用该函数后新加入房间的用户所推的视频流)。默认情况下,用户加入房间后可以接收所有远端用户推送的视频数据。当开发者不接收视频数据时,可降低硬件和网络的开销。
- 业务场景:当开发者需要快速关闭、恢复观看远端视频画面时,可调用此函数。相比重新拉流,能极大降低耗时,提升互动体验。
- 调用时机:在调用 [createEngine] 后可调用此函数。
- 相关接口:可调用 [mutePlayStreamVideo] 函数控制是否接收单条视频数据。必须当 [muteAllPlayStreamVideo] 和 [mutePlayStreamVideo] 两个函数同时设置为 "false" 时,本地用户拉流时才能接收远端用户的视频数据: 1. 当调用 [muteAllPlayStreamVideo(true)] 函数时,全局生效,即本地用户会禁止接收所有远端用户的视频数据,此时无论在 [muteAllPlayStreamVideo] 之前还是之后调用 [mutePlayStreamVideo] 函数都不生效。 2. 当调用 [muteAllPlayStreamVideo(false)] 函数时,本地用户可以接收所有远端用户的视频数据,此时可再通过 [mutePlayStreamVideo] 函数控制是否接收单条视频数据。调用 [mutePlayStreamVideo(true, streamID)] 函数则本地用户可以接收该 "streamID" 之外的其他视频数据;调用 [mutePlayStreamVideo(false, streamID)] 函数则本地用户可以接收 "streamID" 的视频数据。
- 支持版本:2.4.0 及以上。
- 注意事项: 1. 此接口在 SDK 生命周期内不能和 [muteAllPlayVideoStreams] 混用。
- 当指定不接收视频流数据时,视图默认保持在最后一帧,如果需要清除最后一帧,请联系 ZEGO 技术支持。
muteAllPlayVideoStreams
public void muteAllPlayVideoStreams(bool mute)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mute | bool | 拉流时是否可以接收所有远端用户的视频数据,“true” 表示禁止,“false” 表示接收,默认值为 “false”。 |
详情
在实时音视频互动过程中,本地用户可根据需要,通过此函数控制拉流时是否接收所有远端用户的视频数据(包括在调用该函数后新加入房间的用户所推的视频流)。默认情况下,用户加入房间后可以接收所有远端用户推送的视频数据。当开发者不接收视频数据时,可降低硬件和网络的开销。
- 业务场景:当开发者需要快速关闭、恢复观看远端视频画面时,可调用此函数。相比重新拉流,能极大降低耗时,提升互动体验。
- 调用时机:在调用 [createEngine] 后可调用此函数。
- 相关接口:可调用 [mutePlayStreamVideo] 函数控制是否接收单条视频数据。
- 支持版本:3.10.0 及以上。
- 注意事项: 1. 此接口在 SDK 生命周期内不能和 [muteAllPlayStreamVideo] 混用。
- 当指定不接收视频流数据时,视图默认保持在最后一帧,如果需要清除最后一帧,请联系 ZEGO 技术支持。
enableHardwareDecoder
public void enableHardwareDecoder(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启硬解开关,true 表示开启硬解,false 表示关闭硬解。 |
详情
拉流时是否使用硬件解码,开启硬件解码后 SDK 会使用 GPU 进行解码,降低 CPU 使用率。
- 业务场景:若开发者在某些机型测试时发现拉大分辨率音视频流时设备发热严重,可考虑调用此函数开启硬件解码的方式。
- 默认值:未调用此接口时,默认关闭硬解。
- 调用时机:此函数需要在 [createEngine] 创建实例后调用。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:在拉流前设置才能生效,如果在拉流后设置,停止拉流后重新拉流才生效,此配置生效后,在下次调用生效前一直有效。
enableCheckPoc
public void enableCheckPoc(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启帧顺序检测,true 表示开启帧顺序检测,false 表示关闭帧顺序检测。 |
详情
设置是否开启帧顺序检查。
- 业务场景:拉cdn的流时,开启帧顺序检测可防止花屏。
- 默认值:未调用此接口时,默认开启帧顺序检测。
- 调用时机:此函数需要在 [createEngine] 创建实例后调用。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:拉流过程中关闭顺序检测可能出现短暂花屏。
isVideoDecoderSupported
public bool isVideoDecoderSupported(ZegoVideoCodecID codecID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| codecID | ZegoVideoCodecID | 视频解码类型。是否必填:是。 |
详情
是否支持指定视频解码,主要取决于以下几个方面:硬件型号是否支持硬解、硬件型号性能是否支持软解、SDK 是否带该解码模块。
- 调用时机:创建引擎后。
- 支持版本:2.12.0 及以上。
- 注意事项:建议用户在拉 H.265 流前,先调用本接口获取 H.265 解码支持能力,如果不支持,可以拉其他编码格式的流,比如 H.264。
返回值
是否支持指定视频解码格式;true 表示支持,可以使用该解码格式进行拉流;false 表示不支持,SDK 不建议用户拉取该编码格式的流,如果用户强制拉取,可能会出现低帧率的表现。
isVideoDecoderSupported
public int isVideoDecoderSupported(ZegoVideoCodecID codecID, ZegoVideoCodecBackend codecBackend)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| codecID | ZegoVideoCodecID | 视频解码类型。是否必填:是。 |
| codecBackend | ZegoVideoCodecBackend | 解码器的后端实现。是否必填:是。 |
详情
是否支持指定视频解码,主要取决于以下几个方面:硬件型号是否支持硬解、硬件型号性能是否支持软解、SDK 是否带该解码模块。
- 调用时机:创建引擎后。
- 支持版本:3.0.0 及以上。
- 注意事项:建议用户在拉 H.265 流前,先调用本接口获取 H.265 解码支持能力,如果不支持,可以拉其他编码格式的流,比如 H.264。
返回值
是否支持指定视频解码格式;0 表示不支持,不可以使用该解码格式进行拉流;1 表示支持,可以使用该解码格式进行拉流;2 表示未确认,建议稍后再调用本接口。
setPlayStreamsAlignmentProperty
public void setPlayStreamsAlignmentProperty(ZegoStreamAlignmentMode mode)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mode | ZegoStreamAlignmentMode | 设置流对齐模式。 |
详情
拉流端播放时,控制播放的 RTC 流是否需要精准对齐。若需要,则拉取的所有流中包含精准对齐参数的会进行对齐,若不需要,则所有流都不对齐。
- 业务场景:常用于 KTV 等需要拉多路流对齐的场景,以保证用户在使用过程中,随时切换 唱歌主播、普通麦上语聊主播、麦下观众多种身份。
- 默认值:若未调该接口,默认为 不对齐。
- 调用时机:需要在 [createEngine] 之后调用。重复调用接口,最新设置有效。
- 相关接口:设置流通道的精准对齐参数 [setStreamAlignmentProperty]。
- 支持版本:2.14.0 及以上。
enableVideoSuperResolution
public void enableVideoSuperResolution(std::string streamID, bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 当前需要开启或关闭超分的流的 ID。 |
| enable | bool | 是否开启超分,默认不开启。 |
详情
拉流时是否开启视频超分,通过视频超分可以在拉流端对拉到的视频画面的分辨率进行倍增。如原始分辨率为 640x360,超分后为 1280x720。
- 业务场景:直播场景。
- 调用时机:视频超分仅对拉流视频画面有效。需要在 [initVideoSuperResolution] 之后调用。
- 相关回调:开发者可以通过 [onPlayerVideoSuperResolutionUpdate] 回调监听视频超分状态变化。
- 支持版本:3.0.0 及以上。
- 注意事项: 1. 该功能需要特殊编包,请联系 ZEGO 技术支持;
- 该功能会额外耗费系统资源,为了保证用户体验,ZEGO 限制只能对一条流开启超分辨率,且该条流的原始分辨率不建议超过 640×360。
initVideoSuperResolution
public void initVideoSuperResolution()ZegoExpressInterface.h初始化超分后,才能正常使用超分功能。
- 业务场景:直播场景。
- 调用时机:需要在 [createEngine] 之后调用。
- 支持版本:3.3.0 及以上。
- 注意事项: 1. 初始化视频画面超分为耗时操作,不建议频繁初始化、反初始化;
- 该功能需要特殊编包,请联系 ZEGO 技术支持。
uninitVideoSuperResolution
public void uninitVideoSuperResolution()ZegoExpressInterface.h反初始化超分后,SDK 将释放超分占用的资源,并导致超分功能不可用。
- 业务场景:直播场景。
- 调用时机:需要在 [initVideoSuperResolution] 之后调用。
- 支持版本:3.3.0 及以上。
- 注意事项:初始化视频画面超分为耗时操作,不建议频繁初始化、反初始化。
updatePlayingCanvas
public int updatePlayingCanvas(std::string streamID, ZegoCanvas canvas)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID,长度不超过 256 字节的字符串。 注意事项: 仅支持数字,英文字符 和 '-', '_'。 |
| canvas | ZegoCanvas | 用于显示拉流画面的视图,视图设置为 [nullptr] 时不显示视频,只播放音频。该参数可以设置视图显示模式(viewMode)和背景色。 |
详情
该接口会更新拉流视图。
- 业务场景:用户可调用该接口更新拉流视图显示视频。
- 调用时机:调用 [startPlayingStream] 接口后。
- 支持版本:3.4.0 及以上。
- 使用限制:无。
- 注意事项:无。
返回值
错误码,详情请参考常用错误码文档 https://doc-zh.zego.im/zh/4378.html
startMixerTask
public void startMixerTask(ZegoMixerTask task, ZegoMixerStartCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| task | ZegoMixerTask | 混流任务对象。是否必填:是。 |
| callback | ZegoMixerStartCallback | 开始混流任务结果通知。是否必填:否。注意事项:传 [nullptr] 则意味着不接收回调通知。 |
详情
向 ZEGO RTC 服务器发起混流请求,服务器会寻找当前正在推的流,并根据 SDK 请求的混流任务的参数进行图层混合。当需要更新混流任务时,即输入流增加或减少时需要更新输入流列表,此时可以更新 [ZegoMixerTask] 对象 inputList 的字段并再次调用本函数传入相同的 [ZegoMixerTask] 对象更新混流任务。
- 业务场景:常用于需要多个视频画面合成一个视频时使用混流,比如教育类,直播老师和学生的画面。
- 调用时机:调用 [loginRoom] 登录房间后。
- 相关回调:可通过 [onMixerRelayCDNStateUpdate] 获取混流转推 CDN 状态更新通知,可通过 [onMixerSoundLevelUpdate] 获取混流中的每条单流的声浪更新通知。
- 相关接口:可通过 [stopMixerTask] 函数停止混流。
- 支持版本:1.2.1 及以上。
- 使用限制:无。
- 注意事项:由于客户端设备的性能考虑,SDK 的混流是在 ZEGO RTC 服务器开启混流任务进行混流。若请求开启混流任务发生异常,例如最常见的混流的输入流不存在,将会从 callback 回调的错误码给出。具体错误码请参考 常见错误码文档 https://doc-zh.zego.im/zh/4378.html 若中途某条输入流不存在了,混流任务会自动重试拉这条输入流 90 秒,90 秒之后不再重试。若所有输入流均不存在了,90秒之后服务器会自动停止混流任务。
stopMixerTask
public void stopMixerTask(ZegoMixerTask task, ZegoMixerStopCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| task | ZegoMixerTask | 混流任务对象。是否必填:是。 |
| callback | ZegoMixerStopCallback | 停止混流任务结果通知。是否必填:否。注意事项:传 [nullptr] 则意味着不接收回调通知。 |
详情
向 ZEGO RTC 服务器发起结束混流请求。
- 业务场景:常用于需要多个视频画面合成一个视频时使用混流,比如教育类,直播老师和学生的画面。
- 调用时机:调用 [startMixerTask] 开始混流后。
- 相关接口:可通过 [startMixerTask] 函数开始混流。
- 支持版本:1.2.1 及以上。
- 使用限制:无。
- 注意事项:若开发者在未停止上一个混流任务的情况下启动下一个混流任务,上一个混流任务不会自动停止,直到上一个混流任务的输入流持续 90 秒都不存在之后。在启动下一个混流任务前,应当先停止上一个混流任务,以免当一个主播已经开启下一个混流任务与其他主播混流时,观众依然在拉上一个混流任务的输出流。
startAutoMixerTask
public void startAutoMixerTask(ZegoAutoMixerTask task, ZegoMixerStartCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| task | ZegoAutoMixerTask | 自动混流任务对象 |
| callback | ZegoMixerStartCallback | 开始自动混流任务结果通知 |
详情
本地用户可调用该函数开始自动混流任务,对房间内的所有流进行混流,目前仅支持音频流自动混流。启动自动混流后,会自动混流该房间内所有流的音频,此房间内再发起的推流也会自动混入最后的输出流中。
- 业务场景:常用于语聊房场景下,需要由客户端发起自动混流任务时。
- 调用时机:在创建引擎后,如果目标房间已经创建,可调用该函数在目标房间开启自动混流。
- 相关回调:通过 [ZegoMixerStartCallback] 回调,用户可以获取函数执行结果。通过 [onAutoMixerSoundLevelUpdate] 回调,用户可以获取自动混流后声浪信息。
- 相关接口:可调用 [stopAutoMixerTask] 函数,停止自动混流任务。
- 支持版本:2.10.0 及以上。
- 注意事项:在同一个房间内开启下一个自动混流任务前,请先调用 [stopAutoMixerTask] 函数结束上一次自动混流任务,以免造成当一个主播已经开启下一个自动混流任务与其他主播混流时,观众依然在一直拉上一个自动混流任务的输出流的情况。若用户未主动结束当前自动混流任务,该任务将在房间不存在之后或者输入流持续 90 秒不存在之后自动结束。
stopAutoMixerTask
public void stopAutoMixerTask(ZegoAutoMixerTask task, ZegoMixerStopCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| task | ZegoAutoMixerTask | 自动混流任务对象 |
| callback | ZegoMixerStopCallback | 停止自动混流任务结果通知 |
详情
本地用户可调用该函数结束自动混流任务。
- 业务场景:常用于语聊房场景下,需要由客户端发起自动混流任务时。
- 调用时机:在调用 [startAutoMixerTask] 函数开启自动混流任务后可调用该函数。
- 相关回调:通过 [ZegoMixerStopCallback] 回调,用户可以获取函数执行结果。
- 相关接口:可调用 [startAutoMixerTask] 函数,开始自动混流任务。
- 支持版本:2.10.0 及以上。
- 注意事项:在同一个房间内调用 [startAutoMixerTask] 函数开启下一个自动混流任务前,请先调用此函数结束上一次自动混流任务,以免造成当一个主播已经开启下一个自动混流任务与其他主播混流时,观众依然在一直拉上一个自动混流任务的输出流的情况。若用户未主动结束当前自动混流任务,该任务将在房间不存在之后或者输入流持续 90 秒不存在之后自动结束。
muteMicrophone
public void muteMicrophone(bool mute)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mute | bool | 是否静音(关闭麦克风);"true" 表示静音(关闭麦克风);"false" 表示开启麦克风。 |
详情
此函数用于控制是否使用采集到的音频数据,静音(关闭麦克风)将会使用静音数据替换设备采集到的音频数据进行推流,此时仍然会占用麦克风设备。
- 业务场景:用户仅关闭麦克风采集的人声,不关闭媒体播放器的音乐声音,可以调用该接口。该接口影响 [onBeforeAudioPrepAudioData]。
- 默认值:默认为 "false",即不静音。
- 调用时机:在创建引擎 [createEngine] 后。
- 相关接口:若想要真正让 SDK 放弃占用麦克风,例如实现 App 退到后台后释放麦克风占用等功能,可调用 [enableAudioCaptureDevice] 函数开关音频采集设备。可使用 [isMicrophoneMuted] 来检查麦克风是否静音。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
isMicrophoneMuted
public bool isMicrophoneMuted()ZegoExpressInterface.h用于判断麦克风是否被设置为静音。
- 调用时机:在创建引擎 [createEngine] 后。
- 相关接口:[muteMicrophone]。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
麦克风是否静音;"true" 表示麦克风静音;"false" 表示麦克风开启中(没有被静音)。
muteSpeaker
public void muteSpeaker(bool mute)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mute | bool | 是否静音(关闭音频输出);"true" 表示静音(关闭音频输出);"false" 表示开启音频输出。 |
详情
设置静音后,SDK 所有声音都不会播放,包括拉流、媒体播放器等。
- 默认值:默认为 "false",即不静音。
- 调用时机:在创建引擎 [createEngine] 后。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
isSpeakerMuted
public bool isSpeakerMuted()ZegoExpressInterface.h用于判断音频输出是否静音。
- 调用时机:在创建引擎 [createEngine] 后。
- 相关接口:[muteSpeaker]。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
音频输出是否静音;"true" 表示音频输出静音;"false" 表示音频输出开启中(没有被静音)。
getAudioDeviceList
public std::vector<ZegoDeviceInfo> getAudioDeviceList(ZegoAudioDeviceType deviceType)ZegoExpressInterface.hgetDefaultAudioDeviceID
public std::string getDefaultAudioDeviceID(ZegoAudioDeviceType deviceType)ZegoExpressInterface.huseAudioDevice
public void useAudioDevice(ZegoAudioDeviceType deviceType, std::string deviceID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| deviceType | ZegoAudioDeviceType | 音频设备类型 |
| deviceID | std::string | 通过 [getAudioDeviceList] 获取的某个设备的 ID |
详情
选择使用某个音频设备。
- 调用时机:在创建引擎 [createEngine] 之后。
- 支持版本:1.1.0 及以上。
- 使用限制:仅支持 Windows / macOS / Linux
getAudioDeviceVolume
public int getAudioDeviceVolume(ZegoAudioDeviceType deviceType, std::string deviceID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| deviceType | ZegoAudioDeviceType | 音频设备类型 |
| deviceID | std::string | 通过 [getAudioDeviceList] 获取的某个设备的 ID |
详情
获取音频设备音量,只适用于 Windows / macOS / Linux
返回值
设备音量
setAudioDeviceVolume
public void setAudioDeviceVolume(ZegoAudioDeviceType deviceType, std::string deviceID, int volume)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| deviceType | ZegoAudioDeviceType | 音频设备类型 |
| deviceID | std::string | 通过 [getAudioDeviceList] 获取的某个设备的 ID |
| volume | int | 设备音量 |
详情
可能因为系统限制导致直接操作系统设备失败,请优先使用 [setCaptureVolume] 和 [setPlayVolume] 来调节推拉流音量。 只适用于 Windows / macOS / Linux
setSpeakerVolumeInAPP
public void setSpeakerVolumeInAPP(std::string deviceID, int volume)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| deviceID | std::string | 通过 [getAudioDeviceList] 获取的某个设备的 ID。 |
| volume | int | 设备音量。 |
详情
设置 App 中扬声器的音量。 使用场景:需要只调整app的播放音量,并且不要调整系统的播放音量。
- 调用时机:在创建引擎 [createEngine] 之后。
- 支持版本:3.3.0 及以上。
- 使用限制:只适用于 Windows。
- 注意事项:可能因为系统限制导致直接操作系统设备失败,请优先使用 [setCaptureVolume] 和 [setPlayVolume] 来调节推拉流音量。
getSpeakerVolumeInAPP
public int getSpeakerVolumeInAPP(std::string deviceID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| deviceID | std::string | 通过 [getAudioDeviceList] 获取的某个设备的 ID。 |
详情
获取 App 中扬声器的音量,只支持 Windows。
- 调用时机:在创建引擎 [createEngine] 之后。
- 相关接口:设置 App 中扬声器的音量 [setSpeakerVolumeInAPP]。
- 支持版本:3.3.0 及以上。
- 使用限制:只适用于 Windows。
返回值
设备音量。
startAudioDeviceVolumeMonitor
public void startAudioDeviceVolumeMonitor(ZegoAudioDeviceType deviceType, std::string deviceID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| deviceType | ZegoAudioDeviceType | 音频设备类型 |
| deviceID | std::string | 通过 [getAudioDeviceList] 获取的某个设备的 ID |
详情
启动音频设备音量监控器。当该设备音量发生变更时,会通过 [onAudioDeviceVolumeChanged] 回调变更后的音量。
- 调用时机:在创建引擎 [createEngine] 之后。
- 平台差异:仅支持 Windows 和 macOS。
- 相关接口:当不再需要监控设备音量时,请调用 [stopAudioDeviceVolumeMonitor] 停止监控。
- 支持版本:1.1.0 及以上。
- 注意事项:目前仅支持同时监控一个音频输出设备和一个音频输入设备,多次调用此接口且传入相同的设备类型时将会覆盖上一次调用时此接口设置的设备 ID。
stopAudioDeviceVolumeMonitor
public void stopAudioDeviceVolumeMonitor(ZegoAudioDeviceType deviceType, std::string deviceID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| deviceType | ZegoAudioDeviceType | 音频设备类型 |
| deviceID | std::string | 通过 [getAudioDeviceList] 获取的某个设备的 ID |
详情
停止音频设备音量监控器。
- 调用时机:在创建引擎 [createEngine] 之后,当不再需要监控设备音量时。
- 平台差异:仅支持 Windows 和 macOS。
- 支持版本:1.1.0 及以上。
muteAudioDevice
public void muteAudioDevice(ZegoAudioDeviceType deviceType, std::string deviceID, bool mute)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| deviceType | ZegoAudioDeviceType | 音频设备类型 |
| deviceID | std::string | 通过 [getAudioDeviceList] 获取的某个设备的 ID |
| mute | bool | 是否静音音频设备;"true" 表示静音音频设备;"false" 表示取消静音音频设备。 |
详情
只适用于 Windows / macOS / Linux
setAudioDeviceMode
public void setAudioDeviceMode(ZegoAudioDeviceMode deviceMode)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| deviceMode | ZegoAudioDeviceMode | 音频设备模式 |
详情
根据场景需要选择音频设备模式(仅 Android 和 iOS 支持)。 使用场景:如实时 KTV 场景下,必须使用 General 模式,但是在语聊房场景下,为了避免第三方音乐的声音被采集,所以会要求使用 Communication2 或者 Communication3 模式。如何设置音频设备模式,请参考 https://doc-zh.zego.im/faq/AudioDeviceMod?product=ExpressVideo&platform=macos
- 调用时机:在创建引擎 [createEngine] 之后。
- 支持版本:2.22.0 及以上。
- 注意事项:该接口会触发设备的启动切换,建议不要频繁调用,避免不必要的开销与硬件问题。该接口可能导致音量模式在通话/媒体间切换,若媒体音量和通话音量不一致,可能导致音量变化。
isAudioDeviceMuted
public bool isAudioDeviceMuted(ZegoAudioDeviceType deviceType, std::string deviceID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| deviceType | ZegoAudioDeviceType | 音频设备类型 |
| deviceID | std::string | 通过 [getAudioDeviceList] 获取的某个设备的 ID |
详情
只适用于 Windows / macOS / Linux
返回值
音频设备是否静音;"true" 表示音频设备静音;"false" 表示音频设备没有被静音。
enableAudioCaptureDevice
public void enableAudioCaptureDevice(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启音频采集设备;"true" 表示打开音频采集设备;"false" 表示关闭音频采集设备。 |
详情
此函数用于控制是否使用音频采集设备。如果关闭音频采集设备,则 SDK 不会再占用音频设备,当然如果此时正在推流,默认情况下会使用静音数据做为音频数据进行推流。注意 Linux 平台不支持该功能 使用场景:当用户从不需要用到音频的时候,可以调用此函数关闭音频采集。
- 默认值:默认为 "true"。
- 调用时机:在创建引擎 [createEngine] 后。
- 相关接口:硬件上关闭或打开麦克风是耗时操作,用户频繁操作时有一定的性能开销,一般推荐使用 [muteMicrophone]。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
getAudioRouteType
public ZegoAudioRoute getAudioRouteType()ZegoExpressInterface.h音频路由是指 App 在播放音频时使用的音频输出设备,常见的音频路由有:扬声器、听筒、耳机、蓝牙设备等。
- 调用时机:在创建引擎 [createEngine] 后。
- 相关接口:设置音频路由到扬声器 [setAudioRouteToSpeaker]。
- 支持版本:1.1.0 及以上。
- 使用限制:win 或 mac 平台下不支持。
setAudioRouteToSpeaker
public void setAudioRouteToSpeaker(bool defaultToSpeaker)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| defaultToSpeaker | bool | 是否使用内置扬声器播放声音,"true" 表示使用内置扬声器播放声音,"false" 表示使用当前系统调度的优先级最高的音频输出设备播放声音。 |
详情
是否使用扬声器播放音频,当选择不使用内置扬声器播放声音时,SDK 会根据系统调度选择当前优先级最高的音频输出设备播放声音,常见的音频路由有:听筒、耳机、蓝牙设备等。
- 调用时机:在创建引擎 [createEngine] 后。
- 相关接口:获取当前音频路由 [getAudioRouteType]。
- 支持版本:1.1.0 及以上。
- 使用限制:只支持听筒和扬声器的切换,如果是蓝牙耳机或者有线耳机不支持通过该接口路由到扬声器。
enableCamera
public void enableCamera(bool enable, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否打开摄像头;"true" 表示打开摄像头;"false" 表示关闭摄像头。 |
| channel | ZegoPublishChannel | 推流通道 |
详情
此函数用于控制是否启动摄像头的采集,关闭摄像头后,将不会进行视频采集,此时本地预览和推流都将没有视频数据。
- 默认值:默认为 "true",即打开摄像头。
- 调用时机:在创建引擎 [createEngine] 后。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:在使用自定义视频采集功能 [enableCustomVideoCapture] 的情况下,由于开发者接管了视频数据的采集,SDK 不再负责视频数据的采集,但此函数依然会影响是否进行编码的行为。因此开发者使用自定义视频采集时,请确保此函数的值为 "true"。
useFrontCamera
public void useFrontCamera(bool enable, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | [ZegoVideoSourceTypeCamera] 是否采用前置摄像头;true: 表示使用前置摄像头;false: 表示使用后置摄像头。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
此函数用于控制 [ZegoVideoSourceTypeCamera] 使用前置摄像头或者后置摄像头(仅 Android 和 iOS 支持)。
- 默认值:默认为 "true",即使用前置摄像头。
- 调用时机:在创建引擎 [createEngine] 后。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:在开启自定义视频采集功能 [enableCustomVideoCapture] 的情况下,由于开发者接管了视频数据的采集,SDK 不再负责视频数据的采集,本函数不再有效。
isCameraFocusSupported
public bool isCameraFocusSupported(ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| channel | ZegoPublishChannel | 推流通道 |
详情
摄像头是否支持对焦。
- 调用时机:在开启预览后 [startPreview] 后调用。
- 支持版本:2.14.0 及以上
- 注意事项:需要摄像头启动成功
返回值
是否支持对焦,支持为 true,不支持为 false
setCameraFocusMode
public void setCameraFocusMode(ZegoCameraFocusMode mode, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mode | ZegoCameraFocusMode | 对焦模式。 |
| channel | ZegoPublishChannel | 推流通道 |
详情
设置摄像头对焦模式。
- 调用时机:在开启预览后 [startPreview] 后调用。
- 支持版本:2.14.0 及以上
- 使用限制:目前只支持 iOS 和 Android 平台。
setCameraFocusPointInPreview
public void setCameraFocusPointInPreview(float x, float y, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| x | float | 归一化的 X 轴坐标值, 有效值 [0,1]。 |
| y | float | 归一化的 Y 轴坐标值, 有效值 [0,1]。 |
| channel | ZegoPublishChannel | 推流通道 |
详情
设置预览视图中的对焦点。(x,y)是在预览视图中归一化的坐标,即对焦点相对预览视图的位置与预览视图宽高的比值,左上角是(0, 0)。
- 调用时机:在开启预览后 [startPreview] 后调用。
- 支持版本:2.14.0 及以上
- 使用限制:目前只支持 iOS 和 Android 平台。
- 注意事项:每次摄像头重新启动采集,设置都会失效,需要重新设置。
setCameraExposureMode
public void setCameraExposureMode(ZegoCameraExposureMode mode, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mode | ZegoCameraExposureMode | 曝光模式。 |
| channel | ZegoPublishChannel | 推流通道 |
详情
设置摄像头曝光模式。
- 调用时机:在开启预览后 [startPreview] 后调用。
- 支持版本:2.14.0 及以上
- 使用限制:目前只支持 iOS 和 Android 平台。
setCameraExposurePointInPreview
public void setCameraExposurePointInPreview(float x, float y, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| x | float | 归一化的 X 轴坐标值, 有效值 [0,1]。 |
| y | float | 归一化的 Y 轴坐标值, 有效值 [0,1]。 |
| channel | ZegoPublishChannel | 推流通道 |
详情
设置预览视图中的曝光点。(x,y)是在预览视图中归一化的坐标,即曝光点相对预览视图的位置与预览视图宽高的比值,左上角是(0, 0)。
- 调用时机:在开启预览后 [startPreview] 后调用。
- 支持版本:2.14.0 及以上
- 使用限制:目前只支持 iOS 和 Android 平台。
- 注意事项:每次摄像头重新启动采集,设置都会失效,需要重新设置。
setCameraExposureCompensation
public void setCameraExposureCompensation(float value, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| value | float | 摄像头曝光度,取值范围为 [-1,1], 默认值为 0。取值越小画面越暗,取值越大画面越亮。 |
| channel | ZegoPublishChannel | 推流通道 |
详情
设置摄像头曝光补偿数值。
- 业务场景:当用户需要设置摄像头曝光补偿值时,可以调用此接口。
- 调用时机:调用 [startPublishingStream] 或 [startPreview] 后调用此函数。
- 平台差异:仅支持 iOS 和 Android。
- 支持版本:2.10.0 及以上。
- 使用限制:无。
- 注意事项:摄像头重启后,设置会失效。
setCameraZoomFactor
public void setCameraZoomFactor(float factor, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| factor | float | 摄像头变焦倍数,最小值为 1.0,最大值为 [getCameraMaxZoomFactor] 的返回值。 |
| channel | ZegoPublishChannel | 推流通道 |
详情
设置摄像头变焦倍数。
- 调用时机:在开启预览 [startPreview] 后调用。
- 支持版本:1.20.0 及以上。
- 使用限制:摄像头启动后设置才生效。
getCameraMaxZoomFactor
public float getCameraMaxZoomFactor(ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| channel | ZegoPublishChannel | 推流通道 |
详情
获取摄像头最大变焦倍数。
- 调用时机:摄像头启动成功后调用才有效,一般可以在收到采集首帧回调 [onPublisherCapturedVideoFirstFrame] 的时候调用。
- 支持版本:1.20.0 及以上。
- 使用限制:无。
返回值
摄像头最大变焦倍数
enableCameraAdaptiveFPS
public void enableCameraAdaptiveFPS(bool enable, int minFPS, int maxFPS, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启摄像头自适应帧率。true 表示开启,false 表示关闭。默认关闭。 |
| minFPS | int | 期望的最小帧率,最小值为 3,推荐 15。单位:fps。 |
| maxFPS | int | 期望的最大帧率,推荐 25。单位:fps。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
开启后,SDK 根据设置的帧率范围匹配摄像头支持的采集帧率范围,在此范围内根据环境亮度动态调整摄像头采集帧率,提升设置的帧率过高时的画面亮度。
- 业务场景:推流端用户设置的帧率偏高,所处环境光照较低,无法正常显示或识别主体。比如对曝光要求较高的直播场景。
- 调用时机:创建引擎 [createEngine] 后,摄像头启动前。
- 相关接口:通过 [setVideoConfig] 可以设置摄像头采集帧率以及编码器编码帧率。
- 支持版本:2.20.0 及以上。
- 注意事项:当调用 [setVideoConfig] 设置帧率小于期望帧率最小值时,将使用 [setVideoConfig] 设置的帧率值。由于不同的手机厂商的硬件和算法策略不同,该接口在不同的机型或同一机型的前后摄像头上,效果存在一定差异。
useVideoDevice
public void useVideoDevice(std::string deviceID, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| deviceID | std::string | 通过 [getVideoDeviceList] 获取的某个设备的 ID |
| channel | ZegoPublishChannel | 推流通道 |
详情
只适用于 Windows / macOS / Linux
getVideoDeviceList
public std::vector<ZegoDeviceInfo> getVideoDeviceList()ZegoExpressInterface.h只适用于 Windows / macOS / Linux
视频设备列表
getDefaultVideoDeviceID
public std::string getDefaultVideoDeviceID()ZegoExpressInterface.h只适用于 Windows / macOS / Linux
默认视频设备 ID
startSoundLevelMonitor
public void startSoundLevelMonitor(unsigned int millisecond)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| millisecond | unsigned int | 声浪的监控时间周期,单位为毫秒,取值范围 [100, 3000]。默认 100 ms。 |
详情
启动监控后可通过 [onCapturedSoundLevelUpdate] 回调接收本地采集音频声浪,以及 [onRemoteSoundLevelUpdate] 回调接收远端拉流音频声浪。开发者可在进入房间之前,调用 [startPreview] 与此函数,并与 [onCapturedSoundLevelUpdate] 结合来判断音频设备是否正常工作。
- 业务场景:在推拉流过程中,判断麦上的用户谁在说话,并做 UI 展示。
- 调用时机:在创建引擎 [createEngine] 后。
- 支持版本:1.15.0 及以上。
- 注意事项: 1. [onCapturedSoundLevelUpdate] 与 [onRemoteSoundLevelUpdate] 回调通知周期为参数设置的值,若需要使用声浪进阶功能,请使用同名重载函数(参数类型为 ZegoSoundLevelConfig)代替。 2. 启动声浪监控后,即使未启动本地音频采集,onCapturedSoundLevelUpdate也会有回调,声浪值为0。
startSoundLevelMonitor
public void startSoundLevelMonitor(ZegoSoundLevelConfig config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoSoundLevelConfig | 启动声浪监控的配置。 |
详情
启动监控后可通过 [onCapturedSoundLevelUpdate] 回调接收本地采集音频声浪,以及 [onRemoteSoundLevelUpdate] 回调接收远端拉流音频声浪。开发者可在进入房间之前,调用 [startPreview] 与此函数,并与 [onCapturedSoundLevelUpdate] 结合来判断音频设备是否正常工作。
- 业务场景:在推拉流过程中,判断麦上的用户谁在说话,并做 UI 展示。
- 调用时机:在创建引擎 [createEngine] 后。
- 支持版本:2.10.0 及以上。
- 注意事项: 1. [onCapturedSoundLevelUpdate] 与 [onRemoteSoundLevelUpdate] 回调通知周期为参数设置的值。 2. 启动声浪监控后,即使未启动本地音频采集,onCapturedSoundLevelUpdate也会有回调,声浪值为0。
stopSoundLevelMonitor
public void stopSoundLevelMonitor()ZegoExpressInterface.h停止监控后将停止回调本地采集以及远端拉流的音频声浪回调。
- 调用时机:在创建引擎 [createEngine] 后。
- 相关接口:可通过 [startSoundLevelMonitor] 启动声浪监控。
- 支持版本:1.1.0 及以上。
startAudioSpectrumMonitor
public void startAudioSpectrumMonitor(unsigned int millisecond)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| millisecond | unsigned int | 音频频谱的监控时间周期,单位为毫秒,最小值为 10。默认 500 ms。 |
详情
启动监控后可通过 [onCapturedAudioSpectrumUpdate] 回调接收本地采集音频频谱,以及 [onRemoteAudioSpectrumUpdate] 回调接收远端音频声浪。
- 业务场景:在主播 K 歌场景中,已经推流或拉流的前提下,让主播或观众看到音调与音量变化的动画。
- 调用时机:在创建引擎 [createEngine] 后。
- 支持版本:1.15.0 及以上。
- 注意事项:[onCapturedAudioSpectrumUpdate] 与 [onRemoteAudioSpectrumUpdate] 回调通知周期为参数设置的值。
stopAudioSpectrumMonitor
public void stopAudioSpectrumMonitor()ZegoExpressInterface.h停止监控后将停止回调本地采集以及远端拉流的音频频谱回调。
- 调用时机:在创建引擎 [createEngine] 后。
- 相关接口:可通过 [startAudioSpectrumMonitor] 启动音频频谱监控。
- 支持版本:1.1.0 及以上。
enableHeadphoneMonitor
public void enableHeadphoneMonitor(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | true: 开启耳返, false: 关闭耳返。 |
详情
开启耳返,用户使用麦克风采集声音时会听到自己的声音。
- 调用时机:在创建引擎 [createEngine] 后。
- 默认值:关闭。
- 支持版本:1.9.0 及以上。
- 注意事项: 1. 同时连接耳机和麦克风时该设置才实际生效。 2. 耳返默认是在采集之后、前处理之前返回,如果需要在前处理之后返回请咨询 ZEGO 技术支持。
setHeadphoneMonitorVolume
public void setHeadphoneMonitorVolume(int volume)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| volume | int | 采集耳返音量大小,取值 [0, 200],默认 60。 |
详情
设置耳返音量。
- 调用时机:在创建引擎 [createEngine] 后。
- 相关接口:可通过 [enableHeadphoneMonitor] 开关耳返。
- 支持版本:1.9.0 及以上。
- 注意事项:同时连接耳机和麦克风时该设置才实际生效。
enableMixSystemPlayout
public void enableMixSystemPlayout(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | true: 开启声卡采集, false: 关闭声卡采集 |
详情
开启声卡采集,将系统播放的声音混入推流中,如浏览器播放的声音、第三方播放器软件播放的声音等。
- 默认值:默认关闭。
- 调用时机:调用 [startPublishingStream] 或 [startPreview] 后调用此函数。
- 相关接口:[setMixSystemPlayoutVolume] 设置系统声卡采集的音量。
- 平台差异:仅支持 Windows、macOS。
- 支持版本:1.9.0 及以上。
- 使用限制:无。
- 注意事项:系统声卡声音不包含拉流声音、媒体播放器声音和音效播放器声音。
setMixSystemPlayoutVolume
public void setMixSystemPlayoutVolume(int volume)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| volume | int | 声卡采集音量。有效范围 [0, 200],默认为 100。 |
详情
设置系统声卡采集的音量。
- 业务场景:用户需要调整系统声卡采集的音量大小。
- 调用时机:调用 [startPublishingStream] 或 [startPreview] 后调用此函数。
- 相关接口:[enableMixSystemPlayout] 开启或关闭声卡采集。
- 平台差异:仅支持 Windows、macOS。
- 支持版本:2.4.0 及以上。
- 使用限制:无。
enableMixEnginePlayout
public void enableMixEnginePlayout(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | true: 开启, false: 关闭 |
详情
开启后将 SDK 播放的声音混入推流中。
- 业务场景:用户需要将 SDK 播放的声音混入推流中,例如直播上课场景时,老师与学生连麦,老师可以将拉流声音混入推流中。
- 默认值:默认关闭。
- 调用时机:调用 [startPublishingStream] 或 [startPreview] 后调用此函数。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
startAudioVADStableStateMonitor
public void startAudioVADStableStateMonitor(ZegoAudioVADStableStateMonitorType type)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| type | ZegoAudioVADStableStateMonitorType | 语音检测器类型。 |
详情
启动监控后可通过 [onAudioVADStateUpdate] 回调接收指定类型的音频语音检测回调。
- 业务场景:例如指定采集后类型而且使用麦克风采集时,就可以通过这个接口检测主播是否有持续稳定的语音输入。
- 调用时机:开发者可在推流之前,调用 [startPreview] 与此函数,并与 [onAudioVADStateUpdate] 结合来判断音频设备是否正常工作。
- 相关接口:[stopAudioVADStableStateMonitor]
- 支持版本:2.14.0 及以上。
- 使用限制:[onAudioVADStateUpdate] 回调通知周期 3 秒。
startAudioVADStableStateMonitor
public void startAudioVADStableStateMonitor(ZegoAudioVADStableStateMonitorType type, int millisecond)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| type | ZegoAudioVADStableStateMonitorType | 语音检测器类型。 |
| millisecond | int | 检测周期 默认值 3000,有效值 [200, 10000] |
详情
启动监控后可通过 [onAudioVADStateUpdate] 回调接收指定类型的音频语音检测回调。
- 业务场景:例如指定采集后类型而且使用麦克风采集时,就可以通过这个接口检测主播是否有持续稳定的语音输入。
- 调用时机:开发者可在推流之前,调用 [startPreview] 与此函数,并与 [onAudioVADStateUpdate] 结合来判断音频设备是否正常工作。
- 相关接口:[stopAudioVADStableStateMonitor]
- 支持版本:2.17.0 及以上。
- 使用限制:无。
stopAudioVADStableStateMonitor
public void stopAudioVADStableStateMonitor(ZegoAudioVADStableStateMonitorType type)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| type | ZegoAudioVADStableStateMonitorType | 语音检测器类型。 |
详情
调用该接口后不再能接收到指定类型的 [onAudioVADStateUpdate] 回调。
- 调用时机:无。
- 相关接口:[startAudioVADStableStateMonitor]
- 支持版本:2.14.0 及以上。
- 使用限制:无。
getCurrentAudioDevice
public ZegoDeviceInfo getCurrentAudioDevice(ZegoAudioDeviceType deviceType)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| deviceType | ZegoAudioDeviceType | 音频设备类型。是否必填:是。 |
详情
获取当前使用的音频设备信息。
- 业务场景:用于需要手动在多个音频设备间切换的场景。
- 调用时机:调用 [startPublishingStream] 或 [startPreview] 后调用此函数。
- 相关接口:可通过 [getDefaultAudioDeviceID] 获取默认音频设备 ID。
- 支持版本:2.12.0 及以上。
- 使用限制:仅支持 Windows 和 macOS。
返回值
音频设备信息。
enableAEC
public void enableAEC(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启回声消除;true 表示开启;false 表示关闭 |
详情
打开回声消除, SDK 会对采集到的音频数据进行过滤以降低音频中的回音成分。
- 业务场景:当需要降低回声以提高通话质量和用户体验时,可以开启此功能。
- 调用时机:需要在 [createEngine] 之后调用。
- 相关接口:开发者可通过 [enableHeadphoneAEC] 以设置当使用耳机时是否也开启回声消除;可通过 [setAECMode] 设置回声消除的模式。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:回声消除功能仅支持处理经过 SDK 播放的声音,例如拉流、媒体播放器、音效播放器等功能播放的声音。未调用此函数前,SDK 内部会自动判断是否需要使用 AEC,一旦调用了此函数则不再自动判断。
enableHeadphoneAEC
public void enableHeadphoneAEC(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启;true 表示开启;false 表示关闭。 |
详情
当使用 [enableAEC] 开启了回声消除后,对于移动端设备来说只在使用扬声器时开启。如果需要在使用耳机时开启或者关闭回声消除,请调用此函数。
- 业务场景:当移动端设备连接了一个外置声卡作为音频输出源时,为了消除这种情况下的回声,需要调用此函数开启回声消除。
- 默认值:Android 默认关闭,iOS 默认开启。
- 调用时机:需要在 [createEngine] 之后,[startPublishingStream]、 [startPlayingStream]、 [startPreview]、 [createMediaPlayer]、 [createAudioEffectPlayer] 和 [createRealTimeSequentialDataManager] 之前调用。
- 相关接口:不使用耳机时可通过 [enableAEC] 设置 SDK 是否开启回声消除。
- 平台差异:仅支持 iOS 和 Android。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:开启回声消除会增加耳返延迟。在 iOS 平台,SDK 内部无法区分耳机跟外置声卡,如果使用此函数关闭使用耳机时的系统回声消除,则在用户接入外部声卡时会采集外部声卡播放的声音,导致回声问题。
setAECMode
public void setAECMode(ZegoAECMode mode)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mode | ZegoAECMode | 回声消除模式 |
详情
当使用 [enableAEC] 开启了回声消除后,可通过此函数切换不同的回声消除模式以控制消除回声数据的程度。
- 业务场景:当默认的回声消除效果不符合预期时,可通过此函数调整回声消除模式。
- 默认值:未调用此函数时,默认的回声消除模式为 [Aggressive] 激进模式。
- 调用时机:需要在 [createEngine] 之后调用。
- 支持版本:1.1.0 及以上。
- 使用限制:仅在开启了回声消除功能后此函数设置的值才有效。
enableAGC
public void enableAGC(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启自动增益控制;true 表示开启;false 表示关闭 |
详情
开启该功能后,SDK 能够自动调节麦克风音量,适应远近拾音,保持音量稳定。
- 业务场景:当需要保障音量稳定性以提高通话质量和用户体验时,可以开启此功能。
- 调用时机:需要在 [createEngine] 之后调用。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:未调用此函数前,SDK 内部会自动判断是否需要使用 AGC,一旦调用了此函数则不再自动判断。
enableANS
public void enableANS(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启噪声抑制;true 表示开启噪声抑制;false 表示关闭噪声抑制 |
详情
开启该功能后,可以使人声更加清晰。
- 业务场景:当需要抑制噪声以提高通话质量和用户体验时,可以开启此功能。
- 调用时机:需要在 [createEngine] 之后调用。
- 相关接口:此功能对持续性的噪声(例如下雨声等白噪音)抑制效果较好,如果需要抑制瞬态噪声,请使用 [enableTransientANS];可通过 [setANSMode] 设置噪声抑制的模式。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:未调用此函数前,SDK 内部会自动判断是否需要使用 ANS,一旦调用了此函数则不再自动判断。
enableTransientANS
public void enableTransientANS(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启瞬态噪声抑制;true 表示开启;false 表示关闭 |
详情
用于抑制敲击键盘、桌子等瞬态噪声。
- 业务场景:当需要抑制瞬态噪声以提高通话质量和用户体验时,可以开启此功能。
- 默认值:未调用此函数时,默认不开启瞬态噪声抑制。
- 调用时机:需要在 [createEngine] 之后调用。
- 相关接口:此函数开启后不会抑制常规噪声,如果需要开启常规噪声抑制,请使用 [enableANS]
- 支持版本:1.17.0 及以上。
- 使用限制:无。
setANSMode
public void setANSMode(ZegoANSMode mode)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mode | ZegoANSMode | 噪声抑制模式 |
详情
当使用 [enableANS] 开启了噪声抑制后,可通过此函数切换不同的噪声抑制模式以控制抑制噪声数据的程度。
- 业务场景:当默认的噪声抑制效果不符合预期时,可通过此函数调整噪声抑制模式。
- 默认值:未调用此函数时,默认的噪声抑制模式为 [Medium] 中等模式。
- 调用时机:需要在 [createEngine] 之后调用。
- 支持版本:1.1.0 及以上。
- 使用限制:仅在开启了噪声抑制功能后此函数设置的值才有效。
enableSpeechEnhance
public void enableSpeechEnhance(bool enable, int level)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启人声增强;true 表示开启;false 表示关闭 |
| level | int | 增强等级;取值范围在 [0, 10] |
详情
开启或关闭人声增强功能。
- 业务场景:在 KTV 外放场景中,由于 3A 损伤和距离原因,会导致人声较弱或虚或不清晰,需要通过人声增强技术提升外放体验。
- 默认值:未调用此函数时,此功能默认关闭。
- 调用时机:需要在 [createEngine] 之后调用,支持动态修改。
- 支持版本:3.3.0 及以上。
- 使用限制:无。
- 注意事项:1. 若重复调用本接口,则使用最后一次调用的设置;
- DestroyEngine 后,设置才会失效。
enableAudioMixing
public void enableAudioMixing(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启混音功能;true 表示开启;false 表示关闭 |
详情
开启混音功能后,SDK 将把开发者自己准备的音频数据与 SDK 采集的音频数据做混音后再推流出去。
- 业务场景:当开发者有需要往推流的音频中混入自己的歌曲、音效等音频数据时,可以使用此功能。
- 默认值:未调用此函数时,此功能默认关闭。
- 调用时机:需要在 [createEngine] 之后调用。
- 相关接口:开启混音后,开发者还需要调用 [setAudioMixingHandler] 设置混音回调,从而能在 [onAudioMixingCopyData] 回调中给 SDK 提供需要混音的音频数据。
- 支持版本:1.9.0 及以上,即将废弃。建议使用媒体播放器 [createMediaPlayer] 或者音效播放器 [createAudioEffectPlayer] 来实现混音功能。
- 使用限制:无。
- 注意事项:开始混音后,SDK 默认会将混音的音频在本地推流端播放出来,如果不希望在本地播放而是仅在远端拉流端播放,请调用 [muteLocalAudioMixing] 设置混音本地静音。推荐使用音效/媒体播放器混音。
setAudioMixingHandler
public void setAudioMixingHandler(std::shared_ptr<IZegoAudioMixingHandler> handler)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| handler | std::shared_ptr<IZegoAudioMixingHandler> | 混音回调 |
详情
通过 [enableAudioMixing] 开启混音功能后,开发者还需要调用此函数设置混音回调,从而能在 [onAudioMixingCopyData] 回调中给 SDK 提供需要混音的音频数据。
- 业务场景:当开发者有需要往推流的音频中混入自己的歌曲、音效等音频数据时,可以使用此功能。
- 调用时机:需要在 [createEngine] 之后调用。
- 支持版本:1.9.0 及以上。
- 使用限制:无。
- 注意事项:当再次调用此函数设置回调后,之前设置的混音回调将覆盖。
muteLocalAudioMixing
public void muteLocalAudioMixing(bool mute)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mute | bool | 是否静音本地混音;true 表示禁止播放播放;false 表示开启 |
详情
当调用此函数静音了本地播放混音后,本地混音端(推流端)将听不到通过 [onAudioMixingCopyData] 提供给 SDK 混音的播放声音,而远端(拉流端)依然能听到混音。
- 业务场景:当开发者有需要往推流的音频中混入自己的歌曲、音效等音频数据时,但混入的音频仅希望给拉流方听见,而不想给本地预览,可以使用此功能。
- 默认值:未调用此函数时,默认为不静音,即 false。
- 调用时机:需要在 [createEngine] 之后调用。
- 支持版本:1.9.0 及以上。
- 使用限制:无。
setAudioMixingVolume
public void setAudioMixingVolume(int volume, ZegoVolumeType type)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| volume | int | 混音音量,取值范围是 0 ~ 200,默认为 100。 |
| type | ZegoVolumeType | 混音本地播放音量/混音推流中的音量 |
详情
通过 [enableAudioMixing] 开启混音功能后,开发者可通过此函数设置混入 SDK 的混音数据音量大小。
- 业务场景:当开发者有需要往推流的音频中混入自己的歌曲、音效等音频数据时,并且想调整混音的音量大小时,可以使用此功能。
- 调用时机:需要在 [createEngine] 之后调用。
- 支持版本:1.9.0 及以上。
- 使用限制:无。
- 注意事项:此函数可以单独设置本地播放或者远端播放的混音数据音量大小。
startEffectsEnv
public void startEffectsEnv()ZegoExpressInterface.h开启 Effects 美颜环境。SDK 内部会使用固定的视频帧数据类型进行传输,Windows 平台只支持视频帧裸数据, Apple 平台只支持 CVPixelBuffer,Android 平台只支持 texture2d。
- 业务场景:常用于视频通话、直播等场景。
- 默认值:未调用此函数时,默认不启动美颜环境。
- 调用时机:必须在调用 [startPreview]、[startPublishingStream] 之前设置。如果需要修改配置,请先调用 [logoutRoom] 登出房间,否则不会生效。
- 相关接口:[enableEffectsBeauty] 开关美颜,[setEffectsBeautyParam] 设置美颜参数。
- 支持版本:2.16.0 及以上。
- 使用限制:此函数只支持 Android 系统 5.0 及以上,Android SDK 版本 21 及以上。
- 注意事项:此美颜功能为基础功能,如不符合开发者的预期,可使用自定义视频前处理功能 [enableCustomVideoProcessing] 或者自定义视频采集功能 [enableCustomVideoCapture] 对接即构 AI 美颜 SDK [ZegoEffects] https://doc-zh.zego.im/article/9556 以获得最佳效果。
stopEffectsEnv
public void stopEffectsEnv()ZegoExpressInterface.h关闭 Effects 美颜环境。
- 业务场景:常用于视频通话、直播等场景。
- 调用时机:必须在调用 [startPreview]、[startPublishingStream] 之前设置。如果需要修改配置,请先调用 [logoutRoom] 登出房间,否则不会生效。
- 相关接口:[enableEffectsBeauty] 开关美颜,[setEffectsBeautyParam] 设置美颜参数。
- 支持版本:2.16.0 及以上。
- 使用限制:此函数只支持 Android 系统 5.0 及以上,Android SDK 版本 21 及以上。
- 注意事项:此美颜功能为基础功能,如不符合开发者的预期,可使用自定义视频前处理功能 [enableCustomVideoProcessing] 或者自定义视频采集功能 [enableCustomVideoCapture] 对接即构 AI 美颜 SDK [ZegoEffects] https://doc-zh.zego.im/article/9556 以获得最佳效果。
enableEffectsBeauty
public void enableEffectsBeauty(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启美颜效果,true 开启;false 关闭,默认为 false。 |
详情
支持基础美颜功能,包括美白、红润、磨皮、锐化。
- 业务场景:通常用于视频通话、直播等场景。
- 调用时机:必须在调用 [startEffectsEnv] 开启美颜环境后才能调用此函数。
- 默认值:未调用此函数时,默认不开启美颜效果。
- 相关接口:可调用 [setEffectsBeautyParam] 函数调整美颜参数。
- 支持版本:2.16.0 及以上。
- 使用限制:此函数如果使用在 Android 平台上只支持 5.0 及以上,SDK 版本 21 及以上。
- 注意事项:此美颜功能为基础功能,如不符合开发者的预期,可使用自定义视频前处理功能 [enableCustomVideoProcessing] 或者自定义视频采集功能 [enableCustomVideoCapture] 对接即构 AI 美颜 SDK [ZegoEffects] https://doc-zh.zego.im/article/9556 以获得最佳效果。
setEffectsBeautyParam
public void setEffectsBeautyParam(ZegoEffectsBeautyParam param)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| param | ZegoEffectsBeautyParam | 美颜选项参数。 |
详情
设置美颜参数,包括美白、红润、磨皮、锐化。
- 业务场景:通常用于视频通话、直播等场景。
- 调用时机:必须在调用 [startEffectsEnv] 开启美颜环境后才能调用此函数。
- 相关接口:可调用 [enableEffectsBeauty] 开启或关闭美颜效果。
- 支持版本:2.16.0 及以上。
- 使用限制:此函数只支持 Android 系统 5.0 及以上,Android SDK 版本 21 及以上。
setAudioEqualizerGain
public void setAudioEqualizerGain(int bandIndex, float bandGain)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| bandIndex | int | 频谱子带索引,取值范围 [0, 9],分别对应 10 个频带,中心频率分别是 [31, 62, 125, 250, 500, 1K, 2K, 4K, 8K, 16K] Hz。 |
| bandGain | float | 指定频带的增益值,取值范围 [-15, 15],默认值为 0,如果所有频带的增益值全部为 0,即关闭 EQ 功能。 |
详情
可通过调用本函数设置音效均衡器调整音色。
- 业务场景:通常用于语聊房、KTV 等场景。
- 调用时机:需要在 [createEngine] 之后调用才有效。
- 支持版本:1.12.0 及以上。
- 使用限制:无。
setVoiceChangerPreset
public void setVoiceChangerPreset(ZegoVoiceChangerPreset preset)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| preset | ZegoVoiceChangerPreset | 变声预设枚举。 |
详情
可通过调用本函数设置预设变声效果。
- 业务场景:通常用于直播、语聊房和 KTV 等场景。
- 调用时机:需要在 [createEngine] 之后调用才有效。
- 相关接口: 如需自定义变声效果,可使用 [setVoiceChangerParam]。 本函数与 [setReverbPreset] 同时使用效果可能和预期有差异,如需同时使用,建议先开启变声,再开启混响。 使用机器人或空灵预设变声效果时,会修改混响或混响回声参数。因此,在使用上述预设变声效果后调用 [setVoiceChangerParam], [setReverbAdvancedParam], [setReverbEchoParam] 等函数可能影响变声效果。 如需自定义混响/回声/变声/电音效果可通过 [setReverbAdvancedParam], [setReverbEchoParam], [setVoiceChangerParam], [setElectronicEffects] 四个函数组合配置使用。
- 支持版本:1.17.0 及以上。
setVoiceChangerParam
public void setVoiceChangerParam(ZegoVoiceChangerParam param)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| param | ZegoVoiceChangerParam | 变声参数。 |
详情
可通过调用本函数设置自定义变声效果。
- 业务场景:通常用于直播、语聊房和 KTV 等场景。
- 调用时机:需要在 [createEngine] 之后调用才有效。
- 相关接口: 如需使用常见的变声效果,可使用 [setVoiceChangerPreset] 函数。 如需自定义混响/回声/变声效果可通过 [setReverbAdvancedParam], [setReverbEchoParam], [setVoiceChangerParam] 三个函数组合配置使用。
- 支持版本:1.10.0 及以上。
setReverbPreset
public void setReverbPreset(ZegoReverbPreset preset)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| preset | ZegoReverbPreset | 混响预设枚举。 |
详情
可通过调用本函数设置预设混响效果。
- 业务场景:通常用于直播、语聊房和 KTV 等场景。
- 调用时机:需要在 [createEngine] 之后调用才有效。支持推流过程中调用本函数动态设置混响效果。
- 相关接口: 如需自定义混响效果,请使用 [setReverbAdvancedParam]。 本函数与 [setVoiceChangerPreset] 同时使用效果可能和预期有差异,如需同时使用,建议先开启变声,再开启混响。 如需自定义混响/回声/变声效果可通过 [setReverbAdvancedParam], [setReverbEchoParam], [setVoiceChangerParam] 三个函数组合配置使用。
- 支持版本:1.17.0 及以上。
setReverbAdvancedParam
public void setReverbAdvancedParam(ZegoReverbAdvancedParam param)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| param | ZegoReverbAdvancedParam | 混响高级参数。 |
详情
可通过调用本函数设置自定义混响效果。
- 业务场景:通常用于直播、语聊房和 KTV 等场景。
- 调用时机:需要在 [createEngine] 之后调用才有效。
- 相关接口: 如需使用常见的混响效果,可使用 [setReverbPreset] 函数。 如需自定义混响/回声/变声效果可通过 [setReverbAdvancedParam], [setReverbEchoParam], [setVoiceChangerParam] 三个函数组合配置使用。
- 支持版本:1.10.0 及以上。
- 注意事项:推流过程中动态设置不同的值都会生效,当全部参数都设置成 0 时,混响关闭。
setReverbEchoParam
public void setReverbEchoParam(ZegoReverbEchoParam param)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| param | ZegoReverbEchoParam | 混响回声效果参数。 |
详情
可通过调用本函数设置混响回声效果。可搭配变声、混响以实现自定义各式各样的声音效果。
- 业务场景:通常用于直播、语聊房和 KTV 等场景。
- 调用时机:需要在 [createEngine] 之后调用才有效。
- 相关接口:如需自行配置混响/回声/变声效果请通过 [setReverbAdvancedParam], [setReverbEchoParam], [setVoiceChangerParam] 三个函数组合使用。
- 支持版本:1.17.0 及以上。
enableVirtualStereo
public void enableVirtualStereo(bool enable, int angle)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | true 代表开启虚拟立体声,false 代表关闭虚拟立体声。 |
| angle | int | 虚拟立体声中声源的角度,范围为 -1 ~ 360,90 为正前方,0 / 180 / 270 分别对应最右边 / 最左边 / 正后方;特别的,设置 -1 时为全方位虚拟立体声效果。 |
详情
可通过调用本函数开启/关闭推流时的虚拟立体声效果。
- 业务场景:通常用于直播、语聊房和 KTV 等场景。
- 调用时机:需要在 [createEngine] 之后调用才有效。
- 支持版本:1.10.0 及以上;注意:从 2.15.0 版本开始,角度参数支持设置 -1 以呈现全方位虚拟立体声效果。
- 注意事项:需要调用 [setAudioConfig] 设置双声道后虚拟立体声才能生效。
enablePlayStreamVirtualStereo
public void enablePlayStreamVirtualStereo(bool enable, int angle, std::string streamID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | true 代表开启虚拟立体声,false 代表关闭虚拟立体声。 |
| angle | int | 虚拟立体声中声源的角度,范围为 0 ~ 360,90 为正前方,0 / 180 / 270 分别对应最右边 / 最左边 / 正后方。 |
| streamID | std::string | 流 ID。 |
详情
可通过调用本函数开启/关闭拉流时的虚拟立体声效果。
- 业务场景:通常用于直播、语聊房和 KTV 等场景。
- 调用时机:需要在 [createEngine] 之后调用才有效。
- 支持版本:2.8.0 及以上。
- 注意事项:在拉流之前和之后可以动态切换和设置角度参数。停止拉流后,虚拟立体声会自动重置和关闭。
setElectronicEffects
public void setElectronicEffects(bool enable, ZegoElectronicEffectsMode mode, int tonal)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | true 代表开启电音效果,false 代表关闭电音效果。 |
| mode | ZegoElectronicEffectsMode | 电音参考的调式。 |
| tonal | int | 电音在某个调式下的起始音高,代表声音一个八度的12个半音,取值范围 [0, 11]。 |
详情
可通过调用本函数开启/关闭电音效果。
- 业务场景:通常用于直播、语聊房和清唱场景。
- 默认值:未调用此接口时,默认关闭电音效果。
- 调用时机:需要在 [createEngine] 之后调用才有效。
- 相关接口:可通过 [setVoiceChangerPreset] 设置常见电音配置。
- 支持版本:2.13.0 及以上。
- 使用限制:无。
- 注意事项:当 mode 参数为和声小调时,tonal 参数不生效。
enableColorEnhancement
public void enableColorEnhancement(bool enable, ZegoColorEnhancementParams params, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启;true 表示开启;false 表示关闭。 |
| params | ZegoColorEnhancementParams | 色彩增强参数。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
可通过调用本函数开启/关闭色彩增强。
- 业务场景:常用于视频通话、直播等场景。
- 默认值:未调用此接口时,默认关闭色彩增强。
- 调用时机:需要在 [createEngine] 之后调用才有效。
- 支持版本:3.11.0 及以上。
createRealTimeSequentialDataManager
public IZegoRealTimeSequentialDataManager* createRealTimeSequentialDataManager(std::string roomID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 填写已经登录过的房间 ID,后续所有实时有序数据业务都将在此房间中开展。 |
详情
创建一个用于发送/接受实时有序数据的管理器对象。
- 业务场景:需要使用实时有序数据以实现诸如云游戏、远程桌面等业务时可以使用此功能。
- 调用时机:登录房间 [loginRoom] 之后。
- 支持版本:2.14.0 及以上。
- 使用限制:能且仅能为每个已 [loginRoom] 的房间 ID 创建一个对应的管理器对象,即在单房间模式下仅能创建一个对象,多房间模式下可创建多个对象。
- 注意事项:无。
返回值
实时有序数据管理器对象,超过最大数量限制后将返回 nullptr
destroyRealTimeSequentialDataManager
public void destroyRealTimeSequentialDataManager(IZegoRealTimeSequentialDataManager*& manager)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| manager | IZegoRealTimeSequentialDataManager*& | 需要销毁的实时有序数据管理器对象 |
详情
销毁 [ZegoRealTimeSequentialDataManager] 实时有序数据管理器对象。
- 业务场景:不再需要使用实时有序数据功能时,可通过此函数销毁 [createRealTimeSequentialDataManager] 函数创建出来的实例对象。
- 调用时机:当需要销毁实时有序数据管理器对象时。
- 支持版本:2.14.0 及以上。
- 使用限制:销毁后,开发者需要自行释放持有的 [ZegoRealTimeSequentialDataManager] 实例对象,并且销毁后也不要再调用此实例对象的函数。
- 注意事项:无。
sendBroadcastMessage
public void sendBroadcastMessage(std::string roomID, std::string message, ZegoIMSendBroadcastMessageCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 房间 ID,不得为空,最大长度小于 128 字节的字符串。 注意事项: 1.房间 ID 由您自己定义。 2. 仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', ''。 3. 如果需要与 Web SDK 互通,请不要使用 '%'。 |
| message | std::string | 消息内容。是否必填:是。取值范围:长度不超过 1024 字节。 |
| callback | ZegoIMSendBroadcastMessageCallback | 发送广播消息结果通知。是否必填:否。注意事项:传 [nullptr] 则意味着不接收回调通知。 |
详情
向房间发送广播消息,已经登录相同房间的用户能收到消息,消息可靠。
- 业务场景:一般在直播房间内使用。
- 调用时机:调用 [loginRoom] 登录房间之后。
- 相关回调:可通过 [onIMRecvBroadcastMessage] 接收到房间广播消息。
- 相关接口:可通过 [sendBarrageMessage] 函数发送弹幕消息,可通过 [sendCustomCommand] 函数发送自定义信令。
- 支持版本:1.2.1 及以上。
- 使用限制:同一房间内的广播消息发送频率不能高于 10条/s。单个用户在客户端调用此接口的最大QPS为2,关于此函数的使用限制,请参考 https://doc-zh.zego.im/article/7581 或联系 ZEGO 技术支持。
sendBarrageMessage
public void sendBarrageMessage(std::string roomID, std::string message, ZegoIMSendBarrageMessageCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 房间 ID,不得为空,最大长度小于 128 字节的字符串。 注意事项: 1.房间 ID 由您自己定义。 2. 仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', ''。 3. 如果需要与 Web SDK 互通,请不要使用 '%'。 |
| message | std::string | 消息内容。是否必填:是。取值范围:长度不超过 1024 字节。 |
| callback | ZegoIMSendBarrageMessageCallback | 发送弹幕消息结果通知。是否必填:否。注意事项:传 [nullptr] 则意味着不接收回调通知。 |
详情
向房间发送弹幕消息,已经登录相同房间的用户能收到消息,消息不可靠。
- 业务场景:一般用于房间内有大量消息收发,且不需要保证消息可靠性的场景,例如直播弹幕。
- 调用时机:调用 [loginRoom] 登录房间之后。
- 相关回调:可通过 [onIMRecvBarrageMessage] 接收到房间弹幕消息。
- 相关接口:可通过 [sendBroadcastMessage] 函数发送广播消息,可通过 [sendCustomCommand] 函数发送自定义信令。
- 支持版本:1.5.0 及以上。
- 使用限制:同一房间内的弹幕消息发送频率不能高于 20条/s。关于此函数的使用限制,请参考 https://doc-zh.zego.im/article/7581 或联系 ZEGO 技术支持。
sendCustomCommand
public void sendCustomCommand(std::string roomID, std::string command, std::vector<ZegoUser> toUserList, ZegoIMSendCustomCommandCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 房间 ID,不得为空,最大长度小于 128 字节的字符串。 注意事项: 1.房间 ID 由您自己定义。 2. 仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', ''。 3. 如果需要与 Web SDK 互通,请不要使用 '%'。 |
| command | std::string | 自定义信令内容。是否必填:是。取值范围:最大长度为 1024 字节。注意事项:为保护隐私,请勿在此接口填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。 |
| toUserList | std::vector<ZegoUser> | 信令的接收者列表。是否必填:是。取值范围:用户列表或者 [nullptr]。注意事项:为 [nullptr] 时 SDK 回向房间内所有用户发送自定义信令。 |
| callback | ZegoIMSendCustomCommandCallback | 发送信令结果通知。是否必填:否。注意事项:传 [nullptr] 则意味着不接收回调通知。 |
详情
向已经登录相同房间的其他用户发送点对点的信令,消息可靠。
- 业务场景:一般用于远程控制信令或用户与用户之间的消息发送。
- 调用时机:调用 [loginRoom] 登录房间之后。
- 相关回调:可通过 [onIMRecvCustomCommand] 接收到房间自定义信令。
- 相关接口:可通过 [sendBroadcastMessage] 函数发送广播消息,可通过 [sendBarrageMessage] 函数发送弹幕消息。
- 隐私保护声明:请勿在此接口填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。
- 支持版本:1.2.1 及以上。
- 使用限制:同一房间内向单个用户发送的自定义消息频率不能高于 200条/s,向多个用户发送的自定义消息不能高于 10条/s。关于此函数的使用限制,请参考 https://doc-zh.zego.im/article/7581 或联系 ZEGO 技术支持。
sendTransparentMessage
public void sendTransparentMessage(std::string roomID, const ZegoRoomSendTransparentMessage& message, ZegoRoomSendTransparentMessageCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| roomID | std::string | 房间 ID,不得为空,最大长度小于 128 字节的字符串。 注意事项: 1.房间 ID 由您自己定义。 2. 仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', ''。 3. 如果需要与 Web SDK 互通,请不要使用 '%'。 |
| message | const ZegoRoomSendTransparentMessage& | 发送透传消息的结构信息。 |
| callback | ZegoRoomSendTransparentMessageCallback | 发送信令结果通知。是否必填:否。注意事项:传 [nullptr] 则意味着不接收回调通知。 |
详情
向房间内发送透传消息。
- 业务场景:一般用于远程控制信令或用户与用户之间的消息发送。
- 调用时机:调用 [loginRoom] 登录房间之后。
- 相关回调:当发送的消息, mode 指定为 ZegoRoomTransparentMessageModeOnlyClient 或者 ZegoRoomTransparentMessageModeClientAndServer 可通过 [onRecvRoomTransparentMessage] 接收到发送消息的内容。
- 隐私保护声明:请勿在此接口填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。
- 支持版本:3.11.0 及以上。
- 使用限制:同一房间内向单个用户发送的自定义消息频率不能高于 200条/s 。
createMediaPlayer
public IZegoMediaPlayer* createMediaPlayer()ZegoExpressInterface.h创建媒体播放器实例对象。
- 业务场景:常用于播放媒体资源场景,例如播放视频文件,结合自定义视频采集将媒体资源的视频数据推送出去,远端可拉流观看。
- 调用时机:在初始化 SDK [createEngine] 之后。
- 相关接口:用户可以调用 [destroyMediaPlayer] 销毁媒体播放器实例对象。
- 支持版本:2.1.0 及以上。
- 使用限制:目前最多支持创建 4 个实例,超过后将返回 nullptr。
- 注意事项:媒体播放器的实例越多,对设备的性能开销越大。
媒体播放器实例,超过最大数量限制后将返回 nullptr。
destroyMediaPlayer
public void destroyMediaPlayer(IZegoMediaPlayer*& mediaPlayer)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mediaPlayer | IZegoMediaPlayer*& | 媒体播放器实例对象。 |
详情
销毁媒体播放器实例对象。
- 相关接口:用户可以调用 [createMediaPlayer] 创建媒体播放器实例对象。
- 支持版本:2.1.0 及以上。
createAudioEffectPlayer
public IZegoAudioEffectPlayer* createAudioEffectPlayer()ZegoExpressInterface.h创建音效播放器实例对象。
- 业务场景:当需要播放简短的声音效果,比如鼓掌,欢呼声等时,可以使用音效播放器来实现。
- 调用时机:在 [createEngine] 之后可调用。
- 相关接口:[destroyAudioEffectPlayer]。
- 支持版本:1.16.0 及以上。
- 使用限制:目前最多支持创建 1 个实例,超过后将返回 nullptr。
音效播放器实例,超过最大数量限制后将返回 nullptr。
destroyAudioEffectPlayer
public void destroyAudioEffectPlayer(IZegoAudioEffectPlayer*& audioEffectPlayer)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| audioEffectPlayer | IZegoAudioEffectPlayer*& | 音效播放器实例对象。 |
详情
销毁指定的音效播放器实例对象。
- 调用时机:在 [createAudioEffectPlayer] 之后可调用。
- 相关接口:[createAudioEffectPlayer]。
- 支持版本:1.16.0 及以上。
- 使用限制:无。
createMediaDataPublisher
public IZegoMediaDataPublisher* createMediaDataPublisher()ZegoExpressInterface.h开发者可以使用此接口创建 ZegoMediaDataPublisher 对象,来推本地的媒体资源文件,以实现服务器端推流的场景,例如 AI 课堂。
- 业务场景:常用于服务器端推流的场景,例如 AI 课堂。
- 调用时机:在调用 [createEngine] 函数创建引擎后。
- 支持版本:2.17.0 及以上。
- 注意事项:该接口返回主推流通道的实例对象。如果已经创建了,会返回已创建的实例对象。
媒体数据推流器实例。
createMediaDataPublisher
public IZegoMediaDataPublisher* createMediaDataPublisher(ZegoMediaDataPublisherConfig config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoMediaDataPublisherConfig | 配置媒体数据推流器。 |
详情
开发者可以使用此接口创建 ZegoMediaDataPublisher 对象,来推本地的媒体资源文件,以实现服务器端推流的场景,例如 AI 课堂。
- 业务场景:常用于服务器端推流的场景,例如 AI 课堂。
- 调用时机:在调用 [createEngine] 函数创建引擎后。
- 支持版本:3.4.0 及以上。
- 注意事项:该接口返回指定推流通道的实例对象。如果已经创建了,会返回已创建的实例对象。
返回值
媒体数据推流器实例。
destroyMediaDataPublisher
public void destroyMediaDataPublisher(IZegoMediaDataPublisher*& mediaDataPublisher)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mediaDataPublisher | IZegoMediaDataPublisher*& | 媒体数据推流器实例对象 |
详情
销毁媒体数据推流器实例对象。
- 业务场景:常用于服务器端推流的场景,例如 AI 课堂。
- 调用时机:在调用 [createEngine] 函数创建引擎后。
- 支持版本:2.17.0 及以上。
startRecordingCapturedData
public void startRecordingCapturedData(ZegoDataRecordConfig config, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoDataRecordConfig | 录制配置对象。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
开始录制本端音频或音视频,直接将音视频数据录制到本地文件,录制的数据将与该通道推流的数据一致。
- 相关回调:开始录制后将会收到 [onCapturedDataRecordStateUpdate] 录制状态回调和 [onCapturedDataRecordProgressUpdate] 录制进度回调。
- 支持版本:1.10.0 及以上。
- 使用限制:无。
- 注意事项:录制过程中不可以停止预览 [stopPreview] 或停止推流 [stopPublishingStream],否则 SDK 将主动结束当前录制任务。媒体播放器的数据需要混入到推流中才能录制。
stopRecordingCapturedData
public void stopRecordingCapturedData(ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| channel | ZegoPublishChannel | 推流通道。 |
详情
结束录制本端音频或音视频。
- 调用时机:在 [startRecordingCapturedData] 之后。
- 支持版本:1.10.0 及以上。
- 使用限制:无。
setDataRecordEventHandler
public void setDataRecordEventHandler(std::shared_ptr<IZegoDataRecordEventHandler> eventHandler)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| eventHandler | std::shared_ptr<IZegoDataRecordEventHandler> | 数据录制事件回调。 |
详情
实现 ZegoDataRecordEventHandler 中的函数,以获取当前录制的状态和录制进度等。
- 调用时机:在 [createEngine] 后。
- 支持版本:1.10.0 及以上。
- 使用限制:无。
startPerformanceMonitor
public void startPerformanceMonitor(unsigned int millisecond)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| millisecond | unsigned int | 监控时间周期。 单位为毫秒。取值范围为 [1000, 10000]。默认值为 2000 ms。 |
详情
启动系统性能监控,检测系统和应用的 CPU 使用率、内存使用率。支持设置监听时间间隔。
- 业务场景:通过监控系统性能,协助用户快速定位、解决性能问题,提升用户体验。
- 调用时机:需要在 [createEngine] 之后调用。
- 相关回调:启动系统性能监控后,可通过 [onPerformanceStatusUpdate] 接收系统性能状态回调。[onPerformanceStatusUpdate] 回调通知周期为 millisecond 参数设置的值。
- 相关接口:可通过 [stopPerformanceMonitor] 停止系统性能监控。
- 支持版本:1.19.0 及以上。
- 使用限制:无。
stopPerformanceMonitor
public void stopPerformanceMonitor()ZegoExpressInterface.h停止系统性能监控。停止系统性能监控后,将停止触发 [onPerformanceStatusUpdate] 回调。
- 业务场景:通过监控系统性能,协助用户快速定位、解决性能问题,提升用户体验。
- 调用时机:需要在 [createEngine] 之后调用。
- 相关接口:可通过 [startPerformanceMonitor] 启动系统性能监控。
- 支持版本:1.19.0 及以上。
- 使用限制:无。
startNetworkProbe
public void startNetworkProbe(ZegoNetworkProbeConfig config, ZegoNetworkProbeResultCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoNetworkProbeConfig | 网络探测配置。 |
| callback | ZegoNetworkProbeResultCallback | 网络探测结果回调。 |
详情
本地网络的一些问题可能会导致音视频通话失败。通过调用本函数可以探测当前各网络协议层是否正常,协助定位和解决相关的网络问题。
- 业务场景:在推拉流之前,可通过网络探测定位一些可能存在的网络问题。
- 调用时机:需要在 [createEngine] 之后调用。
- 相关接口:可通过 [stopNetworkProbe] 停止网络探测。
- 支持版本:2.3.0 及以上。
- 使用限制:SDK 在同一时刻不会进行多个网络探测,即若存在进行中的网络探测时,重复调用本函数将不生效。
- 注意事项:SDK 内部依次探测 http、tcp、udp。如果中途探测失败,将不会继续后续探测。因此读取探测结果中的各项值时,需注意判空。一次网络探测可能耗时比较长,开发者可按需调用 [stopNetworkProbe] 来停止网络探测。不建议在推拉流过程中启动网络探测。
stopNetworkProbe
public void stopNetworkProbe()ZegoExpressInterface.h停止网络探测。
- 业务场景:在推拉流之前,可通过网络探测定位一些可能存在的网络问题。
- 调用时机:需要在 [createEngine] 之后调用。
- 相关接口:可通过 [startNetworkProbe] 启动网络探测。
- 支持版本:2.3.0 及以上。
- 使用限制:无。
testNetworkConnectivity
public void testNetworkConnectivity(ZegoTestNetworkConnectivityCallback callback)ZegoExpressInterface.hstartNetworkSpeedTest
public void startNetworkSpeedTest(ZegoNetworkSpeedTestConfig config, unsigned int interval)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoNetworkSpeedTestConfig | 网络测速度配置。 |
| interval | unsigned int | 网络测速周期。单位为毫秒,默认为 3000 ms。 |
详情
网络连通状态下的上行/下行网络测速。
- 业务场景:用于检测当前网络环境是否适合推/拉指定码率的流。
- 调用时机:需要在 [loginRoom] 后调用。若在测速中途开始推流/拉流,则测速会自动停止。
- 相关接口:可通过 [stopNetworkSpeedTest] 停止网络测速。
- 支持版本:1.20.0 及以上。
- 使用限制:单次网络测速默认最大允许测试时间为30秒。
- 注意事项:可监听 [onNetworkSpeedTestQualityUpdate] 回调来获取测速结果,每 3 秒回调一次结果。若测速过程中发生异常,将会触发 [onNetworkSpeedTestError] 回调。若重复多次调用本函数,将以最后一次调用的测速配置为准。
stopNetworkSpeedTest
public void stopNetworkSpeedTest()ZegoExpressInterface.h停止网络测速。
- 业务场景:用于检测当前网络环境是否适合推/拉指定码率的流。
- 调用时机:需要在 [createEngine] 之后调用。
- 相关接口:可通过 [startNetworkSpeedTest] 启动网络测速。
- 支持版本:1.20.0 及以上。
- 使用限制:无。
- 注意事项:停止网络测速后,将不再触发 [onNetworkSpeedTestQualityUpdate] 回调。
getNetworkTimeInfo
public ZegoNetworkTimeInfo getNetworkTimeInfo()ZegoExpressInterface.h获取当前网络时间(NTP),包括当前网络时间的时间戳和最大误差。
- 业务场景:在进行多端行为同步时,需要获取同步网络时间对当前时间进行校准。
- 调用时机:需要在 [createEngine] 之后调用。
- 支持版本:2.9.0 及以上。
- 使用限制:无。
startDumpData
public void startDumpData(ZegoDumpDataConfig config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoDumpDataConfig | 转储数据配置 |
详情
转储音视频数据,目前仅支持音频数据。
- 业务场景:这是调试工具。当推流时发现音频采集,3A处理,或者其他环境的处理有问题时,可以通过转储音频数据并上传到 ZEGO 服务端做一步分析。
- 调用时机:需要在 [createEngine] 之后调用。
- 相关接口:可通过 [stopDumpData] 结束。
- 支持版本:3.10.0 及以上。
- 使用限制:无
- 注意事项:开始转储数据后,会触发 [onStartDumpData] 回调。
stopDumpData
public void stopDumpData()ZegoExpressInterface.h停止转储数据。
- 业务场景:这是调试工具。当推流时发现音频采集,3A处理,或者其他环境的处理有问题时,可以通过转储音频数据并上传到 ZEGO 服务端做一步分析。
- 调用时机:需要在 [startDumpData] 之后调用。
- 支持版本:3.10.0 及以上。
- 使用限制:无
- 注意事项:会触发 [onStopDumpData] 回调。
uploadDumpData
public void uploadDumpData()ZegoExpressInterface.h上传转储数据到 ZEGO 服务端。
- 业务场景:这是调试工具。当推流时发现音频采集,3A处理,或者其他环境的处理有问题时,可以通过转储音频数据并上传到 ZEGO 服务端做一步分析。
- 调用时机:需要在 [stopDumpData] 之后调用。
- 支持版本:3.10.0 及以上。
- 使用限制:无
- 注意事项:上传转储数据后,会触发 [onUploadDumpData] 回调。
removeDumpData
public void removeDumpData()ZegoExpressInterface.h删除转储数据。
- 业务场景:这是调试工具。当推流时发现音频采集,3A处理,或者其他环境的处理有问题时,可以通过转储音频数据并上传到 ZEGO 服务端做一步分析。
- 调用时机:需要在 [stopDumpData] 之后调用。如果转储数据要上传到 ZEGO 服务端,那应该在上传成功后再删除。
- 支持版本:3.10.0 及以上。
- 使用限制:无
enableCustomVideoRender
public void enableCustomVideoRender(bool enable, ZegoCustomVideoRenderConfig* config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启 |
| config | ZegoCustomVideoRenderConfig* | 自定义渲染配置 |
详情
enable 为 "true" 时开启视频自定义渲染,为 "false" 时关闭视频自定义渲染。
- 业务场景:使用美颜功能或 App 使用了跨平台界面框架(例如 Qt 需要有复杂层级关系的界面以实现高体验的交互)或游戏引擎(例如 Unity, Unreal Engine, Cocos)等。
- 默认值:没有调用该函数时,默认关闭自定义视频渲染。
- 调用时机:[createEngine]之后,调用 [startPreview]、[startPublishingStream]、[startPlayingStream]、[createRealTimeSequentialDataManager] 之前设置,且调用 [logoutRoom] 之后才能修改配置。
- 相关回调:调用 [setCustomVideoRenderHandler] 可设置回调用于获取视频帧数据。[onCapturedVideoFrameRawData] 本地预览视频帧数据回调,[onRemoteVideoFrameRawData] 远端拉流视频帧数据回调。
- 支持版本:1.9.0 及以上。
- 注意事项:自定义视频渲染功能可以与自定义视频采集功能同时使用,但当两者同时开启时,自定义视频渲染的本地采集帧回调将不会再被触发,开发者应该直接在自定义视频采集源里直接获取采集视频帧。
setCustomVideoRenderHandler
public void setCustomVideoRenderHandler(std::shared_ptr<IZegoCustomVideoRenderHandler> handler)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| handler | std::shared_ptr<IZegoCustomVideoRenderHandler> | 自定义视频渲染回调对象 |
详情
自定义视频渲染,由开发者负责把视频数据渲染到 UI 组件上。设置该回调后,当开发者调用启动预览 [startPreview]、开始推流 [startPublishingStream]、开始拉流[startPlayingStream] 时会触发向开发者抛视频数据的回调函数。
- 业务场景:使用美颜功能或 App 使用了跨平台界面框架(例如 Qt 需要有复杂层级关系的界面以实现高体验的交互)或游戏引擎(例如 Unity, Unreal Engine, Cocos)等。
- 调用时机:[createEngine] 之后。
- 相关回调:[onCapturedVideoFrameRawData] 本地预览视频帧数据回调,[onRemoteVideoFrameRawData] 远端拉流视频帧数据回调。
- 支持版本:1.9.0 及以上。
enableCapturedVideoCustomVideoRender
public void enableCapturedVideoCustomVideoRender(bool enable, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启 |
| channel | ZegoPublishChannel | 推流通道 |
详情
在推流过程中开关采集视频的自定义视频渲染。
- 业务场景:使用美颜功能或 App 使用了跨平台界面框架(例如 Qt 需要有复杂层级关系的界面以实现高体验的交互)或游戏引擎(例如 Unity, Unreal Engine, Cocos)等。
- 默认值:在[enableCustomVideoRender]开启自定义视频渲染之后,会将所有采集的视频都做自定义视频数据。
- 调用时机:在[enableCustomVideoRender]开启自定义视频渲染之后,通过调用[enableCapturedVideoCustomVideoRender]单独配置指定通道是否自定义视频渲染。
- 相关回调:调用 [setCustomVideoRenderHandler] 可设置回调用于获取视频帧数据。[onCapturedVideoFrameRawData] 本地预览视频帧数据回调,[onRemoteVideoFrameRawData] 远端拉流视频帧数据回调。
- 支持版本:3.13.0 及以上。
- 注意事项:必须在[enableCustomVideoRender]开启自定义视频渲染之后才可以调用本接口。自定义视频渲染功能可以与自定义视频采集功能同时使用,但当两者同时开启时,自定义视频渲染的本地采集帧回调将不会再被触发,开发者应该直接在自定义视频采集源里直接获取采集视频帧。
enableRemoteVideoCustomVideoRender
public void enableRemoteVideoCustomVideoRender(bool enable, std::string streamID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启 |
| streamID | std::string | 拉流的流 ID。 |
详情
在拉流过程中开关视频的自定义视频渲染。
- 业务场景:使用美颜功能或 App 使用了跨平台界面框架(例如 Qt 需要有复杂层级关系的界面以实现高体验的交互)或游戏引擎(例如 Unity, Unreal Engine, Cocos)等。
- 默认值:在[enableCustomVideoRender]开启自定义视频渲染之后,会将所有远端拉流的视频都做自定义视频数据。
- 调用时机:在[enableCustomVideoRender]开启自定义视频渲染之后,通过调用[enableRemoteVideoCustomVideoRender]单独配置指定流是否自定义视频渲染。
- 相关回调:调用 [setCustomVideoRenderHandler] 可设置回调用于获取视频帧数据。[onCapturedVideoFrameRawData] 本地预览视频帧数据回调,[onRemoteVideoFrameRawData] 远端拉流视频帧数据回调。
- 支持版本:3.13.0 及以上。
- 注意事项:必须在[enableCustomVideoRender]开启自定义视频渲染之后才可以调用本接口。
enableCustomVideoCapture
public void enableCustomVideoCapture(bool enable, ZegoCustomVideoCaptureConfig* config, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启 |
| config | ZegoCustomVideoCaptureConfig* | 自定义采集配置 |
| channel | ZegoPublishChannel | 推流通道 |
详情
enable 为 "true" 时开启视频自定义采集,为 "false" 时关闭视频自定义采集。
- 业务场景:开发者开发的 App使用了第三方美颜厂商的美颜 SDK,直播非摄像头采集的数据等。
- 默认值:没有调用该函数时,默认关闭自定义视频采集。
- 调用时机:[createEngine] 之后,调用 [startPreview]、[startPublishingStream]、[createRealTimeSequentialDataManager] 之前。如果需要修改配置,请先调用 [logoutRoom] 登出房间。
- 相关回调:当开发者开启自定义采集时,通过调用 [setCustomVideoCaptureHandler] 可设置接收自定义采集启停事件通知。
- 支持版本:1.9.0 及以上。
- 注意事项:自定义视频渲染功能可以与自定义视频采集功能同时使用,但当两者同时开启时,自定义视频渲染的本地采集帧回调将不会再被触发,开发者应该直接在自定义视频采集源里直接获取采集视频帧。
setCustomVideoCaptureHandler
public void setCustomVideoCaptureHandler(std::shared_ptr<IZegoCustomVideoCaptureHandler> handler)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| handler | std::shared_ptr<IZegoCustomVideoCaptureHandler> | 自定义视频采集回调对象 |
详情
设置自定义视频采集的回调。即由开发者负责采集视频数据,并将采集到的视频数据发送给 SDK 进行视频数据的编码与推送到 ZEGO RTC 服务器。
- 业务场景:该功能一般为使用第三方美颜功能或游戏录屏直播的开发者使用。
- 调用时机:[createEngine] 之后。
- 相关回调:[onStart] 开始采集,[onStop] 停止采集。
- 支持版本:1.9.0 及以上。
- 注意事项:由于使用自定义视频采集时,SDK 将不再启动摄像头去采集视频数据,开发者需自行对视频采集源进行视频数据的采集。当开发者调用启动预览 [startPreview]、开始推流 [startPublishingStream] 时会触发通知开发者可以开始发送视频数据的回调函数。当停止预览 [stopPreview] 且 停止推流[stopPublishingStream] 时会触发通知开发者可以停止发送视频数据的回调函数。
sendCustomVideoCaptureRawData
public void sendCustomVideoCaptureRawData(const unsigned char* data, unsigned int dataLength, ZegoVideoFrameParam params, unsigned long long referenceTimeMillisecond, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | const unsigned char* | 要向 SDK 发送的视频帧数据 |
| dataLength | unsigned int | 视频帧数据长度 |
| params | ZegoVideoFrameParam | 视频帧的参数 |
| referenceTimeMillisecond | unsigned long long | 视频帧的索引时间,UNIX 时间戳,单位为毫秒 |
| channel | ZegoPublishChannel | 推流通道 |
详情
向SDK发送自定义采集的视频帧原始数据。
- 调用时机:收到 [onStart] 通知之后,开发者开始采集后调用,在 [onStop] 通知之后结束调用。
- 相关接口:[enableCustomVideoCapture]、[setCustomVideoCaptureHandler]。
- 支持版本:1.9.0 及以上。
- 注意事项:调用此接口必须是 [enableCustomVideoCapture] 传递的参数类型为 RAW_DATA。
sendCustomVideoCaptureD3DTextureData
public int sendCustomVideoCaptureD3DTextureData(void* texture, int rotation, unsigned long long referenceTimeMillisecond, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| texture | void* | D3D 纹理 |
| rotation | int | 视频帧的旋转角度,SDK 以顺时针方向旋转 |
| referenceTimeMillisecond | unsigned long long | 视频帧的索引时间,UNIX 时间戳,单位为毫秒 |
| channel | ZegoPublishChannel | 推流通道 |
详情
向SDK发送自定义采集的视频帧类型为 D3D Texture 的数据。
- 调用时机:收到 [onStart] 通知之后,开发者开始采集后调用,在 [onStop] 通知之后结束调用。
- 相关接口:[enableCustomVideoCapture]、[setCustomVideoCaptureHandler]。
- 支持版本:3.3.0 及以上。
- 注意事项:调用此接口必须是 [enableCustomVideoCapture] 传递的参数类型为 ZEGO_VIDEO_BUFFER_TYPE_D3D_TEXTURE_2D。
返回值
错误码,详情请参考 常见错误码文档 https://doc-zh.zego.im/zh/4378.html。
sendCustomVideoCaptureEncodedData
public void sendCustomVideoCaptureEncodedData(const unsigned char* data, unsigned int dataLength, ZegoVideoEncodedFrameParam params, unsigned long long referenceTimeMillisecond, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | const unsigned char* | 要向 SDK 发送的视频帧数据 |
| dataLength | unsigned int | 视频帧数据长度 |
| params | ZegoVideoEncodedFrameParam | 视频帧的参数 |
| referenceTimeMillisecond | unsigned long long | 视频帧的索引时间,UNIX 时间戳,单位为毫秒 |
| channel | ZegoPublishChannel | 推流通道 |
详情
向 SDK 发送自定义采集的视频帧编码后的数据。
- 调用时机:收到 [onStart] 通知之后,开发者开始采集后调用,在 [onStop] 通知之后结束调用。
- 相关接口:[enableCustomVideoCapture]、[setCustomVideoCaptureHandler]。
- 支持版本:1.9.0 及以上。
- 注意事项:推荐每 2s 一个 GOP,每个 I 帧必须携带 SPS 和 PPS,且放在最前面,并且需要把 SPS 和 PPS 与 I 帧合并到一帧进行发送。调用此接口前需要确保调用 [enableCustomVideoCapture] 时指定的参数类型为 [EncodedData]
setCustomVideoCaptureFillMode
public void setCustomVideoCaptureFillMode(ZegoViewMode mode, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mode | ZegoViewMode | 画面填充缩放模式 |
| channel | ZegoPublishChannel | 推流通道 |
详情
当开启自定义视频采集功能时,可使用此接口设置视频画面的缩放填充模式。
- 业务场景:如自定义采集分辨率、SDK编码分辨率不一致时,SDK将根据填充模式处理视频帧,调整为编码分辨率。
- 调用时机:调用 [sendCustomVideoCaptureRawData]、[sendCustomVideoCaptureTextureData]、[sendCustomVideoCapturePixelBuffer]、[sendCustomVideoCaptureEncodedData] 之前。
- 支持版本:1.10.0 及以上。
setCustomVideoCaptureDeviceState
public void setCustomVideoCaptureDeviceState(bool isEnable, ZegoRemoteDeviceState state, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| isEnable | bool | 设备是否处于开启状态。 |
| state | ZegoRemoteDeviceState | 设备状态。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
用户可通过此接口设置指定推流通道的自定义采集设备状态。
- 调用时机:在收到 [onStart] 回调后调用。
- 相关回调:拉本地流的远端用户可通过监听 [onRemoteCameraStateUpdate] 获取推流端设备状态变更。
- 支持版本:2.15.0 及以上。
- 使用限制:无。
setCustomVideoCaptureRegionOfInterest
public void setCustomVideoCaptureRegionOfInterest(std::vector<ZegoRoiRect> rectList, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rectList | std::vector<ZegoRoiRect> | ROI 矩形区域列表,当前最多支持 6 个区域。 |
| channel | ZegoPublishChannel | 推流通道 |
详情
可通过此函数设置编码器的感兴趣区域(ROI)。
- 调用时机:在收到 [onStart] 回调后调用。
- 支持版本:2.16.0 及以上。
- 使用限制:目前仅特定的视频编码器支持此功能,使用前请联系技术支持。
- 注意事项:此函数目前为实验性功能,使用前请联系技术支持。
enableCustomVideoProcessing
public void enableCustomVideoProcessing(bool enable, ZegoCustomVideoProcessConfig* config, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启。是否必填:是。 |
| config | ZegoCustomVideoProcessConfig* | 自定义视频前处理配置。是否必填:是。注意事项:传 nullptr 则使用平台默认值。 |
| channel | ZegoPublishChannel | 推流通道。是否必填:否。默认值:主推流通道。 |
详情
当开发者开启自定义前处理时,通过调用 [setCustomVideoProcessHandler] 可设置设置自定义视频前处理回调。
- 业务场景:开发者自行采集视频数据或获取到 SDK 采集的视频数据后,若 SDK 自带的基础美颜和水印功能无法满足开发者需求时(例如美颜效果无法达到预期),可以结合 ZegoEffects SDK 对视频进行一些特殊处理,例如美颜、添加挂件等,该过程即为自定义视频前处理。
- 默认值:默认关闭。
- 调用时机:必须在调用 [startPreview]、[startPublishingStream]、[createRealTimeSequentialDataManager] 之前设置。如果需要修改配置,请先调用 [logoutRoom] 登出房间,否则不会生效。
- 相关接口:调用 [setCustomVideoProcessHandler] 函数可设置设置自定义视频前处理回调。
- 支持版本:2.2.0 及以上(Android/iOS/macOS原生),2.4.0 及以上(Windows/macOS C++)。
- 使用限制:无。
setCustomVideoProcessHandler
public void setCustomVideoProcessHandler(std::shared_ptr<IZegoCustomVideoProcessHandler> handler)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| handler | std::shared_ptr<IZegoCustomVideoProcessHandler> | 自定义视频前处理回调对象。是否必填:是。 |
详情
当开发者开启自定义前处理时,通过调用 [setCustomVideoProcessHandler] 可设置设置自定义视频前处理回调,获取原始视频数据。
- 业务场景:开发者自行采集视频数据或获取到 SDK 采集的视频数据后,若 SDK 自带的基础美颜和水印功能无法满足开发者需求时(例如美颜效果无法达到预期),可以结合 ZegoEffects SDK 对视频进行一些特殊处理,例如美颜、添加挂件等,该过程即为自定义视频前处理。
- 调用时机:在 [startPreview]、[startPublishingStream]、[createRealTimeSequentialDataManager] 之前调用,否则可能会导致获取视频数据的时机过慢。
- 相关接口:调用 [enableCustomVideoProcessing] 函数可开启自定义视频前处理回调。
- 支持版本:2.2.0 及以上(Android/iOS/macOS原生),2.4.0 及以上(Windows/macOS C++)。
- 使用限制:无。
sendCustomVideoProcessedRawData
public void sendCustomVideoProcessedRawData(const unsigned char** data, unsigned int* dataLength, ZegoVideoFrameParam params, unsigned long long referenceTimeMillisecond, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | const unsigned char** | 原始视频数据。RGB 格式数据存放位置为 data[0],YUV 格式数据存放位置分别为 Y 分量:data[0],U 分量:data[1],V 分量:data[2]。 |
| dataLength | unsigned int* | 原始视频数据长度。RGB 格式数据长度存放位置为 dataLength[0],YUV 格式数据存放位置分别为 Y 分量长度:dataLength[0],U 分量长度:dataLength[1],V 分量长度:dataLength[2]。 |
| params | ZegoVideoFrameParam | 视频帧的参数。 |
| referenceTimeMillisecond | unsigned long long | 视频帧的索引时间,UNIX 时间戳,单位为毫秒。 |
| channel | ZegoPublishChannel | 推流通道。是否必填:否。默认值:主推流通道。 |
详情
开启自定义视频前处理时,将自定义视频前处理后的原始视频数据发送给 SDK,支持其他路推流。
- 业务场景:开发者自行采集视频数据或获取到 SDK 采集的视频数据后,若 SDK 自带的基础美颜和水印功能无法满足开发者需求时(例如美颜效果无法达到预期),可以结合 ZegoEffects SDK 对视频进行一些特殊处理,例如美颜、添加挂件等,该过程即为自定义视频前处理。
- 调用时机:必须在 [onCapturedUnprocessedRawData] 回调中调用。
- 平台差异:仅在 Windows 平台生效。
- 支持版本:2.4.0 及以上。
- 使用限制:当调用 [enableCustomVideoProcessing] 开启自定义视频前处理且 config 的 bufferType 传入 [ZEGO_VIDEO_BUFFER_TYPE_RAW_DATA] 时,此接口生效。
sendCustomVideoProcessedRawData
public void sendCustomVideoProcessedRawData(const unsigned char** data, unsigned int* dataLength, ZegoVideoFrameParam params, unsigned long long referenceTimeMillisecond, ZegoProcessedDataUsageType usage, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | const unsigned char** | 原始视频数据。RGB 格式数据存放位置为 data[0],YUV 格式数据存放位置分别为 Y 分量:data[0],U 分量:data[1],V 分量:data[2]。 |
| dataLength | unsigned int* | 原始视频数据长度。RGB 格式数据长度存放位置为 dataLength[0],YUV 格式数据存放位置分别为 Y 分量长度:dataLength[0],U 分量长度:dataLength[1],V 分量长度:dataLength[2]。 |
| params | ZegoVideoFrameParam | 视频帧的参数。 |
| referenceTimeMillisecond | unsigned long long | 视频帧的索引时间,UNIX 时间戳,单位为毫秒。 |
| usage | ZegoProcessedDataUsageType | 数据的用途 |
| channel | ZegoPublishChannel | 推流通道。是否必填:否。默认值:主推流通道。 |
详情
开启自定义视频前处理时,将自定义视频前处理后的原始视频数据发送给 SDK,支持其他路推流。
- 业务场景:开发者自行采集视频数据或获取到 SDK 采集的视频数据后,若 SDK 自带的基础美颜和水印功能无法满足开发者需求时(例如美颜效果无法达到预期),可以结合 ZegoEffects SDK 对视频进行一些特殊处理,例如美颜、添加挂件等,该过程即为自定义视频前处理。
- 调用时机:必须在 [onCapturedUnprocessedRawData] 回调中调用。
- 平台差异:仅在 Windows 平台生效。
- 支持版本:3.14.0 及以上。
- 使用限制:当调用 [enableCustomVideoProcessing] 开启自定义视频前处理且 config 的 bufferType 传入 [ZEGO_VIDEO_BUFFER_TYPE_RAW_DATA] 时,此接口生效。
sendCustomVideoProcessedCVPixelBuffer
public void sendCustomVideoProcessedCVPixelBuffer(void* buffer, unsigned long long timestamp, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| buffer | void* | 要向 SDK 发送的 CVPixelBuffer 类型视频帧数据。 |
| timestamp | unsigned long long | 该视频帧的时间戳。 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
开启自定义视频前处理时,将自定义视频前处理后的 [CVPixelBuffer] 格式视频数据发送给 SDK,支持其他路推流。
- 业务场景:开发者自行采集视频数据或获取到 SDK 采集的视频数据后,若 SDK 自带的基础美颜和水印功能无法满足开发者需求时(例如美颜效果无法达到预期),可以结合 ZegoEffects SDK 对视频进行一些特殊处理,例如美颜、添加挂件等,该过程即为自定义视频前处理。
- 调用时机:必须在 [onCapturedUnprocessedCVPixelbuffer] 回调中调用。
- 平台差异:仅在 iOS/macOS 平台生效。
- 支持版本:2.2.0 及以上(iOS原生),2.4.0及以上(macOS C++)。
- 使用限制:当调用 [enableCustomVideoProcessing] 开启自定义视频前处理且 config 的 bufferType 传入 [ZegoVideoBufferTypeCVPixelBuffer] 或 [ZegoVideoBufferTypeNV12CVPixelBuffer] 时,此接口生效。
sendCustomVideoProcessedCVPixelBuffer
public void sendCustomVideoProcessedCVPixelBuffer(void* buffer, unsigned long long timestamp, ZegoProcessedDataUsageType usage, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| buffer | void* | 要向 SDK 发送的 CVPixelBuffer 类型视频帧数据。 |
| timestamp | unsigned long long | 该视频帧的时间戳。 |
| usage | ZegoProcessedDataUsageType | 数据的用途 |
| channel | ZegoPublishChannel | 推流通道。 |
详情
开启自定义视频前处理时,将自定义视频前处理后的 [CVPixelBuffer] 格式视频数据发送给 SDK,支持其他路推流。
- 业务场景:开发者自行采集视频数据或获取到 SDK 采集的视频数据后,若 SDK 自带的基础美颜和水印功能无法满足开发者需求时(例如美颜效果无法达到预期),可以结合 ZegoEffects SDK 对视频进行一些特殊处理,例如美颜、添加挂件等,该过程即为自定义视频前处理。
- 调用时机:必须在 [onCapturedUnprocessedCVPixelbuffer] 回调中调用。
- 平台差异:仅在 iOS/macOS 平台生效。
- 支持版本:3.14.0 及以上(iOS原生, macOS C++)。
- 使用限制:当调用 [enableCustomVideoProcessing] 开启自定义视频前处理且 config 的 bufferType 传入 [ZegoVideoBufferTypeCVPixelBuffer] 或 [ZegoVideoBufferTypeNV12CVPixelBuffer] 时,此接口生效。
enableCustomAudioCaptureProcessing
public void enableCustomAudioCaptureProcessing(bool enable, ZegoCustomAudioProcessConfig* config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启本地采集自定义音频处理。 |
| config | ZegoCustomAudioProcessConfig* | 自定义音频处理配置。 |
详情
开启自定义音频处理(耳返前),开发者可以通过 [onProcessCapturedAudioData] 收到本地采集的音频帧,并且可以对音频数据进行修改。
- 业务场景:如果开发者想在采集音频数据后或拉取远端音频数据渲染前,通过自定义处理实现特殊功能(例如变声、美声等)时。
- 调用时机:需要在 [startPublishingStream]、 [startPlayingStream]、 [startPreview]、 [createMediaPlayer]、 [createAudioEffectPlayer] 和 [createRealTimeSequentialDataManager] 之前调用才有效。
- 支持版本:1.13.0 及以上。
- 使用限制:无。
enableCustomAudioCaptureProcessingAfterHeadphoneMonitor
public void enableCustomAudioCaptureProcessingAfterHeadphoneMonitor(bool enable, ZegoCustomAudioProcessConfig* config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启本地采集自定义音频处理。 |
| config | ZegoCustomAudioProcessConfig* | 自定义音频处理配置。 |
详情
开启自定义音频处理(耳返后),开发者可以通过 [onProcessCapturedAudioDataAfterUsedHeadphoneMonitor] 收到本地采集的音频帧,并且可以对音频数据进行修改。
- 业务场景:如果开发者想在采集音频数据后或拉取远端音频数据渲染前,通过自定义处理实现特殊功能(例如变声、美声等)时。
- 调用时机:需要在 [startPublishingStream]、 [startPlayingStream]、 [startPreview]、 [createMediaPlayer]、 [createAudioEffectPlayer] 和 [createRealTimeSequentialDataManager] 之前调用才有效。
- 支持版本:1.13.0 及以上。
- 使用限制:无。
enableBeforeAudioPrepAudioData
public void enableBeforeAudioPrepAudioData(bool enable, ZegoAudioFrameParam param)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启抛出 SDK 内部音频前处理前的音频数据功能。 |
| param | ZegoAudioFrameParam | 音频帧参数。目前支持 0、16k、32k、44.1k、48k 的采样率,0 表示使用 SDK 内部使用的采样率;支持未知声道、单声道、双声道,未知声道表示使用 SDK 内部使用的声道数。 |
详情
开启抛出 SDK 内部音频前处理前的音频数据功能,开发者可以通过 [onBeforeAudioPrepAudioData] 收到 SDK 内部音频前处理前的音频数据。
- 调用时机:需要在 [createEngine] 之后调用有效。
- 支持版本:3.11.0 及以上。
- 使用限制:无。
enableCustomAudioRemoteProcessing
public void enableCustomAudioRemoteProcessing(bool enable, ZegoCustomAudioProcessConfig* config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启远端拉流自定义音频处理。 |
| config | ZegoCustomAudioProcessConfig* | 自定义音频处理配置。 |
详情
开启远端拉流自定义音频处理,开发者可以通过 [onProcessRemoteAudioData] 收到远端拉流的音频帧,并且可以对音频数据进行修改。
- 业务场景:如果开发者想在拉取远端音频数据渲染前,通过自定义处理实现特殊功能(例如变声、美声等)时。
- 调用时机:需要在 [startPublishingStream]、 [startPlayingStream]、 [startPreview]、 [createMediaPlayer]、 [createAudioEffectPlayer] 和 [createRealTimeSequentialDataManager] 之前调用才有效。
- 支持版本:1.13.0 及以上。
- 使用限制:无。
enableCustomAudioPlaybackProcessing
public void enableCustomAudioPlaybackProcessing(bool enable, ZegoCustomAudioProcessConfig* config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启 SDK 播放音频数据自定义音频处理。 |
| config | ZegoCustomAudioProcessConfig* | 自定义音频处理配置。 |
详情
开启 SDK 播放的音频数据的自定义音频处理,开发者可以通过 [onProcessPlaybackAudioData] 收到 SDK 全部要播放的音频混合后的数据的音频帧,并且可以对音频数据进行修改。
- 业务场景:如果开发者想在采集音频数据后,通过自定义处理实现特殊功能(例如变声、美声等)时。
- 调用时机:需要在 [startPublishingStream]、 [startPlayingStream]、 [startPreview]、 [createMediaPlayer]、 [createAudioEffectPlayer] 和 [createRealTimeSequentialDataManager] 之前调用才有效。
- 支持版本:1.13.0 及以上。
- 使用限制:无。
setCustomAudioProcessHandler
public void setCustomAudioProcessHandler(std::shared_ptr<IZegoCustomAudioProcessHandler> handler)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| handler | std::shared_ptr<IZegoCustomAudioProcessHandler> | 自定义音频处理回调。 |
详情
开启自定义音频处理时,通过此函数设置自定义音频处理回调,开发者可以在回调中修改处理音频帧数据。
- 业务场景:如果开发者想在采集音频数据后或拉取远端音频数据渲染前,通过自定义处理实现特殊功能(例如变声、美声等)时。
- 调用时机:创建引擎后。
- 支持版本:1.13.0 及以上。
- 使用限制:无。
startAudioDataObserver
public void startAudioDataObserver(unsigned int observerBitMask, ZegoAudioFrameParam param)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| observerBitMask | unsigned int | 回调使能掩码标记位,参考 [ZegoAudioDataCallbackBitMask] 枚举;当转换为二进制时,0b01 即 1 << 0 表示触发 [onCapturedAudioData], 0b10 即 1 << 1 表示触发 [onPlaybackAudioData], 0b100 即 1 << 2 表示触发 [onMixedAudioData], 0b1000 即 1 << 3 表示触发 [onPlayerAudioData]。掩码可组合以使不同的回调同时触发。 |
| param | ZegoAudioFrameParam | 音频帧参数。 |
详情
开启自定义音频处理时,通过此函数开启音频数据回调监测。
- 业务场景:需要监测原始音频时。
- 调用时机:创建引擎后。
- 支持版本:1.1.0 及以上。
- 使用限制:当调用此函数后且已通过调用 [setAudioDataHandler] 设置回调后才会触发音频监测。如果要开启 [onPlayerAudioData] 回调,那么还必须正在拉流中,且此时调用 [startAudioDataObserver] 函数传入的采样率不支持 8000Hz、22050Hz 和 24000Hz。
- 注意事项:该接口会启动音视频引擎,会占用麦克风设备。
stopAudioDataObserver
public void stopAudioDataObserver()ZegoExpressInterface.h停止音频数据回调监测。
- 业务场景:需要监测原始音频时。
- 调用时机:调用 [startAudioDataObserver] 开启音频数据监测后。
- 支持版本:1.1.0 及以上。
setAudioDataHandler
public void setAudioDataHandler(std::shared_ptr<IZegoAudioDataHandler> handler)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| handler | std::shared_ptr<IZegoAudioDataHandler> | 接收音频数据的回调对象。 |
详情
可以调用此函数以接收 SDK 旁路抛出的音频数据。
- 业务场景:当开发者需要获取远端用户的音频数据或者需要获取本地麦克风采集到的数据另做他用(例如纯音频录制、纯音频第三方监控、纯音频实时分析)时。
- 调用时机:创建引擎后。
- 相关接口:开启音频数据监测调用 [startAudioDataObserver],关闭音频数据监测调用 [stopAudioDataObserver]。
- 支持版本:1.1.0 及以上。
- 使用限制:所设置的回调需要在调用 [startAudioDataObserver] 之后且正在推流或拉流状态才有效。
- 注意事项:抛出的音频数据格式为 pcm,SDK 仍然控制声音设备的采集和播放,该功能是复制一份 SDK 内部采集或播放的数据出来给开发者使用。
enableCustomAudioIO
public void enableCustomAudioIO(bool enable, ZegoCustomAudioConfig config, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启自定义音频 IO。 |
| config | ZegoCustomAudioConfig | 自定义音频 IO 的配置。 |
| channel | ZegoPublishChannel | 指定要开启自定义音频 IO 的推流通道。 |
详情
开启自定义音频 IO 功能,支持 PCM 、AAC 格式数据。
- 业务场景:如果开发者想在采集音频数据后或拉取远端音频数据渲染前,通过自定义处理实现特殊功能(例如变声、美声等)时。
- 调用时机:需要在 [startPublishingStream]、 [startPlayingStream]、 [startPreview]、 [createMediaPlayer]、 [createAudioEffectPlayer] 和 [createRealTimeSequentialDataManager] 之前调用才有效。
- 支持版本:1.10.0 及以上。
- 使用限制:无。
sendCustomAudioCaptureAACData
public void sendCustomAudioCaptureAACData(unsigned char * data, unsigned int dataLength, unsigned int configLength, unsigned long long referenceTimeMillisecond, unsigned int samples, ZegoAudioFrameParam param, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | unsigned char * | AAC buffer 数据。 |
| dataLength | unsigned int | buffer 数据的总长度。 |
| configLength | unsigned int | AAC specific config 的长度 (注意:AAC encoded data 的长度 encodedLength = dataLength - configLength)。取值范围:[0,64]。 |
| referenceTimeMillisecond | unsigned long long | 该 AAC 音频帧的 UNIX 时间戳,单位为毫秒。 |
| samples | unsigned int | 该 AAC 音频帧的采样数。取值范围:[480,512,1024,1960,2048]。 |
| param | ZegoAudioFrameParam | 该 AAC 音频帧的参数。 |
| channel | ZegoPublishChannel | 采集音频帧的推流通道。 |
详情
把采集到的音频 AAC 数据塞给 SDK。
- 业务场景:开发者需要从现有音频流、音频文件、或者定制的采集系统中获得采集后输入,交给 SDK 传输。
- 调用时机:在 [enableCustomAudioIO] 且推流成功后。
- 相关接口:开启自定义音频 IO 功能 [enableCustomAudioIO],开始推流 [startPublishingStream]。
- 支持版本:2.20.0 及以上。
- 使用限制:无。
sendCustomAudioCapturePCMData
public void sendCustomAudioCapturePCMData(unsigned char * data, unsigned int dataLength, ZegoAudioFrameParam param, ZegoPublishChannel channel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | unsigned char * | PCM buffer 数据。 |
| dataLength | unsigned int | buffer 数据的总长度。 |
| param | ZegoAudioFrameParam | 该 PCM 音频帧的参数。 |
| channel | ZegoPublishChannel | 采集音频帧的推流通道。 |
详情
把采集到的音频 PCM 数据塞给 SDK。
- 业务场景:1、开发者需要从现有音频流、音频文件、或者定制的采集系统中获得采集后输入,交给 SDK 传输。2、开发者有自己对 PCM 输入源做特殊的音效处理的需求,在音效处理后输入,交给 SDK 传输。
- 调用时机:在 [enableCustomAudioIO] 且推流成功后。
- 相关接口:开启自定义音频 IO 功能 [enableCustomAudioIO],开始推流 [startPublishingStream]。
- 支持版本:1.10.0 及以上。
- 使用限制:无。
fetchCustomAudioRenderPCMData
public void fetchCustomAudioRenderPCMData(unsigned char * data, unsigned int dataLength, ZegoAudioFrameParam param)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | unsigned char * | 用于存放音频 PCM 数据的内存块,需要用户自行管理此内存块的生命周期;SDK 将会把音频帧渲染数据拷贝到此内存块上。 |
| dataLength | unsigned int | 此次需要从 SDK 取的音频数据的长度 (dataLength = duration(此音频帧的时长) * sampleRate * channels * 2(位深 16 bit 即 2 Btye))。 |
| param | ZegoAudioFrameParam | 指定从 SDK 取的音频帧的参数。ZegoAudioFrameParam 中参数sampleRate必填。 |
详情
从 SDK 拉取远端流的音频数据,建议对接系统框架来定时调用此函数,以驱动音频数据渲染。
- 业务场景:当开发者有自己渲染的需求,例如对拉取到的原始 PCM 数据做特殊应用或者处理后再渲染,建议使用 SDK 的自定义音频渲染功能。
- 调用时机:在 [enableCustomAudioIO] 且拉流成功后。
- 相关接口:开启自定义音频 IO 功能 [enableCustomAudioIO],开始拉流 [startPlayingStream]。
- 支持版本:1.10.0 及以上。
- 使用限制:无。
sendReferenceAudioPCMData
public void sendReferenceAudioPCMData(unsigned char * data, unsigned int dataLength, ZegoAudioFrameParam param)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | unsigned char * | PCM buffer 数据 |
| dataLength | unsigned int | buffer 数据的总长度 |
| param | ZegoAudioFrameParam | 该 PCM 音频帧的参数 |
详情
开发者以音频设备时钟为驱动取 PCM 音频数据,处理后用于自定义音频渲染,在提交渲染的同时,调用该函数将处理后的音频数据发回 SDK,以便 SDK 内部将其作为回声消除参考。
- 业务场景:娱乐场景下,可能需要自定义处理远端传来的 PCM 音频数据,比如合成一段背景音、KTV 伴奏之后再进行渲染播放。与此同时,需要开发者将自行处理后的音频数据发还给 SDK 参考,以便采集后对处理后的音效进行回声消除。
- 调用时机:在调用 [fetchCustomAudioRenderPCMData] 取到 PCM 音频数据并处理之后,提交给系统渲染播放的同时调用本函数。
- 支持版本:2.13.0 及以上。
- 使用限制:必须调用 [setEngineConfig] 开启外部音频数据作为参考,本功能才能生效,具体使用详情可咨询 ZEGO 技术支持。
createRangeAudio
public IZegoRangeAudio* createRangeAudio()ZegoExpressInterface.h创建范围语音实例对象。
- 业务场景:常用于游戏语音场景中,用户可通过创建范围语音实例对象使用相关功能。
- 调用时机:在初始化引擎 [createEngine] 之后。
- 影响范围:使用范围语音模块,将不能使用基础推拉流 [startPublishingStream]、[startPlayingStream] 等相关函数以及 [onPublisherStateUpdate]、[onPlayerStateUpdate] 等相关回调,否则会出现流混乱的现象。
- 支持版本:2.11.0 及以上。
- 使用限制:目前最多支持创建 1 个实例,超过后将返回 nullptr。
范围语音实例,超过最大数量限制后将返回 nullptr。
destroyRangeAudio
public void destroyRangeAudio(IZegoRangeAudio*& rangeAudio)ZegoExpressInterface.hcreateCopyrightedMusic
public IZegoCopyrightedMusic* createCopyrightedMusic()ZegoExpressInterface.h创建版权音乐实例对象。
- 业务场景:常用于在线 KTV 合唱场景中,用户可通过创建版权音乐实例对象使用相关功能。
- 调用时机:在初始化引擎 [createEngine] 之后。
- 支持版本:2.13.0 及以上。
- 使用限制:SDK 只支持创建一个实例,多次调用此函数返回同一个对象。
版权音乐实例,多次调用此函数返回同一个对象。
destroyCopyrightedMusic
public void destroyCopyrightedMusic(IZegoCopyrightedMusic*& copyrightedMusic)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| copyrightedMusic | IZegoCopyrightedMusic*& | 版权音乐实例对象。 |
详情
销毁版权音乐实例对象。
- 调用时机:在销毁引擎 [destroyEngine] 之前。
- 支持版本:2.13.0 及以上。
createRangeScene
public IZegoRangeScene* createRangeScene()ZegoExpressInterface.h创建范围场景实例对象。
- 业务场景:常用于虚拟世界场景中,用户可通过范围场景实例对象使用相关功能。
- 调用时机:通过 [createEngine] 初始化引擎后。
- 支持版本:3.0.0 及以上。
- 使用限制:无。
范围场景实例。
destroyRangeScene
public void destroyRangeScene(IZegoRangeScene*& rangeScene)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rangeScene | IZegoRangeScene*& | 范围场景实例对象。 |
详情
销毁范围场景实例对象。
- 业务场景:常用于虚拟世界场景中,用户可通过获取范围场景实例对象使用相关功能。
- 调用时机:通过 [createRangeScene] 创建范围场景之后。
- 支持版本:3.0.0 及以上。
- 使用限制:无。
getScreenCaptureSources
public std::vector<ZegoScreenCaptureSourceInfo> getScreenCaptureSources(int thumbnailWidth, int thumbnailHeight, int iconWidth, int iconHeight)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| thumbnailWidth | int | 获取窗口所对应的缩略图宽度,缩略图可用于绘制在窗口选择界面上。(单位为像素) |
| thumbnailHeight | int | 获取窗口所对应的缩略图高度,缩略图可用于绘制在窗口选择界面上。(单位为像素) |
| iconWidth | int | 获取程序所对应的图标的宽度。(单位为像素) |
| iconHeight | int | 获取程序所对应的图标的高度。(单位为像素) |
详情
获取屏幕列表或屏幕中的窗口列表。
- 支持版本:3.1.0 及以上
- 使用限制:只适用于 Windows/macOS 系统
返回值
采集源对象信息列表。
freeScreenCaptureSources
public void freeScreenCaptureSources(std::vector<ZegoScreenCaptureSourceInfo>& sourceList)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| sourceList | std::vector<ZegoScreenCaptureSourceInfo>& | 屏幕采集源列表 |
详情
释放屏幕采集源列表
- 调用时机:当调用 [getScreenCaptureSources] 获取到采集源后,需要调用此接口释放
- 平台差异:只适用于 Windows / macOS / Linux
createScreenCaptureSource
public IZegoScreenCaptureSource* createScreenCaptureSource(void * sourceId, ZegoScreenCaptureSourceType sourceType)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| sourceId | void * | 指定的屏幕 ID 或窗口 ID。 |
| sourceType | ZegoScreenCaptureSourceType | 指定的屏幕源类型。 |
详情
根据提供的源的 ID 和源的类型创建屏幕采集源对象。
- 业务场景:需要对屏幕或窗口有录制和分享等业务时使用。
- 调用时机:需要在 [createEngine] 之后调用。
- 平台差异:仅支持 Windows 和 macOS。
- 支持版本:3.1.0 及以上。
返回值
屏幕采集源对象,超过最大数量限制后将返回 nullptr
destroyScreenCaptureSource
public void destroyScreenCaptureSource(IZegoScreenCaptureSource*& source)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| source | IZegoScreenCaptureSource*& | 需要销毁的屏幕采集源对象 |
详情
销毁 [ZegoScreenCaptureSource] 屏幕采集源对象。
- 业务场景:不再需要使用屏幕采集功能时,可通过此函数销毁 [createScreenCaptureSource] 函数创建出来的实例对象。
- 调用时机:当需要销毁屏幕采集源对象时。
- 平台差异:仅支持 Windows 和 macOS。
- 支持版本:3.1.0 及以上。
- 使用限制:销毁后,开发者需要自行释放持有的 [ZegoScreenCaptureSource] 实例对象,并且销毁后也不要再调用此实例对象的函数。
setAppGroupID
public void setAppGroupID(std::string groupID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| groupID | std::string | 主应用和 extension 扩展应用应该归属于同一个 App Group,此处需要传入 AppGroupID。 |
- 业务场景:需要使用 iOS 跨进程屏幕共享功能,需要启动 App Group,可以提供更好的性能与稳定性。必须搭配
ZegoReplayKit扩展类里的 [setupWithAppGroupID:] 使用。 - 调用时机:[createEngine] 之后,调用 [startScreenCapture] 之前调用。
- 支持版本:3.3.0 及以上。
- 使用限制:仅 iOS 平台使用。
startScreenCaptureInApp
public void startScreenCaptureInApp(ZegoScreenCaptureConfig config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoScreenCaptureConfig | 屏幕采集参数配置。 |
详情
开始屏幕采集。
- 调用时机:在调用 [setVideoSource]、[setAudioSource] 函数设置采集源 为
ScreenCapture后。
- 支持版本:3.1.0 及以上。
- 使用限制:仅对 iOS 系统生效。
startScreenCapture
public void startScreenCapture(ZegoScreenCaptureConfig config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoScreenCaptureConfig | 屏幕采集参数配置。 |
详情
开始屏幕采集。
- 调用时机:在调用 [setVideoSource]、[setAudioSource] 函数设置采集源 为
ScreenCapture后。
- 支持版本:3.1.0 及以上。
stopScreenCapture
public void stopScreenCapture()ZegoExpressInterface.h停止屏幕采集。
- 支持版本:3.1.0 及以上。
updateScreenCaptureConfig
public void updateScreenCaptureConfig(ZegoScreenCaptureConfig config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoScreenCaptureConfig | 屏幕采集参数配置。 |
详情
更新屏幕采集参数配置。
- 调用时机:在调用 [startScreenCapture] 开始采集后。
- 支持版本:3.1.0 及以上。
- 使用限制:仅对 iOS 系统生效。仅适用于 iOS 12.0 或更高版本。
createAIVoiceChanger
public IZegoAIVoiceChanger* createAIVoiceChanger()ZegoExpressInterface.h创建 AI 变声器实例对象。
- 业务场景:常用于直播、语聊房和 KTV 等场景。
- 调用时机:在初始化 SDK [createEngine] 之后。
- 相关接口:用户可以调用 [destroyAIVoiceChanger] 销毁 AI 变声器实例对象。
- 支持版本:3.10.0 及以上。
- 使用限制:目前最多支持创建 1 个实例,超过后将返回 nullptr。
AI 变声器实例。
destroyAIVoiceChanger
public void destroyAIVoiceChanger(IZegoAIVoiceChanger*& aiVoiceChanger)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| aiVoiceChanger | IZegoAIVoiceChanger*& | AI 变声器实例对象。 |
详情
销毁 AI 变声器实例对象。
- 相关接口:用户可以调用 [createAIVoiceChanger] 创建 AI 变声器实例对象。
- 支持版本:3.10.0 及以上。
isAIVoiceChangerSupported
public bool isAIVoiceChangerSupported()ZegoExpressInterface.h检测设备是否支持 AI 变声功能。
- 业务场景:常用于直播、语聊房和 KTV 等场景。
- 调用时机:在初始化 SDK [createEngine] 之后。
- 支持版本:3.14.0 及以上。
设备支持运行 AI 变声功能时返回 true,否则返回 false。
createPictureCapturer
public IZegoPictureCapturer* createPictureCapturer()ZegoExpressInterface.h创建图片采集器实例。
- 业务场景:常用于推静态图片。
- 调用时机:在初始化 SDK [createEngine] 之后。
- 相关接口:用户可以调用 [destroyPictureCapturer] 销毁图片采集器实例。使用 [setVideoSource] 设置图片采集为推流视频源。
- 支持版本:3.22.0 及以上。
- 使用限制:无。
图片采集器实例。
destroyPictureCapturer
public void destroyPictureCapturer(IZegoPictureCapturer*& pictureCapturer)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| pictureCapturer | IZegoPictureCapturer*& | 图片采集器实例。 |
详情
销毁图片采集器实例。
- 相关接口:用户可以调用 [createPictureCapturer] 创建图片采集器实例。
- 支持版本:3.22.0 及以上。
IZegoMediaDataPublisher
Declared in ZegoExpressInterface.h
方法
setEventHandler
public void setEventHandler(std::shared_ptr<IZegoMediaDataPublisherEventHandler> handler)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| handler | std::shared_ptr<IZegoMediaDataPublisherEventHandler> | 事件回调 Handler |
详情
设置媒体推流器的事件回调 handler。
- 业务场景:常用于服务器端推流的场景,例如 AI 课堂。
- 调用时机:在调用 [createMediaDataPublisher] 函数创建媒体数据推流器后。
- 支持版本:2.17.0 及以上。
- 注意事项:此 API 在 3.8.0 版本以前曾用名为 [setMediaDataPublisherEventHandler] 请参考 [3.8.0 及以上版本升级指南](https://doc-zh.zego.im/article/17982
addMediaFilePath
public void addMediaFilePath(std::string path, bool isClear)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| path | std::string | 媒体文件的本地绝对路径。 |
| isClear | bool | 是否清空推流队列。 |
详情
添加媒体文件到推流队列中。目前仅支持 mp4 / m4a / aac 文件,且需要做特殊转换。
- 业务场景:常用于服务器端推流的场景,例如 AI 课堂。
- 调用时机:在调用 [createMediaDataPublisher] 函数创建媒体数据推流器后。
- 支持版本:2.17.0 及以上。
- 注意事项:mp4 文件格式必须满足以下几点:视频编码为 H.264,不能包含 B 帧,仅包含 I 帧和 P 帧,I 帧间隔为 2s,即单个 GOP 值为 2s;视频的帧率、码率、分辨率与推流前通过 [setVideoConfig] 设置的帧率、码率、分辨率保持一致;音频编码为 MPEG-4 AAC。
reset
public void reset()ZegoExpressInterface.h当需要重新推流,且不需要从之前的推流队列中继续推时,可调用此函数重置媒体推流器的状态。
- 支持版本:2.17.0 及以上。
- 注意事项:当开发者调用了 [logoutRoom] 之后,会自动重置状态。
setVideoSendDelayTime
public void setVideoSendDelayTime(int delayTime)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| delayTime | int | 推迟视频播放时间。是否必填:是。取值范围:[0, 100] ms。 |
详情
当设置了此值后,在推流视频文件时,SDK 会固定地将视频延迟至设置的时间值才开始发送。
- 业务场景:主要用于修正推流时出现的固定的音画不同步现象。
- 调用时机:在调用 [createMediaDataPublisher] 函数创建媒体数据推流器后。
- 支持版本:2.17.0 及以上。
seekTo
public void seekTo(unsigned long long millisecond)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| millisecond | unsigned long long | 开始推流的时间戳(相对于当前正在推流文件的时间戳,起始值为 0),单位:毫秒。 |
详情
指定当前视频文件推流发送的时间起始点。
- 调用时机:在 [OnMediaDataPublisherFileOpen] 与 [OnMediaDataPublisherFileClose] 之间任意时间点调用都可。如:可以在 [OnMediaDataPublisherFileOpen] 回调中直接调用此函数。
- 支持版本:2.17.0 及以上。
getTotalDuration
public unsigned long long getTotalDuration()ZegoExpressInterface.h获取当前文件的总时长,单位毫秒。
- 调用时机:[onMediaDataPublisherFileDataBegin] 回调之后。
- 支持版本:2.17.0 及以上。
当前文件的总时长。
getCurrentDuration
public unsigned long long getCurrentDuration()ZegoExpressInterface.h获取当前文件的播放进度,单位毫秒。
- 调用时机:[onMediaDataPublisherFileDataBegin] 回调之后。
- 支持版本:2.17.0 及以上。
当前文件的播放进度。
getIndex
public int getIndex()ZegoExpressInterface.h获取媒体推流器的推流通道号。
- 支持版本:3.4.0 及以上。
IZegoMediaDataPublisherEventHandler
Declared in ZegoExpressEventHandler.h
方法
onMediaDataPublisherFileOpen
public void onMediaDataPublisherFileOpen(IZegoMediaDataPublisher * mediaDataPublisher, std::string path)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mediaDataPublisher | IZegoMediaDataPublisher * | 回调的媒体推流器实例 |
| path | std::string | 当前打开的文件路径 |
详情
媒体推流器打开媒体文件的事件回调。
- 通知时机:当媒体推流器开始加载某个媒体文件时会触发此回调。
- 支持版本:2.17.0 及以上。
- 使用限制:无。
onMediaDataPublisherFileClose
public void onMediaDataPublisherFileClose(IZegoMediaDataPublisher * mediaDataPublisher, int errorCode, std::string path)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mediaDataPublisher | IZegoMediaDataPublisher * | 回调的媒体推流器实例 |
| errorCode | int | 错误码。0 为正常关闭文件。-1 为文件出错。-2 为路径异常。-3 为解码异常。-4 为时间戳不对。-5 为无法修正音画同步。-6 为不支持的音频采样率。详情联系技术支持。 |
| path | std::string | 当前打开的文件路径 |
详情
媒体推流器关闭媒体文件的事件回调。
- 通知时机:当媒体推流器结束处理某个媒体文件时会触发此回调。
- 支持版本:2.17.0 及以上。
- 使用限制:无。
onMediaDataPublisherFileDataBegin
public void onMediaDataPublisherFileDataBegin(IZegoMediaDataPublisher * mediaDataPublisher, std::string path)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mediaDataPublisher | IZegoMediaDataPublisher * | 回调的媒体推流器实例 |
| path | std::string | 当前打开的文件路径 |
详情
媒体推流器开始读取到数据的事件回调。
- 通知时机:当媒体推流器刚开始从媒体文件中读取到了媒体数据时会触发此回调。
- 支持版本:2.17.0 及以上。
- 使用限制:无。
onMediaDataPublisherFileDataEnd
public void onMediaDataPublisherFileDataEnd(IZegoMediaDataPublisher * mediaDataPublisher, std::string path)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mediaDataPublisher | IZegoMediaDataPublisher * | 回调的媒体推流器实例。 |
| path | std::string | 完成推流的文件的路径。 |
详情
媒体推流器已经完成一个文件推流。
- 通知时机:当媒体推流器完成一个文件推流时会触发此回调。
- 支持版本:3.14.0 及以上。
- 使用限制:无。
IZegoMediaPlayer
Declared in ZegoExpressInterface.h
方法
setEventHandler
public void setEventHandler(std::shared_ptr<IZegoMediaPlayerEventHandler> handler)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| handler | std::shared_ptr<IZegoMediaPlayerEventHandler> | 媒体播放器的事件回调 |
详情
监听媒体播放器的事件通知回调。
- 业务场景:开发者可以根据相关事件回调进行播放器 UI 界面的处理。
- 调用时机:创建 [ZegoMediaPlayer] 实例后。
- 支持版本:2.1.0 及以上。
- 使用限制:无。
- 注意事项:调用此函数将覆盖上一次调用此函数设置的回调。
setVideoHandler
public void setVideoHandler(std::shared_ptr<IZegoMediaPlayerVideoHandler> handler, ZegoVideoFrameFormat format)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| handler | std::shared_ptr<IZegoMediaPlayerVideoHandler> | 媒体播放器的视频数据回调 |
| format | ZegoVideoFrameFormat | 视频数据的视频帧格式 |
详情
可以通过设置此回调将媒体播放器播放的媒体资源文件的视频数据抛出来。
- 调用时机:创建 [ZegoMediaPlayer] 实例后。
- 支持版本:2.1.0 及以上。
- 使用限制:无。
- 注意事项:当不再需要获取视频帧数据时请再次调用此函数将 handler 置空,以停止视频帧数据回调。
setAudioHandler
public void setAudioHandler(std::shared_ptr<IZegoMediaPlayerAudioHandler> handler)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| handler | std::shared_ptr<IZegoMediaPlayerAudioHandler> | 媒体播放器的音频数据回调 |
详情
可以通过设置此回调将媒体播放器播放的媒体资源文件的音频数据抛出来。
- 调用时机:创建 [ZegoMediaPlayer] 实例后。
- 支持版本:2.1.0 及以上。
- 使用限制:无。
- 注意事项:当不再需要获取音频数据时请再次调用此函数将 handler 置空,以停止音频数据回调。
setBlockDataHandler
public void setBlockDataHandler(std::shared_ptr<IZegoMediaPlayerBlockDataHandler> handler, unsigned int blockSize)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| handler | std::shared_ptr<IZegoMediaPlayerBlockDataHandler> | 媒体播放器的媒体资源块数据回调。 |
| blockSize | unsigned int | 加密块数据的大小,OnBlockData 回调中的 bufferSize 为 blockSize 整数倍。 |
详情
可以通过设置此回调,监听并解密媒体资源块数据,用于播放用户自己的密文媒体资源。
- 调用时机:创建 [ZegoMediaPlayer] 实例后,播放媒体资源之前。
- 支持版本:3.4.0 及以上。
- 使用限制:无。
- 注意事项:当不再需要监听该回调进行数据解密时,再次调用此函数将 handler 置空。
loadResource
public void loadResource(std::string path, ZegoMediaPlayerLoadResourceCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| path | std::string | 本地资源路径或网络资源的 URL,不能传入 null 或 ""。Android 可通过 Uri 方式进行传参。 |
| callback | ZegoMediaPlayerLoadResourceCallback | 资源加载结果的通知。 |
详情
加载媒体资源。
- 业务场景:开发者可以将可传本地资源的绝对路径或者网络资源的 URL 传入进行加载。
- 调用时机:在已经初始化引擎 [createEngine] 且创建媒体播放器 [createMediaPlayer] 之后可以调用。
- 相关接口:也可通过 [loadResourceWithPosition] 或 [loadResourceFromMediaData] 函数加载资源。
- 支持版本:1.3.4 及以上。
- 注意事项:如果该媒体播放器已经加载资源或者正在播放,请先调用 [stop] 接口停止播放,然后再调用接口加载媒体资源,否则无法加载成功。
返回值
加载媒体资源结果回调。
loadResourceWithPosition
public void loadResourceWithPosition(std::string path, long startPosition, ZegoMediaPlayerLoadResourceCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| path | std::string | 本地资源路径或网络资源的 URL,不能传入 null 或 ""。Android 可通过 Uri 方式进行传参。 |
| startPosition | long | 开始播放的进度。 |
| callback | ZegoMediaPlayerLoadResourceCallback | 资源加载结果的通知。 |
详情
加载媒体资源,同时可指定开始播放的进度,单位毫秒。
- 业务场景:开发者可以将可传本地资源的绝对路径或者网络资源的 URL 传入进行加载。
- 调用时机:在已经初始化引擎 [createEngine] 且创建媒体播放器 [createMediaPlayer] 之后可以调用。
- 相关接口:也可通过 [loadResource] 或 [loadResourceFromMediaData] 函数加载资源。
- 支持版本:2.14.0 及以上。
- 注意事项:1.当 startPosition 超过播放总时长,将从头开始播放。 2.如果该媒体播放器已经加载资源或者正在播放,请先调用 [stop] 接口停止播放,然后再调用接口加载媒体资源,否则无法加载成功。
返回值
加载媒体资源结果回调。
loadResourceFromMediaData
public void loadResourceFromMediaData(unsigned char * mediaData, int mediaDataLength, long startPosition, ZegoMediaPlayerLoadResourceCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mediaData | unsigned char * | 二进制音频数据。 |
| mediaDataLength | int | 二进制音频数据长度。 |
| startPosition | long | 指定开始播放的进度,单位毫秒。 |
| callback | ZegoMediaPlayerLoadResourceCallback | 资源加载结果的通知。 |
详情
加载二进制的音频数据。
- 业务场景:开发者不希望将音频数据缓存本地,直接把音频二进制数据传给媒体播放器,直接加载并播放该音频。
- 调用时机:在已经初始化引擎 [createEngine] 且创建媒体播放器 [createMediaPlayer] 之后可以调用。
- 相关接口:也可通过 [loadResource] 或 [loadResourceWithPosition] 函数加载资源。
- 支持版本:2.10.0 及以上。
- 注意事项:1.当 startPosition 超过播放总时长,将从头开始播放。 2.如果该媒体播放器已经加载资源或者正在播放,请先调用 [stop] 接口停止播放,然后再调用接口加载媒体资源,否则无法加载成功。
返回值
加载媒体资源结果回调。
loadCopyrightedMusicResourceWithPosition
public void loadCopyrightedMusicResourceWithPosition(std::string resourceID, long startPosition, ZegoMediaPlayerLoadResourceCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| resourceID | std::string | 从版权音乐模块获取的资源ID。 |
| startPosition | long | 开始播放的进度。 |
| callback | ZegoMediaPlayerLoadResourceCallback | 资源加载结果的通知。 |
详情
加载版权音乐资源,同时可指定开始播放的进度,单位毫秒。
- 业务场景:开发者可以将可传版权音乐的资源ID进行加载。
- 调用时机:在已经初始化引擎 [createEngine] 且创建媒体播放器 [createMediaPlayer] 之后可以调用。
- 支持版本:2.14.0 及以上。
- 注意事项:1.当 startPosition 超过播放总时长,将从头开始播放。 2.如果该媒体播放器已经加载资源或者正在播放,请先调用 [stop] 接口停止播放,然后再调用接口加载媒体资源,否则无法加载成功。
返回值
加载媒体资源结果回调。
loadResourceWithConfig
public void loadResourceWithConfig(ZegoMediaPlayerResource resource, ZegoMediaPlayerLoadResourceCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| resource | ZegoMediaPlayerResource | 需要加载的多媒体资源。 |
| callback | ZegoMediaPlayerLoadResourceCallback | 资源加载结果的通知。 |
详情
加载媒体资源。
- 业务场景:开发者可以将可传本地资源的绝对路径或者网络资源的 URL 传入进行加载。
- 调用时机:在已经初始化引擎 [createEngine] 且创建媒体播放器 [createMediaPlayer] 之后调用。
- 相关接口:支持通过 [loadResourceWithPosition] 或 [loadResourceFromMediaData] 接口加载资源。
- 支持版本:3.3.0 及以上。
- 注意事项:如果该媒体播放器已经加载资源或者正在播放,请先调用 [stop] 接口停止播放,然后再调用接口加载媒体资源,否则无法加载成功。
返回值
加载媒体资源结果回调。
start
stop
pause
resume
seekTo
public void seekTo(unsigned long long millisecond, ZegoMediaPlayerSeekToCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| millisecond | unsigned long long | 指定的播放进度的时间点 |
| callback | ZegoMediaPlayerSeekToCallback | 设置指定的播放进度的结果通知 |
详情
单位为毫秒
返回值
设置指定的播放进度的结果通知
enableRepeat
public void enableRepeat(bool enable)ZegoExpressInterface.h| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 重复播放标记,默认为 false |
setPlayLoopCount
public void setPlayLoopCount(int count)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| count | int | 重复播放的次数。 |
详情
设置媒体播放器播放循环次数。
- 业务场景:用户需要使用媒体播放器循环播放资源时可以调用此接口。
- 调用时机:初始化引擎 [createEngine] 并创建媒体播放器 [createMediaPlayer] 之后调用。
- 支持版本:2.10.0 及以上。
- 使用限制:无。
- 注意事项:使用本接口后,[enableRepeat] 接口将会失效。
setPlaySpeed
public void setPlaySpeed(float speed)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| speed | float | 播放速度。默认为 1.0。 2.12.0 至 3.15.1 版本:范围为 0.5 ~ 4.0。 3.16.0 及以上版本:范围为 0.3 ~ 4.0。 |
详情
设置播放器的播放倍速。
- 调用时机:必须在加载资源完成后才能调用。
- 相关接口:可通过 [loadResource] 函数加载资源。
- 支持版本:2.12.0 及以上。
- 使用限制:无。
enableAux
public void enableAux(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否混音标记,默认为 false |
详情
此接口仅会将媒体播放器声音混到主通道中
muteLocal
public void muteLocal(bool mute)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mute | bool | 本地静音标记,默认为 false。 |
详情
若开启了混音入流则推的流中仍然有声音,默认为 false。
setPlayerCanvas
setVolume
public void setVolume(int volume)ZegoExpressInterface.h| 名称 | 类型 | 描述 |
|---|---|---|
| volume | int | 范围为 0 ~ 200,默认为 60。 |
setPlayVolume
public void setPlayVolume(int volume)ZegoExpressInterface.h| 名称 | 类型 | 描述 |
|---|---|---|
| volume | int | 范围为 0 ~ 200,默认为 60。 |
setPublishVolume
public void setPublishVolume(int volume)ZegoExpressInterface.h| 名称 | 类型 | 描述 |
|---|---|---|
| volume | int | 范围为 0 ~ 200,默认为 60。 |
setProgressInterval
public void setProgressInterval(unsigned long long millisecond)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| millisecond | unsigned long long | 播放进度回调间隔时间,单位为毫秒 |
详情
可通过此函数控制 [onMediaPlayerPlayingProgress] 的回调频率,当设置回调间隔为 0 时,停止回调。默认回调间隔为 1s 回调不会严格按照设定的回调间隔值返回,而是以处理音频帧或者视频帧的频率来判断是否需要回调
getPlayVolume
public int getPlayVolume()ZegoExpressInterface.h当前音量
getPublishVolume
public int getPublishVolume()ZegoExpressInterface.h当前音量
getTotalDuration
public unsigned long long getTotalDuration()ZegoExpressInterface.h必须在加载资源完成后才能调用,否则返回值为 0
单位为毫秒
getCurrentProgress
public unsigned long long getCurrentProgress()ZegoExpressInterface.h必须在加载资源完成后才能调用,否则返回值为 0
当前播放进度
getCurrentRenderingProgress
public unsigned long long getCurrentRenderingProgress()ZegoExpressInterface.h必须在加载资源完成后才能调用,否则返回值为 0
当前渲染进度
getAudioTrackCount
public unsigned int getAudioTrackCount()ZegoExpressInterface.h音轨个数
setAudioTrackIndex
public void setAudioTrackIndex(unsigned int index)ZegoExpressInterface.h| 名称 | 类型 | 描述 |
|---|---|---|
| index | unsigned int | 音轨序号,可以通过 [getAudioTrackCount] 获取音轨个数 |
setAudioTrackMode
public void setAudioTrackMode(ZegoMediaPlayerAudioTrackMode mode)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mode | ZegoMediaPlayerAudioTrackMode | 音轨模式。 |
详情
设置播放器的音轨模式。
- 业务场景:在实时合唱(KTV)场景下,调用该接口开启多音轨模式后,可以调用接口 [setAudioTrackIndex] 指定需要播放的原唱音轨,调用接口 [setAudioTrackPublishIndex] 指定需要推流的伴奏音轨。
- 调用时机:在开始播放 [start] 前调用才生效。
- 相关接口:可通过 [setAudioTrackIndex] 指定媒体文件的播放音轨,通过 [setAudioTrackPublishIndex] 指定媒体文件的推流音轨。
- 支持版本:3.1.0 及以上。
- 注意事项:当开启多音轨模式时会增加对硬件设备的资源消耗。
setAudioTrackPublishIndex
public void setAudioTrackPublishIndex(unsigned int index)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| index | unsigned int | 音轨序号,可以通过 [getAudioTrackCount] 获取音轨个数 |
详情
设置媒体文件需要推流的音轨。
- 调用时机:初始化引擎 [createEngine] 并创建媒体播放器 [createMediaPlayer] 之后调用。
- 相关接口:可以通过 [getAudioTrackCount] 获取音轨个数。
- 支持版本:3.1.0 及以上。
- 注意事项:需要调用接口 [setAudioTrackMode] 开启多音轨模式后该调用才生效。
enableVoiceChanger
public void enableVoiceChanger(ZegoMediaPlayerAudioChannel audioChannel, bool enable, ZegoVoiceChangerParam param)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| audioChannel | ZegoMediaPlayerAudioChannel | 要进行变声的声道 |
| enable | bool | 是否开启变声,true-开启,false-关闭,默认 false。 |
| param | ZegoVoiceChangerParam | 变声参数 |
详情
开启变声,设置变声的具体参数。
- 调用时机:初始化引擎 [createEngine] 并创建媒体播放器 [createMediaPlayer] 之后调用。
- 支持版本:3.15.0 及以上。
getCurrentState
public ZegoMediaPlayerState getCurrentState()ZegoExpressInterface.h当前播放器状态
getIndex
public int getIndex()ZegoExpressInterface.h获取媒体播放器索引。
- 调用时机:在 [createMediaPlayer] 之后可调用。
- 使用限制:无。
媒体播放器索引。
takeSnapshot
public void takeSnapshot(ZegoMediaPlayerTakeSnapshotCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| callback | ZegoMediaPlayerTakeSnapshotCallback | 媒体播放器播放画面截图的回调 |
详情
只有在调用 [setPlayerCanvas] 设置了显示控件,以及播放状态的情况下,才能正常截图
enableAccurateSeek
public void enableAccurateSeek(bool enable, ZegoAccurateSeekConfig * config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启精准 seek |
| config | ZegoAccurateSeekConfig * | 精准 seek 的属性设置,只有 enable 为 true 时有效。 |
详情
普通 seek 指定的时间戳可能是非 I 帧,进而返回指定时间戳前后的 I 帧,不是很精确。而精准 seek 当指定的时间戳不是 I 帧时,会通过指定时间戳前后的 I 帧去解指定时间戳的那帧数据。
- 业务场景:适用于用户需要精准 seek 到指定时间戳的场景。
- 调用时机:必须在加载资源前调用设置,在整个媒体播放器的生命周期内生效。
- 支持版本:2.4.0 及以上。
setNetWorkResourceMaxCache
public void setNetWorkResourceMaxCache(unsigned int time, unsigned int size)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| time | unsigned int | 缓存最大时长, 单位 ms, SDK 内部默认为5000;有效值为大于等于 2000;如果填 0, 表示不限制。 |
| size | unsigned int | 缓存最大尺寸, 单位 byte,SDK内部默认size为1510241024 byte;有效值为大于等于 5000000, 如果填 0, 表示不限制。 |
详情
必须在加载资源前调用设置,在整个媒体播放器的生命周期内生效。 time和size不允许同时为 0.。SDK 内部默认time为5000, size为1510241024 byte。time和size中某一个指标先达到设置的值,就会停止缓存。
getNetWorkResourceCache
public ZegoNetWorkResourceCache * getNetWorkResourceCache()ZegoExpressInterface.h返回当前缓存的信息,包括数据可播放的时长和缓存数据大小
setNetWorkBufferThreshold
public void setNetWorkBufferThreshold(unsigned int threshold)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| threshold | unsigned int | 重新恢复播放需要达到的阈值, 单位 ms。 |
详情
必须在加载资源前调用设置,在整个媒体播放器的生命周期内生效。
当网络状态较差且媒体播放器将缓存的网络资源都播放完时,就会停止播放,并通过回调接口onMediaPlayerNetworkEvent的ZegoMediaPlayerNetworkEvent.BUFFER_BEGIN状态通知用户,告知正在重新缓存网络资源。
只有当缓存的网络资源大于设置的阈值的时候,媒体播放器才会在原来暂停的位置自动恢复播放,并通过回调接口onMediaPlayerNetworkEvent的ZegoMediaPlayerNetworkEvent.BUFFER_ENDED通知用户,告知用户缓存网络资源已经达到阈值并恢复了播放。
enableSoundLevelMonitor
public void enableSoundLevelMonitor(bool enable, unsigned int millisecond)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启监听,true 开启,false 关闭。 |
| millisecond | unsigned int | 声浪的监听时间周期,单位为毫秒,取值范围 [100, 3000]。 |
详情
开启或关闭声浪监听。
- 调用时机:初始化引擎 [createEngine] 并创建媒体播放器 [createMediaPlayer] 之后调用。
- 相关回调:开启后可以通过 [onMediaPlayerSoundLevelUpdate] 回调监听声浪更新。
- 支持版本:2.15.0 及以上。
- 使用限制:无。
enableFrequencySpectrumMonitor
public void enableFrequencySpectrumMonitor(bool enable, unsigned int millisecond)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启监听,true 开启,false 关闭。 |
| millisecond | unsigned int | 频谱的监听时间周期,单位为毫秒,取值范围 [10, 3000]。注意在 3.19.0 及更老版本上,取值范围为 [100, 3000] |
详情
开启或关闭频谱监听。
- 调用时机:初始化引擎 [createEngine] 并创建媒体播放器 [createMediaPlayer] 之后调用。
- 相关回调:开启后可以通过 [onMediaPlayerFrequencySpectrumUpdate] 回调监听声浪更新。
- 支持版本:2.15.0 及以上。
- 使用限制:无。
setActiveAudioChannel
public void setActiveAudioChannel(ZegoMediaPlayerAudioChannel audioChannel)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| audioChannel | ZegoMediaPlayerAudioChannel | 播放声道,默认全部声道。 |
详情
设置播放声道。
- 调用时机:初始化引擎 [createEngine] 并创建媒体播放器 [createMediaPlayer] 之后调用。
- 支持版本:2.20.0 及以上。
- 使用限制:无。
clearView
public void clearView()ZegoExpressInterface.h清除播放控件播放结束后, 在控件上保留的最后一帧画面。
- 调用时机:初始化引擎 [createEngine] 并创建媒体播放器 [createMediaPlayer] 之后调用。
- 支持版本:2.20.0 及以上。
- 使用限制:只有媒体播放器结束播放该接口调用才会生效。
getMediaInfo
public ZegoMediaPlayerMediaInfo getMediaInfo()ZegoExpressInterface.h获取媒体文件视频分辨率等媒体信息。
- 调用时机:初始化引擎 [createEngine] 并创建媒体播放器 [createMediaPlayer] 之后调用。
- 支持版本:3.6.0 及以上。
- 使用限制:无。
updatePosition
public void updatePosition(const float[3] position)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| position | const float[3] | 自身在世界坐标系中的坐标,参数是长度为 3 的 float 数组。 |
详情
更新媒体播放器(音频源)位置。。
- 业务场景:媒体播放器也需要有 3D 空间音效。
- 调用时机:在已经初始化引擎 [createEngine] 且创建媒体播放器 [createMediaPlayer] 之后可以调用。
- 支持版本:3.6.0 及以上。
- 使用限制:此接口需要与 RangeAudio/RangeScene 模块配合使用,RangeAudio/RangeScene 模块开启 3D 音效后,此接口才能调用成功。
setHttpHeader
public void setHttpHeader(std::unordered_map<std::string, std::string> headers)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| headers | std::unordered_map<std::string, std::string> | 头信息。 |
详情
调用该函数设置 http 网络资源的http headers。
- 业务场景:当网络资源需要设置特殊的头信息时可以配置。
- 调用时机:在已经初始化引擎 [createEngine] 且创建媒体播放器 [createMediaPlayer] 之后可以调用。
- 支持版本:3.8.0 及以上。
- 使用限制:在加载对应的网络资源之前调用。
setPlayMediaStreamType
public void setPlayMediaStreamType(ZegoMediaStreamType streamType)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamType | ZegoMediaStreamType | 流类型。 |
详情
配置播放的媒体流类型,可以仅播放视频流或者音频流,在播放器生命周期内一直生效。
- 业务场景:当仅需要播放视频流或者音频流时。
- 调用时机:在已经初始化引擎 [createEngine] 且创建媒体播放器 [createMediaPlayer] 之后可以调用。
- 支持版本:3.10.0 及以上。
- 注意事项:播放时改变媒体流类型,将在下一次播放时生效。
enableLiveAudioEffect
public void enableLiveAudioEffect(bool enable, ZegoLiveAudioEffectMode mode)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启现场音效。 |
| mode | ZegoLiveAudioEffectMode | 现场音效模式。 |
详情
开启现场音效后,空间感增强、乐器声音增强突出,不会增加延迟。
- 业务场景:一般用于语聊房、K 歌场景下,增强伴奏的现场音效。
- 调用时机:在已经初始化引擎 [createEngine] 且创建媒体播放器 [createMediaPlayer] 之后可以调用。
- 支持版本:3.10.0 及以上。
- 注意事项:为了提升现场音效的体验,我们建议配置双声道编码。开发者可以通过使用 [setAudioCaptureStereoMode] 方法来实现此配置。如果不进行双声道编码配置,某些歌曲的效果可能会显著降低,因为在合成单声道时,左右声道的效果可能会相互抵消,导致效果不明显。
enableLocalCache
public void enableLocalCache(bool enable, String cacheDir)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启本地缓存。 |
| cacheDir | String | 缓存目录。如果留空会使用 SDK 内部指定的目录。 |
详情
当播放 http/https 网络资源时,开启本地缓存后,会将网络资源保存到本地,并通过 [onMediaPlayerLocalCache] 将缓存信息回调出来。
- 调用时机:在已经初始化引擎 [createEngine] 且创建媒体播放器 [createMediaPlayer] 之后可以调用。在 [loadResource] 之后或者播放过程中调用,会在下一次播放生效。
- 支持版本:3.12.0 及以上。
- 注意事项:只支持 http/https 单文件类型网络资源,如果播放过程中有 [seekTo] 操作,缓存会失败。
enableViewMirror
public void enableViewMirror(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启画面镜像。 |
详情
开启画面镜像。
- 调用时机:在已经初始化引擎 [createEngine] 且创建媒体播放器 [createMediaPlayer] 之后可以调用。
- 支持版本:3.14.0 及以上。
getPlaybackStatistics
public ZegoMediaPlayerStatisticsInfo getPlaybackStatistics()ZegoExpressInterface.h获取当前播放统计信息,监控播放器解码和渲染是否发生异常。
- 业务场景:一般用于云播放器场景。
- 调用时机:在 [loadResource] 回调成功之后调用。
- 支持版本:3.12.0 及以上。
setVoiceChangerParam
public void setVoiceChangerParam(ZegoMediaPlayerAudioChannel audioChannel, ZegoVoiceChangerParam param)ZegoExpressInterface.h| 名称 | 类型 | 描述 |
|---|---|---|
| audioChannel | ZegoMediaPlayerAudioChannel | 要进行变声的声道 |
| param | ZegoVoiceChangerParam | 变声参数 |
IZegoMediaPlayerAudioHandler
Declared in ZegoExpressEventHandler.h
方法
onAudioFrame
public void onAudioFrame(IZegoMediaPlayer* mediaPlayer, const unsigned char* data, unsigned int dataLength, ZegoAudioFrameParam param)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mediaPlayer | IZegoMediaPlayer* | 回调的播放器实例。 |
| data | const unsigned char* | 音频频帧的裸数据。 |
| dataLength | unsigned int | 数据的长度。 |
| param | ZegoAudioFrameParam | 音频帧参数。 |
详情
播放器抛音频数据的回调。
- 通知时机:媒体播放器开始播放时会产生此回调。
- 支持版本:1.3.4 及以上。
- 使用限制:播放版权音乐时,该回调会被默认禁用,若有需要,请联系 ZEGO 技术支持。
- 注意事项:调用接口 [setAudioHandler] 设置后该回调才生效。
IZegoMediaPlayerBlockDataHandler
Declared in ZegoExpressEventHandler.h
方法
onBlockBegin
public void onBlockBegin(IZegoMediaPlayer* mediaPlayer, std::string path)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mediaPlayer | IZegoMediaPlayer* | 回调的播放器实例。 |
| path | std::string | 媒体资源的路径。 |
详情
播放器开始抛出媒体资源块数据的回调。
- 通知时机:媒体播放器开始播放时会产生此回调。
- 支持版本:3.4.0 及以上。
- 使用限制:播放版权音乐时,该回调会被默认禁用,若有需要,请联系 ZEGO 技术支持。
- 注意事项:调用 [setBlockDataHandler] 接口设置后该回调才生效。
onBlockData
public unsigned int onBlockData(IZegoMediaPlayer* mediaPlayer, unsigned char *const buffer, unsigned int bufferSize)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mediaPlayer | IZegoMediaPlayer* | 回调的播放器实例。 |
| buffer | unsigned char *const | 媒体资源块数据。 |
| bufferSize | unsigned int | 媒体资源块数据的长度。 |
详情
播放器抛出媒体资源块数据的回调。
- 通知时机:收到 [onBlockBegin] 回调后会产生此回调。
- 支持版本:3.4.0 及以上。
- 使用限制:播放版权音乐时,该回调会被默认禁用,若有需要,请联系 ZEGO 技术支持。
- 注意事项:调用 [setBlockDataHandler] 接口设置后该回调才生效。解密前后的数据大小应保持一致。
返回值
buffer 的大小, 失败返回 -1。
IZegoMediaPlayerEventHandler
Declared in ZegoExpressEventHandler.h
方法
onMediaPlayerStateUpdate
public void onMediaPlayerStateUpdate(IZegoMediaPlayer* mediaPlayer, ZegoMediaPlayerState state, int errorCode)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mediaPlayer | IZegoMediaPlayer* | 回调的播放器实例。 |
| state | ZegoMediaPlayerState | 播放器状态。 |
| errorCode | int | 错误码,详情请参考 常见错误码文档 https://doc-zh.zego.im/zh/4378.html |
详情
媒体播放器播放状态回调。
- 通知时机:当媒体播放器的播放状态改变时会触发此回调。
- 支持版本:1.3.4 及以上。
- 使用限制:无。
onMediaPlayerNetworkEvent
public void onMediaPlayerNetworkEvent(IZegoMediaPlayer* mediaPlayer, ZegoMediaPlayerNetworkEvent networkEvent)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mediaPlayer | IZegoMediaPlayer* | 回调的播放器实例。 |
| networkEvent | ZegoMediaPlayerNetworkEvent | 网络状态事件。 |
详情
媒体播放器网络状态事件回调。
- 通知时机:当媒体播放器在播放网络资源时,当缓存数据的状态改变时会触发此回调。
- 相关接口:[setNetWorkBufferThreshold]。
- 支持版本:1.3.4 及以上。
- 使用限制:只有在播放网络资源时才会触发该回调。
onMediaPlayerPlayingProgress
public void onMediaPlayerPlayingProgress(IZegoMediaPlayer* mediaPlayer, unsigned long long millisecond)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mediaPlayer | IZegoMediaPlayer* | 回调的播放器实例。 |
| millisecond | unsigned long long | 进度,单位为毫秒。 |
详情
媒体播放器播放进度回调。通过调用 [setProgressInterval] 可以设置回调间隔时间。当设置回调间隔为 0 时,停止回调。默认回调间隔为 1 秒。
- 通知时机:当媒体播放器开始播放资源后会触发此回调。
- 相关接口:[setProgressInterval]。
- 支持版本:1.3.4 及以上。
- 使用限制:无。
onMediaPlayerRenderingProgress
public void onMediaPlayerRenderingProgress(IZegoMediaPlayer* mediaPlayer, unsigned long long millisecond)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mediaPlayer | IZegoMediaPlayer* | 回调的播放器实例。 |
| millisecond | unsigned long long | 进度,单位为毫秒。 |
详情
媒体播放器渲染进度回调。通过调用 [setProgressInterval] 可以设置回调间隔时间。当设置回调间隔为 0 时,停止回调。默认回调间隔为 1 秒。
- 通知时机:当媒体播放器开始播放资源后会触发此回调。
- 相关接口:[setProgressInterval]。
- 支持版本:3.8.0 及以上。
- 使用限制:无。
onMediaPlayerVideoSizeChanged
public void onMediaPlayerVideoSizeChanged(IZegoMediaPlayer* mediaPlayer, int width, int height)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mediaPlayer | IZegoMediaPlayer* | 回调的播放器实例。 |
| width | int | 宽。 |
| height | int | 高。 |
详情
媒体播放器播放视频分辨率改变事件回调。
- 通知时机:当媒体播放器在播放视频资源时,开始播放以及视频的分辨率变化时会触发此回调。
- 支持版本:3.11.0 及以上。
onMediaPlayerRecvSEI
public void onMediaPlayerRecvSEI(IZegoMediaPlayer* mediaPlayer, const unsigned char* data, unsigned int dataLength)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mediaPlayer | IZegoMediaPlayer* | 回调的播放器实例。 |
| data | const unsigned char* | SEI 内容。 |
| dataLength | unsigned int | SEI 内容长度。 |
详情
媒体次要信息回调。
- 通知时机:媒体播放器开始播放媒体文件时,如果解析到媒体文件中含有 SEI 时,将触发该回调。
- 支持版本:2.2.0 及以上。
- 注意事项:调用接口 [setEventHandler] 设置后该回调才生效。
onMediaPlayerSoundLevelUpdate
public void onMediaPlayerSoundLevelUpdate(IZegoMediaPlayer* mediaPlayer, float soundLevel)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mediaPlayer | IZegoMediaPlayer* | 回调的播放器实例。 |
| soundLevel | float | 声浪值,取值范围:[0.0, 100.0](该取值仅表示回调的声浪取值范围,不表示精度)。 |
详情
声浪更新回调。
- 通知时机:回调频率由 [EnableSoundLevelMonitor] 指定。
- 相关接口:监听此回调需要通过 [EnableSoundLevelMonitor] 开启。
- 支持版本:2.15.0 及以上。
- 注意事项:调用接口 [setEventHandler] 设置后该回调才生效。
onMediaPlayerFrequencySpectrumUpdate
public void onMediaPlayerFrequencySpectrumUpdate(IZegoMediaPlayer* mediaPlayer, const ZegoAudioSpectrum& spectrumList)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mediaPlayer | IZegoMediaPlayer* | 回调的播放器实例。 |
| spectrumList | const ZegoAudioSpectrum& | 媒体播放器频谱值数组,频谱值范围为 [0-2^30]。 |
详情
频谱更新回调。
- 通知时机:回调频率由 [EnableFrequencySpectrumMonitor] 指定。
- 相关接口:监听此回调需要通过 [EnableFrequencySpectrumMonitor] 开启。
- 支持版本:2.15.0 及以上。
- 注意事项:调用接口 [setEventHandler] 设置后该回调才生效。
onMediaPlayerFirstFrameEvent
public void onMediaPlayerFirstFrameEvent(IZegoMediaPlayer* mediaPlayer, ZegoMediaPlayerFirstFrameEvent event)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mediaPlayer | IZegoMediaPlayer* | 回调的播放器实例。 |
| event | ZegoMediaPlayerFirstFrameEvent | 首帧回调事件类型。 |
详情
开始播放首帧回调。
- 通知时机:媒体播放器开始播放时会产生此回调。
- 相关接口:需要调用 [setPlayerCanvas] 接口,给媒体播放器设置视图,才能收到视频首帧事件回调。
- 支持版本:3.5.0 及以上。
- 注意事项:调用 [setEventHandler] 接口设置后该回调才生效。
onMediaPlayerLocalCache
public void onMediaPlayerLocalCache(IZegoMediaPlayer* mediaPlayer, int errorCode, String resource, String cachedFile)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mediaPlayer | IZegoMediaPlayer* | 回调的播放器实例。 |
| errorCode | int | 错误码。 |
| resource | String | 播放的资源 |
| cachedFile | String | 缓存的文件 |
详情
本地缓存 http/https 网络资源后回调。
- 通知时机:媒体播放器缓存 http/https 网络资源后会产生此回调。
- 相关接口:需要调用 [enableLocalCache] 接口。
- 支持版本:3.12.0 及以上。
- 注意事项:调用 [enableLocalCache] 接口设置后,且播放的是 http/https 网络资源时该回调才生效。
IZegoMediaPlayerVideoHandler
Declared in ZegoExpressEventHandler.h
方法
onVideoFrame
public void onVideoFrame(IZegoMediaPlayer* mediaPlayer, const unsigned char** data, unsigned int* dataLength, ZegoVideoFrameParam param)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mediaPlayer | IZegoMediaPlayer* | 回调的播放器实例。 |
| data | const unsigned char** | 视频帧的裸数据(例:RGBA 只需考虑 data[0],I420 需考虑 data[0,1,2])。 |
| dataLength | unsigned int* | 数据的长度(例:RGBA 只需考虑 dataLength[0],I420 需考虑 dataLength[0,1,2])。 |
| param | ZegoVideoFrameParam | 视频帧参数。 |
详情
播放器抛视频数据的回调。
- 通知时机:媒体播放器开始播放时会产生此回调。
- 支持版本:1.3.4 及以上。
- 使用限制:播放版权音乐时,该回调会被默认禁用,若有需要,请联系 ZEGO 技术支持。
- 注意事项:调用接口 [setVideoHandler] 设置后该回调才生效。
onVideoFrame
public void onVideoFrame(IZegoMediaPlayer* mediaPlayer, const unsigned char** data, unsigned int* dataLength, ZegoVideoFrameParam param, const char* extraInfo)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mediaPlayer | IZegoMediaPlayer* | 回调的播放器实例。 |
| data | const unsigned char** | 视频帧的裸数据(例:RGBA 只需考虑 data[0],I420 需考虑 data[0,1,2])。 |
| dataLength | unsigned int* | 数据的长度(例:RGBA 只需考虑 dataLength[0],I420 需考虑 dataLength[0,1,2])。 |
| param | ZegoVideoFrameParam | 视频帧参数。 |
| extraInfo | const char* | 视频帧附加信息,json 格式数据。 |
详情
播放器抛视频数据的回调。
- 通知时机:媒体播放器开始播放时会产生此回调。
- 支持版本:2.16.0 及以上。
- 使用限制:播放版权音乐时,该回调会被默认禁用,若有需要,请联系 ZEGO 技术支持。
- 注意事项:调用接口 [setVideoHandler] 设置后该回调才生效。
IZegoPictureCapturer
Declared in ZegoExpressInterface.h
方法
setPath
public void setPath(std::string path)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| path | std::string | 图片路径。 |
详情
设置图片采集源路径。
- 相关接口:用户可以调用 [createPictureCapturer] 创建图片采集器实例。
- 支持版本:3.22.0 及以上。
getIndex
IZegoRangeAudio
Declared in ZegoExpressInterface.h
方法
setEventHandler
public void setEventHandler(std::shared_ptr<IZegoRangeAudioEventHandler> handler)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| handler | std::shared_ptr<IZegoRangeAudioEventHandler> | 用于接收范围语音回调的对象。 |
详情
设置范围语音模块回调的接口,可接收麦克风开启状态回调通知 [onRangeAudioMicrophoneStateUpdate]。
- 业务场景:用于监听当前麦克风的连接状态。
- 调用时机:在初始化范围语音 [createRangeAudio] 之后。
- 支持版本:2.11.0 及以上。
setAudioReceiveRange
public void setAudioReceiveRange(float range)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| range | float | 音频范围,取值必须大于或等于 0。 |
详情
设置音频接收范围,超过该范围的音源声音会听不见。
- 业务场景:“全世界” 模式下设置收听者的听觉范围。
- 默认值:没有调用该函数时,只能接收本小队内的成员声音,无法接收小队外的所有声音。
- 调用时机:在初始化范围语音 [createRangeAudio] 之后。
- 支持版本:2.11.0 及以上。
- 注意事项:该功能只对小队以外的人生效。
setAudioReceiveRange
public int setAudioReceiveRange(ZegoReceiveRangeParam param)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| param | ZegoReceiveRangeParam | 音频接收范围的配置。 |
详情
设置音频接收范围,超过该范围的音源声音会听不见。
- 业务场景:“全世界” 模式下设置收听者的听觉范围。
- 默认值:没有调用该函数时,只能接收本小队内的成员声音,无法接收小队外的所有声音。
- 调用时机:在初始化范围语音 [createRangeAudio] 之后。
- 支持版本:3.7.0 及以上。
- 注意事项:该功能只对小队以外的人生效。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
setPositionUpdateFrequency
public void setPositionUpdateFrequency(int frequency)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| frequency | int | 更新频率,取值必须大于15ms。 |
详情
设置SDK内部实时更新位置的频率 最小15ms。
- 业务场景:对更新位置后,音频渐变灵敏度要求很高。
- 默认值:默认100ms。
- 调用时机:在初始化范围语音 [createRangeAudio] 之后。
- 支持版本:2.21.0 及以上。
setRangeAudioVolume
public void setRangeAudioVolume(int volume)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| volume | int | 音量,取值[0,200]。 |
详情
设置范围语音音量。
- 业务场景:当用户调用 [startPlayingStream] 拉取其他流时,可通过此接口来设置增大或者减少范围语音流的音量。
- 默认值:100。
- 调用时机:在初始化范围语音 [createRangeAudio] 之后。
- 支持版本:2.23.0 及以上。
setStreamVocalRange
public void setStreamVocalRange(std::string streamID, float vocalRange)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 拉流 ID。 |
| vocalRange | float | 流发声范围。 |
详情
设置流的发声范围。
- 业务场景:当用户调用 [startPlayingStream] 拉取其他流时,通过设置该流的发声范围,并且调用 [updateStreamPosition] 使此流也有范围语音效果, 调用后将以音源的发声范围进行距离衰减效果。
- 调用时机:在初始化范围语音 [createRangeAudio] 并且调用 [startPlayingStream] 之后。
- 支持版本:2.23.0 及以上。
- 注意事项:调用 [enableMicrophone] 开启范围语音时,会将流的资源切换成 RTC,无论原先调用 [startPlayingStream] 拉流时是否指定的资源为 RTC。如果确实需要指定流的资源为 CDN,请配置为拉自定义 CDN 流,并指定 CDN 地址信息。
setStreamVocalRange
public int setStreamVocalRange(std::string streamID, ZegoVocalRangeParam param)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 拉流 ID。 |
| param | ZegoVocalRangeParam | 流发声范围。 |
详情
设置流的发声范围。
- 业务场景:当用户调用 [startPlayingStream] 拉取其他流时,通过设置该流的发声范围,并且调用 [updateStreamPosition] 使此流也有范围语音效果, 调用后将以音源的发声范围进行距离衰减效果。
- 调用时机:在初始化范围语音 [createRangeAudio] 并且调用 [startPlayingStream] 之后。
- 支持版本:3.7.0 及以上。
- 注意事项:调用 [enableMicrophone] 开启范围语音时,会将流的资源切换成 RTC,无论原先调用 [startPlayingStream] 拉流时是否指定的资源为 RTC。如果确实需要指定流的资源为 CDN,请配置为拉自定义 CDN 流,并指定 CDN 地址信息。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
updateStreamPosition
public void updateStreamPosition(std::string streamID, float[3] position)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 拉流 ID。 |
| position | float[3] | 自身在世界坐标系中的坐标,参数是长度为 3 的 float 数组,三个值依次表示前、右、上的坐标值。 |
详情
更新流的位置。
- 业务场景:当用户调用 [startPlayingStream] 拉取其他流时,调用 [setStreamVocalRange] 设置流发声位置后,再调用此接口设置该流的位置,使此流也有范围语音效果。
- 调用时机:在初始化范围语音 [createRangeAudio] 并且调用 [startPlayingStream] 之后。
- 支持版本:2.23.0 及以上。
updateSelfPosition
public void updateSelfPosition(float[3] position, float[3] axisForward, float[3] axisRight, float[3] axisUp)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| position | float[3] | 自身在世界坐标系中的坐标,参数是长度为 3 的 float 数组,三个值依次表示前、右、上的坐标值。 |
| axisForward | float[3] | 自身坐标系前轴的单位向量,参数是长度为 3 的 float 数组,三个值依次表示前、右、上的坐标值。 |
| axisRight | float[3] | 自身坐标系右轴的单位向量,参数是长度为 3 的 float 数组,三个值依次表示前、右、上的坐标值。 |
| axisUp | float[3] | 自身坐标系上轴的单位向量,参数是长度为 3 的 float 数组,三个值依次表示前、右、上的坐标值。 |
详情
更新用户的位置和朝向,以便 SDK 计算出用户与音源距离以及左右耳立体声效果。
- 业务场景:当用户在游戏中操作的角色在世界地图中移动时,更新角色的位置信息以及头部朝向。
- 调用时机:在登录房间 [loginRoom] 后调用。
- 支持版本:2.11.0 及以上。
- 注意事项:在调用 [enableSpeaker] 打开扬声器之前如果没有调用该接口设置位置信息,则无法接收除小队以为其他人的声音。
updateAudioSource
public void updateAudioSource(std::string userID, float[3] position)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| userID | std::string | 发声者的 userID。 |
| position | float[3] | 发声者在世界坐标系中的坐标,参数是长度为 3 的 float 数组,三个值依次表示前、右、上的坐标值。 |
详情
设置 userID 对应的音源在房间内游戏地图位置,以便 SDK 计算听者与音源的距离和方位。
- 业务场景:更新发声用户在游戏地图坐标中的位置。
- 调用时机:调用 [loginRoom] 登录房间后调用,登出房间后会清空记录的音源信息。
- 支持版本:2.11.0 及以上。
enableSpatializer
public void enableSpatializer(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启 3D 音效。 |
详情
开启3D音效后将根据发声者相当于听者的位置模拟实际空间中的声音效果,直观的感受就是音源远近和方位发生变化时声音大小和左右声音差也会发生变化。
- 业务场景:第一人称射击类游戏或社交场景游戏中听声辨位功能。
- 默认值:没有调用该函数时,默认关闭 3D 音效。
- 调用时机:在初始化范围语音 [createRangeAudio] 之后。
- 相关接口:开启 3D 音效后,可使用 [updateAudioSource] 或 [updateSelfPosition] 改变位置和朝向来体验 3D 效果。
- 支持版本:2.11.0 及以上。
- 注意事项:该功能只对小队以外的人生效。
enableMicrophone
public void enableMicrophone(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启麦克风。 |
详情
enable 为 "true" 时开启麦克风并推送音频流,为 "false" 时关闭麦克风并停止推送音频流。
- 业务场景:用户在房间内打开或关闭麦克风交流。
- 默认值:没有调用该函数时,默认关闭麦克风。
- 调用时机:在初始化范围语音 [createRangeAudio] 和 登录房间 [loginRoom] 之后。
- 相关回调:通过回调 [onRangeAudioMicrophoneStateUpdate] 来获取麦克风开关状态变化。
- 支持版本:2.11.0 及以上。
- 注意事项:开启麦克风会自动使用主通道推音频流。
enableSpeaker
public void enableSpeaker(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否开启扬声器。 |
详情
enable 为 "true" 时开启扬声器并拉取音频流,为 "false" 时关闭扬声器并停止拉取音频流。
- 业务场景:用户在房间内打开或关闭扬声器收听。
- 默认值:没有调用该函数时,默认关闭扬声器。
- 调用时机:在初始化范围语音 [createRangeAudio] 和 登录房间 [loginRoom] 之后。
- 支持版本:2.11.0 及以上。
- 注意事项:开启扬声器会自动拉取房间内的音频流。
setRangeAudioMode
public void setRangeAudioMode(ZegoRangeAudioMode mode)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mode | ZegoRangeAudioMode | 范围语音模式。 |
详情
收听模式,可设置为 “全世界” 模式或 ”仅小队“ 模式。
- 业务场景:用户可选在 “全世界“ 模式下与所有人聊天(有距离限制),也可选择 ”仅小队“ 模式下团队内交流(无距离限制)。
- 默认值:没有调用该函数时,默认使用 “全世界” 模式。
- 调用时机:在初始化范围语音 [createRangeAudio] 之后。
- 相关接口:在 “全世界” 模式下可设置声音接收范围 [setAudioReceiveRange],在 “仅小队” 模式下需要设置 [setTeamID] 加入对应小队才能听到队伍内的声音。
- 支持版本:2.11.0 及以上。
- 使用限制:不能与 [setRangeAudioCustomMode] 混用。
setRangeAudioCustomMode
public void setRangeAudioCustomMode(ZegoRangeAudioSpeakMode speakMode, ZegoRangeAudioListenMode listenMode)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| speakMode | ZegoRangeAudioSpeakMode | 范围语音发声模式。 |
| listenMode | ZegoRangeAudioListenMode | 范围语音收听模式。 |
详情
可以分别设置发声模式和收听模式,以控制在世界和小队中的发声和收听行为。
- 业务场景:用户可通过选择发声模式来决定谁能收听到他的声音,也可通过选择收听模式来决定收听谁的声音。
- 默认值:没有调用该接口时,默认使用 “发声到所有” 模式和 “收听所有” 模式,也就是 “全世界” 模式。
- 调用时机:在初始化范围语音 [createRangeAudio] 之后。
- 相关接口:当希望收听来自世界的声音时,需要设置声音接收范围 [setAudioReceiveRange]。当希望在小队中发声和收听时,需要设置 [setTeamID] 加入对应小队。
- 支持版本:3.3.0 及以上。
- 使用限制:1. 不能与 [setRangeAudioMode] 混用;
- 与3.3.0之前的版本无法兼容。
setTeamID
public void setTeamID(std::string teamID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| teamID | std::string | 队伍 ID,为空退出小队,最大长度为 64 字节的字符串。支持数字,英文字符 和 '~', '!', '@', '#', '$', '', '^', '&', '*', '(', ')', '_', '+', '=', '-', ', ';', '’', ',', '.', '<', '>', '\'。 |
详情
设置队伍 ID 后,将能与同一队伍其他用户交流,且声音不会随距离方向产生变化;也可以通过设置空字符串来退出小队。
- 业务场景:用户加入小队交流或退出小队。
- 默认值:没有调用该函数时,默认不加入任何小队。
- 调用时机:在初始化范围语音 [createRangeAudio] 之后。
- 支持版本:2.11.0 及以上。
- 注意事项:小队内的声音不会有距离限制,也不会有 3D 音效。
muteUser
public void muteUser(std::string userID, bool mute)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| userID | std::string | 用户 ID。 |
| mute | bool | 是否可以接收指定远端用户的音频数据,“true” 表示禁止,“false” 表示接收,默认值为 “false”。 |
详情
在实时音视频互动过程中,本地用户可根据需要,通过此函数控制是否接收指定远端用户的音频数据,当开发者不接收音频收据时,可降低硬件和网络的开销。
- 业务场景:当开发者需要快速关闭、恢复远端音频时,可调用此函数,提升互动体验。
- 默认值:默认为 “false”,即接收所有用户的音频数据。
- 调用时机:在初始化范围语音 [createRangeAudio] 之后。
- 相关接口:可调用 [muteAllPlayStreamAudio] 函数控制是否接收所有音频数据。1. 当调用 [muteAllPlayStreamAudio(true)] 函数时,全局生效,即本地用户会禁止接收所有远端用户的音频数据,此时无论在 [muteAllPlayStreamAudio] 之前还是之后调用 [muteUser] 函数都不生效。2. 当调用 [muteAllPlayStreamAudio(false)] 函数时,本地用户可以接收所有远端用户的音频数据,此时可再通过 [muteUser] 函数控制是否接收指定用户的音频数据。调用 [muteUser(userID, true)] 函数则本地用户可以接收该 “userID” 之外的其他音频数据;调用 [muteUser(userID, false)] 函数则本地用户可以接收 “userID” 的音频数据。
- 支持版本:2.16.0 及以上。
- 注意事项:只有当 [muteAllPlayStreamAudio] 函数设置为 “false”时,此函数才有效。
IZegoRangeAudioEventHandler
Declared in ZegoExpressEventHandler.h
方法
onRangeAudioMicrophoneStateUpdate
public void onRangeAudioMicrophoneStateUpdate(IZegoRangeAudio* rangeAudio, ZegoRangeAudioMicrophoneState state, int errorCode)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rangeAudio | IZegoRangeAudio* | 触发此次回调的范围语音实例。 |
| state | ZegoRangeAudioMicrophoneState | 麦克风使用状态。 |
| errorCode | int | 错误码,详情请参考 常见错误码文档 https://doc-zh.zego.im/zh/4378.html |
详情
麦克风的状态变化通知,开启发送音频是异步过程,中间的状态切换都通过该函数回调。
- 通知时机:在 [enableMicrophone] 函数后。
- 支持版本:2.11.0 及以上。
- 注意事项:1. 必须在 [enableMicrophone] 函数调用前监听。 2. 正常停止 [enableMicrophone] 时,是不会触发该回调的,只有异常停推的时候才会触发 Off 的状态。
IZegoRangeScene
Declared in ZegoExpressInterface.h
方法
getRangeSceneStream
public IZegoRangeSceneStream* getRangeSceneStream()ZegoExpressInterface.h获取范围场景流管理实例对象。
- 业务场景:常用于虚拟世界场景中,用户可通过获取范围场景流管理实例对象使用相关功能。
- 调用时机:通过 [createRangeScene] 创建范围场景之后,通过 [destroyRangeScene] 销毁范围场景之前。
- 支持版本:3.0.0 及以上。
- 使用限制:无。
范围场景流管理实例。
getRangeSceneTeam
public IZegoRangeSceneTeam* getRangeSceneTeam()ZegoExpressInterface.h获取范围场景小队管理实例对象。
- 业务场景:常用于虚拟世界场景中,用户可通过获取范围场景小队管理实例对象使用相关功能。
- 调用时机:通过 [createRangeScene] 创建范围场景之后,通过 [destroyRangeScene] 销毁范围场景之前。
- 支持版本:3.1.0 及以上。
- 使用限制:无。
范围场景小队管理实例。
getRangeSceneItem
public IZegoRangeSceneItem* getRangeSceneItem()ZegoExpressInterface.h获取范围场景物品管理实例对象。
- 业务场景:常用于虚拟世界场景中,用户可通过获取范围场景物品管理实例对象使用相关功能。
- 调用时机:通过 [createRangeScene] 创建范围场景之后,通过 [destroyRangeScene] 销毁范围场景之前。
- 支持版本:3.1.0 及以上。
- 使用限制:无。
范围场景物品管理实例。
getRangeSceneHandle
public int getRangeSceneHandle()ZegoExpressInterface.h获取范围场景实例句柄。
- 业务场景:用于推流到场景。
- 调用时机:通过 [createRangeScene] 创建范围场景之后,通过 [destroyRangeScene] 销毁范围场景之前。
- 支持版本:3.0.0 及以上。
- 使用限制:无。
范围场景实例句柄。
setEventHandler
public bool setEventHandler(std::shared_ptr<IZegoRangeSceneEventHandler> handler)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| handler | std::shared_ptr<IZegoRangeSceneEventHandler> | 用于接收范围场景回调的对象。 |
详情
设置范围场景模块回调。
- 调用时机:通过 [createRangeScene] 创建范围场景之后,通过 [destroyRangeScene] 销毁范围场景之前。
- 支持版本:3.0.0 及以上。
返回值
设置范围场景回调结果。true: 成功, false: 失败。
loginScene
public int loginScene(ZegoSceneParam param, ZegoRangeSceneLoginSceneCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| param | ZegoSceneParam | 场景参数。 |
| callback | ZegoRangeSceneLoginSceneCallback | 登录场景结果回调。 |
详情
SDK 范围场景功能用"场景"概念来组织用户。
- 业务场景:在同一个场景内用户在虚拟世界内互动。
- 调用时机:通过 [createRangeScene] 创建范围场景之后,通过 [destroyRangeScene] 销毁范围场景之前。
- 相关回调: 1. 当用户开始登录场景、登录场景成功或登录场景失败后,将会触发 [onSceneStateUpdate] 回调通知开发者当前用户连接场景的状态。 2. 如果由于网络质量原因导致网络临时中断,SDK 内部会自动进行重连。可通过监听 [onSceneStateUpdate] 回调获取本端当前场景连接状态的变化情况。
- 相关接口:1. 可调用 [logoutScene] 退出登录。
- 支持版本:3.0.0 及以上。
- 注意事项: 1. 使用不同 appID 的 App 不能互通。 2. 强烈建议 userID 与业务 APP 的用户 ID 一一对应,即一个 userID 与一个真实用户是固定且唯一的,而不应该是以随机的 userID 的方式传给 SDK 的方式。因为唯一且固定的 userID 可以让 ZEGO 技术人员快速定位线上问题。 隐私保护申明:请勿在此接口填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
logoutScene
public int logoutScene(ZegoRangeSceneLogoutSceneCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| callback | ZegoRangeSceneLogoutSceneCallback | 退出场景结果回调。 |
详情
该接口会退出当前用户已登录的场景。
- 调用时机:登录场景成功后,若不再使用场景功能,用户可以调用函数 [logoutScene]。
- 相关回调:调用此函数后会收到 [onSceneStateUpdate] 回调通知成功退出场景。
- 相关接口:用户可以调用 [loginScene] 函数登录场景。
- 支持版本:3.0.0 及以上。
- 使用限制:无。
- 注意事项:退出场景会停止该用户与场景相关的所有推拉流。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
updateUserStatus
public int updateUserStatus(ZegoPosition position, unsigned int channel, const unsigned char* status, unsigned int statusLength)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| position | ZegoPosition | 用户当前位置。 |
| channel | unsigned int | 状态所属通道,从0开始,不能超过最大通道号。 |
| status | const unsigned char* | 用户当前状态数据。 |
| statusLength | unsigned int | 用户当前状态数据长度。 |
详情
开发者可以调用该接口更新用户的状态。
- 调用时机:[LoginScene] 之后,[LogoutScene] 之前。
- 支持版本:3.0.0 及以上。
- 使用限制:无。
- 注意事项:无。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
updateUserCommand
public int updateUserCommand(ZegoPosition position, unsigned int channel, const unsigned char* command, unsigned int commandLength)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| position | ZegoPosition | 用户当前位置。 |
| channel | unsigned int | 指令所属通道,从0开始,不能超过最大通道号。 |
| command | const unsigned char* | 用户下一步命令数据。 |
| commandLength | unsigned int | 用户下一步命令数据长度。 |
详情
开发者可以调用该接口更新用户的指令。
- 调用时机:[LoginScene] 之后,[LogoutScene] 之前。
- 支持版本:3.0.0 及以上。
- 使用限制:无。
- 注意事项:无。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
updateUserPosition
public int updateUserPosition(ZegoPosition position)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| position | ZegoPosition | 用户当前位置。 |
详情
开发者可以调用该接口更新用户的位置。
- 调用时机:[LoginScene] 之后,[LogoutScene] 之前。
- 支持版本:3.0.0 及以上。
- 使用限制:无。
- 注意事项:无。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
getUserCount
public int getUserCount(ZegoRangeSceneGetUserCountCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| callback | ZegoRangeSceneGetUserCountCallback | 获取场景内总人数结果回调。 |
详情
开发者可以调用该接口获取场景内总人数。
- 调用时机:[LoginScene] 之后,[LogoutScene] 之前。
- 默认值:NULL。
- 支持版本:3.0.0 及以上。
- 使用限制:无。
- 注意事项:无。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
getUserListInView
public int getUserListInView(ZegoRangeSceneGetUserListInViewCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| callback | ZegoRangeSceneGetUserListInViewCallback | 获取范围内用户列表结果回调。 |
详情
开发者可以调用该接口获取范围内用户列表。
- 调用时机:[LoginScene] 之后,[LogoutScene] 之前。
- 默认值:NULL。
- 支持版本:3.0.0 及以上。
- 使用限制:无。
- 注意事项:无。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
sendCustomCommand
public int sendCustomCommand(const unsigned char* command, unsigned int commandLength, ZegoRangeSceneSendCustomCommandCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| command | const unsigned char* | 自定义信令。 |
| commandLength | unsigned int | 自定义信令数据长度。 |
| callback | ZegoRangeSceneSendCustomCommandCallback | 发送用户自定义信令结果回调。 |
详情
开发者可以调用该接口发送用户自定义信令。
- 调用时机:[loginScene] 之后,[logoutScene] 之前。
- 默认值:NULL。
- 支持版本:3.0.0 及以上。
- 使用限制:无。
- 注意事项:无。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
renewToken
public int renewToken(std::string token)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| token | std::string | 需要更新的 Token。 |
详情
当开发者收到 [onSceneTokenWillExpire] 之后,可使用此 API 更新 Token 鉴权信息,保障后续 RTC 功能正常。
- 业务场景:Token 将要过期时使用。
- 调用时机:收到 [onSceneTokenWillExpire] 之后。
- 支持版本:3.1.0 及以上。
- 使用限制:无。
返回值
错误码,详情请参考常用错误码文档 https://doc-zh.zego.im/zh/4378.html
setStreamConfig
public int setStreamConfig(ZegoSceneStreamConfig config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoSceneStreamConfig | 场景推拉流模式。 |
详情
开发者可以调用该接口设置场景推拉流模式。
- 调用时机:[createRangeScene] 之后。
- 默认值:NULL。
- 支持版本:3.2.0 及以上。
- 使用限制:无。
- 注意事项:无。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
IZegoRangeSceneEventHandler
Declared in ZegoExpressEventHandler.h
方法
onSceneStateUpdate
public void onSceneStateUpdate(IZegoRangeScene* rangeScene, ZegoSceneState state, int errorCode)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rangeScene | IZegoRangeScene* | 触发此次回调的范围场景实例。 |
| state | ZegoSceneState | 当前场景状态。 |
| errorCode | int | 错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html |
详情
场景状态变化通知。
- 通知时机:场景状态变化。
- 支持版本:3.0.0 及以上。
- 使用限制:请勿在回调线程中调用 SDK 接口。
onEnterView
public void onEnterView(IZegoRangeScene* rangeScene, const ZegoUser& user, const ZegoPosition& position)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rangeScene | IZegoRangeScene* | 触发此次回调的范围场景实例。 |
| user | const ZegoUser& | 用户对象。 |
| position | const ZegoPosition& | 用户位置。 |
详情
其他用户进入当前用户视野范围回调。
- 通知时机:其他用户进入当前用户视野范围。
- 支持版本:3.0.0 及以上。
- 使用限制:请勿在回调线程中调用 SDK 接口。
onLeaveView
public void onLeaveView(IZegoRangeScene* rangeScene, std::string userID)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rangeScene | IZegoRangeScene* | 触发此次回调的范围场景实例。 |
| userID | std::string | 用户 ID。 |
详情
其他用户离开当前用户视野范围回调通知。
- 通知时机:其他用户离开当前用户视野范围。
- 支持版本:3.0.0 及以上。
- 使用限制:请勿在回调线程中调用 SDK 接口。
onUserStatusUpdate
public void onUserStatusUpdate(IZegoRangeScene* rangeScene, std::string userID, const ZegoPosition& position, unsigned int channel, const unsigned char* status, unsigned int statusLength)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rangeScene | IZegoRangeScene* | 触发此次回调的范围场景实例。 |
| userID | std::string | 用户 ID。 |
| position | const ZegoPosition& | 用户当前位置。 |
| channel | unsigned int | 状态所属通道。 |
| status | const unsigned char* | 用户当前状态数据。 |
| statusLength | unsigned int | 用户当前状态数据长度。 |
详情
用户状态变更回调。
- 通知时机:用户状态变更。
- 支持版本:3.0.0 及以上。
- 使用限制:请勿在回调线程中调用 SDK 接口。
- 注意事项:本回调为高频回调,请勿在本回调中做耗时操作。
onUserCommandUpdate
public void onUserCommandUpdate(IZegoRangeScene* rangeScene, std::string userID, const ZegoPosition& position, unsigned int channel, const unsigned char* command, unsigned int commandLength)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rangeScene | IZegoRangeScene* | 触发此次回调的范围场景实例。 |
| userID | std::string | 用户 ID。 |
| position | const ZegoPosition& | 用户当前位置。 |
| channel | unsigned int | 指令所属通道。 |
| command | const unsigned char* | 用户下一步命令数据。 |
| commandLength | unsigned int | 用户下一步命令数据长度。 |
详情
用户指令变更回调。
- 通知时机:用户指令变更。
- 支持版本:3.0.0 及以上。
- 使用限制:请勿在回调线程中调用 SDK 接口。
- 注意事项:本回调为高频回调,请勿在本回调中做耗时操作。
onCustomCommandUpdate
public void onCustomCommandUpdate(IZegoRangeScene* rangeScene, const unsigned char* command, unsigned int commandLength)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rangeScene | IZegoRangeScene* | 触发此次回调的范围场景实例。 |
| command | const unsigned char* | 用户自定义信令。 |
| commandLength | unsigned int | 用户自定义信令数据长度。 |
详情
用户自定义信令变更回调。
- 通知时机:用户自定义信令变更。
- 支持版本:3.0.0 及以上。
- 使用限制:请勿在回调线程中调用 SDK 接口。
onSceneTokenWillExpire
public void onSceneTokenWillExpire(IZegoRangeScene* rangeScene, int remainTimeInSecond)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rangeScene | IZegoRangeScene* | 触发此次回调的范围场景实例。 |
| remainTimeInSecond | int | token 过期前的剩余时间。 |
详情
场景 Token 鉴权将要过期的回调通知,请用户通过 [renewToken] 函数更新场景 Token 鉴权。
- 通知时机:在 Token 过期前 30 秒,SDK 会通过 [onSceneTokenWillExpire] 回调发出通知。
- 相关接口:当开发者收到此回调后,可通过 [renewToken] 来更新 Token 鉴权信息。
- 支持版本:3.1.0 及以上。
- 使用限制:请勿在回调线程中调用 SDK 接口。
IZegoRangeSceneItem
Declared in ZegoExpressInterface.h
方法
setEventHandler
public bool setEventHandler(std::shared_ptr<IZegoRangeSceneItemEventHandler> handler)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| handler | std::shared_ptr<IZegoRangeSceneItemEventHandler> | 用于接收范围场景物品管理回调的对象。 |
详情
设置范围场景物品管理模块回调。
- 调用时机:通过 [getRangeSceneItem] 获取范围场景物品管理对象之后。
- 支持版本:3.1.0 及以上。
返回值
设置范围场景物品管理回调结果。true: 成功, false: 失败。
createItem
public int createItem(ZegoItemParam param, ZegoRangeSceneCreateItemCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| param | ZegoItemParam | 物品参数。 |
| callback | ZegoRangeSceneCreateItemCallback | 创建物品结果回调。 |
详情
创建物品。
- 业务场景:虚拟世界内物品竞争。
- 调用时机:登录场景成功之后,[logoutScene] 之前。
- 相关接口:可调用 [destroyItem] 销毁物品。
- 支持版本:3.1.0 及以上。
- 注意事项: 1. 物品属于范围场景,而不是某个用户,当某用户成功绑定某物品时,只是表示该用户拥有对该物品的暂时使用权。 2. 一个物品允许拥有1个或多个绑定用户,申请绑定物品时遵循先到先得的原则。 3. 当有多个用户同时绑定了某个物品时,他们对该物品的变更遵循cas原则。 4. 创建物品时允许指定是否在创建成功后绑定该物品。 5. 物品创建成功时,该物品范围内的用户会收到 [onItemEnterView] 回调通知。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
destroyItem
public int destroyItem(long long itemID, ZegoRangeSceneDestroyItemCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| itemID | long long | 物品 ID。 |
| callback | ZegoRangeSceneDestroyItemCallback | 销毁物品结果回调。 |
详情
销毁物品。
- 业务场景:虚拟世界内物品竞争。
- 调用时机:登录场景成功之后,[logoutScene] 之前。
- 相关接口:可调用 [createItem] 创建物品。
- 支持版本:3.1.0 及以上。
- 注意事项:物品被销毁时,该物品范围内的用户会收到 [onItemLeaveView]回调通知。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
bindItem
public int bindItem(long long itemID, ZegoRangeSceneBindItemCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| itemID | long long | 物品 ID。 |
| callback | ZegoRangeSceneBindItemCallback | 申请绑定物品结果回调。 |
详情
申请绑定物品。
- 业务场景:虚拟世界内物品竞争。
- 调用时机:登录场景成功之后,[logoutScene] 之前。
- 相关接口:可调用 [unbindItem] 申请解绑物品。
- 支持版本:3.1.0 及以上。
- 注意事项:成功绑定物品时,该物品范围内的用户会收到 [onItemBindUpdate] 回调通知。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
unbindItem
public int unbindItem(long long itemID, ZegoRangeSceneUnbindItemCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| itemID | long long | 物品 ID。 |
| callback | ZegoRangeSceneUnbindItemCallback | 销毁物品结果回调。 |
详情
申请解绑物品。
- 业务场景:虚拟世界内物品竞争。
- 调用时机:[bindItem] 之后,[logoutScene] 之前。
- 相关接口:可调用 [bindItem] 申请绑定物品。
- 支持版本:3.1.0 及以上。
- 注意事项:成功解绑物品时,该物品范围内的用户会收到 [onItemUnbindUpdate] 回调通知。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
updateItemStatus
public int updateItemStatus(long long itemID, ZegoPosition position, unsigned int channel, const unsigned char* status, unsigned int statusLength, ZegoRangeSceneUpdateItemStatusCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| itemID | long long | 物品 ID。 |
| position | ZegoPosition | 物品当前位置。 |
| channel | unsigned int | 状态所属通道,从0开始,不能超过最大通道号。 |
| status | const unsigned char* | 物品当前状态数据。 |
| statusLength | unsigned int | 物品当前状态数据长度。 |
| callback | ZegoRangeSceneUpdateItemStatusCallback | 更新物品状态结果回调。 |
详情
开发者可以调用该接口更新物品的状态。
- 调用时机:[onBindItem] 之后,[unbindItem] 之前。
- 支持版本:3.1.0 及以上。
- 使用限制:无。
- 注意事项:无。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
updateItemCommand
public int updateItemCommand(long long itemID, ZegoPosition position, unsigned int channel, const unsigned char* command, unsigned int commandLength, ZegoRangeSceneUpdateItemCommandCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| itemID | long long | 物品 ID。 |
| position | ZegoPosition | 物品当前位置。 |
| channel | unsigned int | 状态所属通道,从0开始,不能超过最大通道号。 |
| command | const unsigned char* | 物品下一步命令数据。 |
| commandLength | unsigned int | 物品下一步命令数据长度。 |
| callback | ZegoRangeSceneUpdateItemCommandCallback | 更新物品下一步命令结果回调。 |
详情
开发者可以调用该接口更新物品的指令。
- 调用时机:[onBindItem] 之后,[unbindItem] 之前。
- 支持版本:3.1.0 及以上。
- 使用限制:无。
- 注意事项:无。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
IZegoRangeSceneItemEventHandler
Declared in ZegoExpressEventHandler.h
方法
onItemEnterView
public void onItemEnterView(IZegoRangeScene* rangeScene, long long itemID, unsigned int capacity, const ZegoPosition& position, const std::vector<std::string>& userList)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rangeScene | IZegoRangeScene* | 触发此次回调的范围场景实例。 |
| itemID | long long | 物品 ID。 |
| capacity | unsigned int | 物品的允许绑定用户人数。 |
| position | const ZegoPosition& | 物品位置。 |
| userList | const std::vector<std::string>& | 物品当前绑定的用户列表。 |
详情
物品进入当前用户视野范围回调。
- 通知时机:物品进入当前用户视野范围。
- 支持版本:3.1.0 及以上。
- 使用限制:请勿在回调线程中调用 SDK 接口。
onItemLeaveView
public void onItemLeaveView(IZegoRangeScene* rangeScene, long long itemID)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rangeScene | IZegoRangeScene* | 触发此次回调的范围场景实例。 |
| itemID | long long | 物品 ID。 |
详情
物品离开当前用户视野范围回调通知。
- 通知时机:物品离开当前用户视野范围。
- 支持版本:3.1.0 及以上。
- 使用限制:请勿在回调线程中调用 SDK 接口。
onItemBindUpdate
public void onItemBindUpdate(IZegoRangeScene* rangeScene, long long itemID, std::string userID)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rangeScene | IZegoRangeScene* | 触发此次回调的范围场景实例。 |
| itemID | long long | 物品 ID。 |
| userID | std::string | 物品绑定的用户 ID。 |
详情
物品绑定用户变更回调通知。
- 通知时机:物品绑定用户变更。
- 支持版本:3.1.0 及以上。
- 使用限制:请勿在回调线程中调用 SDK 接口。
onItemUnbindUpdate
public void onItemUnbindUpdate(IZegoRangeScene* rangeScene, long long itemID, const std::vector<std::string>& userList)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rangeScene | IZegoRangeScene* | 触发此次回调的范围场景实例。 |
| itemID | long long | 物品 ID。 |
| userList | const std::vector<std::string>& | 物品解绑绑定的用户列表。 |
详情
物品解绑用户变更回调通知。
- 通知时机:物品解绑用户变更。
- 支持版本:3.1.0 及以上。
- 使用限制:请勿在回调线程中调用 SDK 接口。
onItemStatusUpdate
public void onItemStatusUpdate(IZegoRangeScene* rangeScene, long long itemID, const ZegoPosition& position, unsigned int channel, const unsigned char* status, unsigned int statusLength)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rangeScene | IZegoRangeScene* | 触发此次回调的范围场景实例。 |
| itemID | long long | 物品 ID。 |
| position | const ZegoPosition& | 物品当前位置。 |
| channel | unsigned int | 状态所属通道。 |
| status | const unsigned char* | 物品当前状态数据。 |
| statusLength | unsigned int | 物品当前状态数据长度。 |
详情
物品状态变更回调。
- 通知时机:物品状态变更。
- 支持版本:3.1.0 及以上。
- 使用限制:请勿在回调线程中调用 SDK 接口。
- 注意事项:本回调为高频回调,请勿在本回调中做耗时操作。
onItemCommandUpdate
public void onItemCommandUpdate(IZegoRangeScene* rangeScene, long long itemID, const ZegoPosition& position, unsigned int channel, const unsigned char* command, unsigned int commandLength)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rangeScene | IZegoRangeScene* | 触发此次回调的范围场景实例。 |
| itemID | long long | 物品 ID。 |
| position | const ZegoPosition& | 物品当前位置。 |
| channel | unsigned int | 指令所属通道。 |
| command | const unsigned char* | 物品下一步命令数据。 |
| commandLength | unsigned int | 物品下一步命令数据长度。 |
详情
物品指令变更回调。
- 通知时机:物品指令变更。
- 支持版本:3.1.0 及以上。
- 使用限制:请勿在回调线程中调用 SDK 接口。
- 注意事项:本回调为高频回调,请勿在本回调中做耗时操作。
IZegoRangeSceneStream
Declared in ZegoExpressInterface.h
方法
setEventHandler
public bool setEventHandler(std::shared_ptr<IZegoRangeSceneStreamEventHandler> handler)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| handler | std::shared_ptr<IZegoRangeSceneStreamEventHandler> | 用于接收范围场景流管理回调的对象。 |
详情
设置范围场景流管理模块回调。
- 调用时机:通过 [getRangeSceneStream] 获取范围场景流管理之后。
- 支持版本:3.0.0 及以上。
返回值
设置范围场景流管理回调结果。true: 成功, false: 失败。
setReceiveRange
public int setReceiveRange(float range)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| range | float | 以本人为中心点的范围距离。 |
详情
该接口会设置音视频流的接收范围,ZEGO SDK 会主动拉取进去该范围的用户的流。
- 调用时机:[getRangeSceneStream] 之后。
- 默认值:接受范围的默认值是 0.0。
- 支持版本:3.0.0 及以上。
- 使用限制:无。
- 注意事项:无。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
setReceiveRange
public int setReceiveRange(ZegoReceiveRangeParam param)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| param | ZegoReceiveRangeParam | 音频接受范围配置。 |
详情
该接口会设置音视频流的接收范围,ZEGO SDK 会主动拉取进去该范围的用户的流。
- 调用时机:[getRangeSceneStream] 之后。
- 默认值:接受范围的默认值是 0.0。
- 支持版本:3.7.0 及以上。
- 使用限制:无。
- 注意事项:无。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
enableRangeSpatializer
public int enableRangeSpatializer(bool enable)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | true: 开启 3D 空间音效, false: 关闭 3D 空间音效。 |
详情
开启后,在世界内非小队成员的音频,会随与本人的距离、方向产生空间变化。
- 调用时机:[getRangeSceneStream] 之后。
- 默认值:Disable。
- 支持版本:3.0.0 及以上。
- 使用限制:使用 3D 空间音效需要使用媒体音量。
- 注意事项:无。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
mutePlayAudio
public int mutePlayAudio(std::string userID, bool mute)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| userID | std::string | 用户 ID。 |
| mute | bool | true: 不接收用户的音频流,false: 接收用户的音频流。 |
详情
设置是否接收指定用户的音频数据。
- 调用时机:[LoginScene] 之后,[LogoutScene] 之前。
- 默认值:接收。
- 支持版本:3.0.0 及以上。
- 使用限制:无。
- 注意事项:无。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
mutePlayVideo
public int mutePlayVideo(std::string userID, bool mute)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| userID | std::string | 用户 ID。 |
| mute | bool | true: 不接收用户的视频流,false: 接收用户的视频流。 |
详情
开启后,在世界内非小队成员的音频,会随与本人的距离、方向产生空间变化。
- 调用时机:[LoginScene] 之后,[LogoutScene] 之前。
- 默认值:接收。
- 支持版本:3.0.0 及以上。
- 使用限制:无。
- 注意事项:无。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
IZegoRangeSceneStreamEventHandler
Declared in ZegoExpressEventHandler.h
方法
onUserStreamStateUpdate
public void onUserStreamStateUpdate(IZegoRangeScene* rangeScene, std::string userID, std::string streamID, ZegoStreamState state)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rangeScene | IZegoRangeScene* | 触发此次回调的范围场景实例。 |
| userID | std::string | 用户 ID。 |
| streamID | std::string | 用户流 ID。 |
| state | ZegoStreamState | 用户流状态。 |
详情
本端拉其他用户的流状态变更回调通知。
- 通知时机:本端拉其他用户的流状态变更。
- 支持版本:3.0.0 及以上。
- 使用限制:请勿在回调线程中调用 SDK 接口。
onUserMicUpdate
public void onUserMicUpdate(IZegoRangeScene* rangeScene, std::string userID, ZegoDeviceState state)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rangeScene | IZegoRangeScene* | 触发此次回调的范围场景实例。 |
| userID | std::string | 用户 ID。 |
| state | ZegoDeviceState | 设备状态。 |
详情
用户麦克风状态变更回调。
- 通知时机:用户麦克风状态变更。
- 支持版本:3.0.0 及以上。
- 使用限制:请勿在回调线程中调用 SDK 接口。
onUserCameraUpdate
public void onUserCameraUpdate(IZegoRangeScene* rangeScene, std::string userID, ZegoDeviceState state)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rangeScene | IZegoRangeScene* | 触发此次回调的范围场景实例。 |
| userID | std::string | 用户 ID。 |
| state | ZegoDeviceState | 设备状态。 |
详情
用户摄像头状态变更回调。
- 通知时机:用户摄像头状态变更。
- 支持版本:3.0.0 及以上。
- 使用限制:请勿在回调线程中调用 SDK 接口。
onUserSpeakerUpdate
public void onUserSpeakerUpdate(IZegoRangeScene* rangeScene, std::string userID, ZegoDeviceState state)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rangeScene | IZegoRangeScene* | 触发此次回调的范围场景实例。 |
| userID | std::string | 用户 ID。 |
| state | ZegoDeviceState | 设备状态。 |
详情
用户扬声器状态变更回调。
- 通知时机:用户扬声器状态变更。
- 支持版本:3.0.0 及以上。
- 使用限制:请勿在回调线程中调用 SDK 接口。
IZegoRangeSceneTeam
Declared in ZegoExpressInterface.h
方法
setEventHandler
public bool setEventHandler(std::shared_ptr<IZegoRangeSceneTeamEventHandler> handler)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| handler | std::shared_ptr<IZegoRangeSceneTeamEventHandler> | 用于接收范围场景小队管理回调的对象。 |
详情
设置范围场景小队管理模块回调。
- 调用时机:通过 [getRangeSceneTeam] 获取范围场景小队管理之后。
- 支持版本:3.1.0 及以上。
返回值
设置范围场景小队管理回调结果。true: 成功, false: 失败。
joinTeam
public int joinTeam(ZegoTeamParam config, ZegoRangeSceneJoinTeamCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoTeamParam | 小队参数。 |
| callback | ZegoRangeSceneJoinTeamCallback | 加入小队结果回调。 |
详情
加入小队。
- 业务场景:常用于虚拟世界场景中,加入小队后,小队内成员可以相互看到,听到彼此。
- 调用时机:通过 [loginScene] 登录范围场景后。
- 支持版本:3.1.0 及以上。
- 使用限制:无。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
leaveTeam
public int leaveTeam(unsigned int teamID, ZegoRangeSceneLeaveTeamCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| teamID | unsigned int | 小队 ID。 |
| callback | ZegoRangeSceneLeaveTeamCallback | 离开小队结果回调。 |
详情
离开小队。
- 业务场景:常用于虚拟世界场景中,加入小队后,小队内成员可以相互看到,听到彼此。
- 调用时机:通过 [joinTeam] 加入小队后。
- 支持版本:3.1.0 及以上。
- 使用限制:无。
返回值
错误码,详情请参考常用 错误码文档 https://doc-zh.zego.im/zh/4378.html
IZegoRangeSceneTeamEventHandler
Declared in ZegoExpressEventHandler.h
方法
onTeamStateUpdate
public void onTeamStateUpdate(IZegoRangeScene* rangeScene, unsigned int teamID, ZegoTeamState state, int errorCode)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rangeScene | IZegoRangeScene* | 触发此次回调的范围场景实例。 |
| teamID | unsigned int | 小队 ID。 |
| state | ZegoTeamState | 变化后的小队状态。 |
| errorCode | int | 错误码,详情请参考 常见错误码。 |
详情
当小队的连接状态改变时触发该回调,并通知改变的原因。
- 业务场景:开发者可以通过这个回调来判断小队内当前用户的状态。
- 通知时机: 1. 开发者调用 [joinTeam]、[leaveTeam] 函数时会收到此通知。
- 用户设备的网络情况变化时也可能收到此通知 (SDK 在断线重连时会自动重新加入小队,详情请参考 SDK 是否支持断线重连机制。
- 相关接口:[joinTeam]、[leaveTeam]。
- 支持版本:3.1.0 及以上。
- 使用限制:无。
- 注意事项:若长时间处于正在请求连接状态(ZegoTeamStateLogining),一般是因为用户端网络不稳定导致。
onTeamMemberUpdate
public void onTeamMemberUpdate(IZegoRangeScene* rangeScene, unsigned int teamID, ZegoUpdateType updateType, const std::vector<ZegoUser>& userList)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rangeScene | IZegoRangeScene* | 触发此次回调的范围场景实例。 |
| teamID | unsigned int | 小队 ID。 |
| updateType | ZegoUpdateType | 更新类型(添加/删除)。 |
| userList | const std::vector<ZegoUser>& | 当前小队内变更的用户列表。 |
详情
当小队内有其他用户上线或下线时,导致小队内用户列表发生变化,会通过本回调通知开发者。
- 业务场景:开发者可以通过这个回调来实时更新小队内的用户列表展示。
- 通知时机: 1. 用户首次加入小队时,如果小队内有其他用户,SDK 会触发 "updateType" 为 [ZegoUpdateTypeAdd] 的回调通知,此时 "userList" 为小队内的其他用户。 2. 用户已在小队内,如果有其他用户通过 [joinTeam] 函数加入到本小队,SDK 会触发 "updateType" 为 [ZegoUpdateTypeAdd] 的回调通知。 3. 用户已在小队内,有其他用户通过 [leaveTeam] 函数退出本小队,SDK 会触发 "updateType" 为 [ZegoUpdateTypeDelete] 的回调通知。
- 相关接口:[joinTeam]、[leaveTeam]。
- 支持版本:3.1.0 及以上。
IZegoRealTimeSequentialDataEventHandler
Declared in ZegoExpressEventHandler.h
方法
onReceiveRealTimeSequentialData
public void onReceiveRealTimeSequentialData(IZegoRealTimeSequentialDataManager* manager, const unsigned char* data, unsigned int dataLength, std::string streamID)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| manager | IZegoRealTimeSequentialDataManager* | 触发此次回调的实时有序数据管理器实例。 |
| data | const unsigned char* | 收到的实时有序数据数据。 |
| dataLength | unsigned int | 数据内容长度 |
| streamID | std::string | 订阅的流 ID |
详情
可通过此回调收到当前订阅中的流发来的实时有序数据。
- 业务场景:当需要接收实时有序数据时需要监听此函数。 回调时机:调用了 [startSubscribing] 成功开始订阅后,且流上面发来数据时,会触发此回调。
- 支持版本:2.14.0 及以上。
- 使用限制:无
- 注意事项:无
IZegoRealTimeSequentialDataManager
Declared in ZegoExpressInterface.h
方法
setEventHandler
public void setEventHandler(std::shared_ptr<IZegoRealTimeSequentialDataEventHandler> handler)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| handler | std::shared_ptr<IZegoRealTimeSequentialDataEventHandler> | 实时有序数据管理器回调 |
详情
设置实时有序数据管理器回调,用于监听如发送信令结果、收到信令等回调。
- 调用时机:创建 [ZegoRealTimeSequentialDataManager] 实例后。
- 支持版本:2.14.0 及以上。
- 使用限制:无。
- 注意事项:调用此函数将覆盖上一次调用此函数设置的回调。
startBroadcasting
public void startBroadcasting(std::string streamID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID,长度不超过 256 的字符串。 注意事项: 1. 需要在整个 AppID 内全局唯一(注意也不可以与 [startPublishingStream] 中传的流 ID 重复),若出现在同一个 AppID 内,不同的用户各推了一条流且流名相同,将会导致后推流的用户推流失败。 2. 仅支持数字,英文字符 和 '-', '_'。 |
详情
可通过此函数让用户将自己本地的实时有序数据流广播到 ZEGO RTC 服务器,同一房间的其他用户通过 "streamID" 就可以订阅该实时有序数据流进行互通。
- 业务场景:在发送实时有序数据前,需要先调用此函数开始广播。
- 调用时机:创建 [ZegoRealTimeSequentialDataManager] 实例后。
- 支持版本:2.14.0 及以上。
- 使用限制:无
- 注意事项:调用此函数后,本端将收到 [onPublisherStateUpdate] 回调,告知本端这条流的广播状态(推流状态),广播成功后,同一房间内的其他用户将会收到 [onRoomStreamUpdate] 回调,告知其他用户房间内新增了一条流。
stopBroadcasting
public void stopBroadcasting(std::string streamID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 需要停止广播的流 ID |
详情
可通过此函数让用户停止广播自己本地的实时有序数据流。
- 业务场景:当不再需要发送实时有序数据后,需要调用此函数停止广播。
- 调用时机:创建 [ZegoRealTimeSequentialDataManager] 实例后。
- 支持版本:2.14.0 及以上。
- 使用限制:无
- 注意事项:调用此函数后,本端将收到 [onPublisherStateUpdate] 回调,告知本端这条流的广播状态(推流状态),停止广播后,同一房间内的其他用户将会收到 [onRoomStreamUpdate] 回调,告知其他用户房间内删除了一条流。
sendRealTimeSequentialData
public void sendRealTimeSequentialData(const unsigned char* data, unsigned int dataLength, std::string streamID, ZegoRealTimeSequentialDataSentCallback callback)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| data | const unsigned char* | 要发送的实时有序数据数据。 |
| dataLength | unsigned int | 数据内容长度。 |
| streamID | std::string | 通过哪个流 ID 发送实时有序数据。 |
| callback | ZegoRealTimeSequentialDataSentCallback | 发送实时有序数据结果通知。 |
详情
可通过此函数在当前正在广播中的流上发送实时有序数据。
- 业务场景:当需要发送实时有序数据时需要调用此函数。
- 调用时机:调用了 [startBroadcasting] 成功开始广播后调用。
- 支持版本:2.14.0 及以上。
- 使用限制:无
- 注意事项:无
startSubscribing
public void startSubscribing(std::string streamID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 流 ID,长度不超过 256 字节的字符串。 注意事项: 仅支持数字,英文字符 和 '-', '_'。 |
详情
可通过此函数让用户可以从 ZEGO RTC 服务器订阅远端用户的实时有序数据流。
- 业务场景:当需要接收来自其他用户发送的实时有序数据前,需要先调用此函数开始订阅对方的流。
- 调用时机:创建 [ZegoRealTimeSequentialDataManager] 实例后。
- 支持版本:2.14.0 及以上。
- 使用限制:无
- 注意事项:调用此函数后,本端将收到 [onPlayerStateUpdate] 回调,告知本端这条流的订阅状态(拉流状态)。
stopSubscribing
public void stopSubscribing(std::string streamID)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| streamID | std::string | 需要停止订阅的流 ID |
详情
可通过此函数停止订阅实时有序数据流。
- 业务场景:当不再需要接收其他用户发送的实时有序数据后,需要调用此函数停止订阅对方的流。
- 调用时机:创建 [ZegoRealTimeSequentialDataManager] 实例后。
- 支持版本:2.14.0 及以上。
- 使用限制:无
- 注意事项:调用此函数后,本端将收到 [onPlayerStateUpdate] 回调,告知本端这条流的订阅状态(拉流状态)。
getIndex
IZegoScreenCaptureSource
Declared in ZegoExpressInterface.h
方法
setEventHandler
public void setEventHandler(std::shared_ptr<IZegoScreenCaptureSourceEventHandler> handler)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| handler | std::shared_ptr<IZegoScreenCaptureSourceEventHandler> | 屏幕采集源回调。 |
详情
设置屏幕采集源回调,用于监听采集数据的回调。
- 调用时机:创建 [ZegoScreenCaptureSource] 实例后。
- 支持版本:3.1.0 及以上。
- 使用限制:无。
- 注意事项:调用此函数将覆盖上一次调用此函数设置的回调。
updateCaptureSource
public void updateCaptureSource(void * sourceId, ZegoScreenCaptureSourceType sourceType)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| sourceId | void * | 指定的屏幕 ID 或窗口 ID。 |
| sourceType | ZegoScreenCaptureSourceType | 指定的屏幕源类型。 |
详情
根据提供的源的 ID 和源的类型更新屏幕采集源对象。
- 业务场景:需要对屏幕或窗口有录制和分享等业务时使用。
- 调用时机:在创建屏幕采集实例 [createScreenCaptureSource] 之后。
- 支持版本:3.1.0 及以上。
- 使用限制:只适用于 Windows/macOS
startCapture
public void startCapture()ZegoExpressInterface.h开始屏幕采集。
- 调用时机:在创建屏幕采集实例 [createScreenCaptureSource] 之后。
- 支持版本:3.1.0 及以上。
stopCapture
public void stopCapture()ZegoExpressInterface.h停止屏幕采集。
- 支持版本:3.1.0 及以上。
getCaptureSourceRect
public ZegoRect getCaptureSourceRect()ZegoExpressInterface.h获取屏幕采集源的矩形。
- 支持版本:3.6.0 及以上
- 使用限制:开始采集 [startScreenCapture] 之后调用,只适用于 Windows/macOS 系统。
采集资源的矩形信息
updateCaptureRegion
public void updateCaptureRegion(ZegoRect rect)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rect | ZegoRect | 待采集区域相对于整个屏幕或窗口的位置。 |
详情
更新屏幕采集的区域。
- 调用时机:在创建屏幕采集实例 [createScreenCaptureSource] 之后。
- 支持版本:3.1.0 及以上。
- 使用限制:只适用于 Windows/macOS 系统
updatePublishRegion
public void updatePublishRegion(ZegoRect rect)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| rect | ZegoRect | 待推流区域相对于采集画面左上角的位置,实际采集画面尺寸可以通过 [onAvailableFrame] 获取 |
详情
更新屏幕采集的推流区域。
- 调用时机:更新屏幕采集源 [updateScreenCaptureSource] 之后。
- 支持版本:3.8.0 及以上。
- 使用限制:每次更新屏幕采集源 [updateScreenCaptureSource] 时会清空区域,需要重新设置,只适用于 Windows/macOS 系统。
- 注意事项:设置的区域不能超过 [onAvailableFrame] 返回的尺寸,否则会设置失败并推流原始画面。推流区域失效会通过 [onExceptionOccurred] 通知。
setExcludeWindowList
public void setExcludeWindowList(void ** list, int count)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| list | void ** | 过滤窗口的 ID 列表。 |
| count | int | 列表的个数。 |
详情
指定窗口列表,在采集屏幕时将这些窗口过滤,不在画面中显示。
- 调用时机:在创建屏幕采集实例 [createScreenCaptureSource] 之后。
- 支持版本:3.1.0 及以上。
- 使用限制:只适用于 Windows/macOS
enableWindowActivate
public void enableWindowActivate(bool active)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| active | bool | 是否激活窗口。true 为激活窗口,false 不激活窗口,默认 true。 |
详情
在采集目标为窗口的情况下,初次采集时,设置是否激活窗口提升至前台显示。
- 调用时机:在创建屏幕采集实例 [createScreenCaptureSource] 之后。
- 支持版本:3.1.0 及以上。
- 使用限制:只适用于 Windows/macOS
enableCursorVisible
public void enableCursorVisible(bool visible)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| visible | bool | 是否显示光标。true 为显示光标,false 不显示光标,默认 false。 |
详情
设置是否显示光标。
- 调用时机:在创建屏幕采集实例 [createScreenCaptureSource] 之后。
- 支持版本:3.1.0 及以上。
- 使用限制:只适用于 Windows/macOS
enableHightLight
public void enableHightLight(bool enable, ZegoLayerBorderConfig config)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否高亮采集区域。true 为高亮,false 不高亮,默认 false。 |
| config | ZegoLayerBorderConfig | 高亮采集区域边框配置。 |
详情
设置是否高亮采集区域。
- 调用时机:在创建屏幕采集实例 [createScreenCaptureSource] 之后。
- 支持版本:3.21.0 及以上。
- 使用限制:只适用于 Windows/macOS
enableAudioCapture
public void enableAudioCapture(bool enable, ZegoAudioFrameParam audioParam)ZegoExpressInterface.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| enable | bool | 是否采集声音。true 为采集,false 不采集,默认 false。 |
| audioParam | ZegoAudioFrameParam | 音频采集参数。 |
详情
采窗口采集时是否采集窗口进程的声音。
- 调用时机:在启动采集 [startScreenCapture] 之前。[setAudioSource] 设置采集源为 ZegoAudioSourceTypeCustom,并且屏幕采集推流通道相同。
- 支持版本:3.13.0 及以上。
- 使用限制:只适用于 Windows 10 及以上版本
getIndex
IZegoScreenCaptureSourceEventHandler
Declared in ZegoExpressEventHandler.h
方法
onAvailableFrame
public void onAvailableFrame(IZegoScreenCaptureSource* source, const void * data, unsigned int dataLength, ZegoVideoFrameParam param)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| source | IZegoScreenCaptureSource* | 回调的屏幕采集源实例。 |
| data | const void * | 屏幕采集图像帧的裸数据(例:RGBA 只需考虑 data[0],I420 需考虑 data[0,1,2])。 |
| dataLength | unsigned int | 数据的长度(例:RGBA 只需考虑 dataLength[0],I420 需考虑 dataLength[0,1,2])。 |
| param | ZegoVideoFrameParam | 屏幕采集图像帧参数。 |
详情
屏幕采集数据的回调。
- 通知时机:屏幕开始采集 [startCapture] 后会触发此回调。
- 支持版本:3.1.0 及以上。
- 注意事项:调用接口 [setEventHandler] 设置后该回调才生效。
onExceptionOccurred
public void onExceptionOccurred(IZegoScreenCaptureSource* source, ZegoScreenCaptureSourceExceptionType exceptionType)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| source | IZegoScreenCaptureSource* | 回调的屏幕采集源实例。 |
| exceptionType | ZegoScreenCaptureSourceExceptionType | 采集源异常类型。 |
详情
屏幕采集错误通知。
- 通知时机:屏幕开始采集后产生异常会触发此回调。
- 支持版本:3.1.0 及以上。
- 使用限制:只适用于 Windows/macOS。
- 注意事项:调用接口 [setEventHandler] 设置后该回调才生效。
onCaptureTypeExceptionOccurred
public void onCaptureTypeExceptionOccurred(IZegoScreenCaptureSource* source, ZegoScreenCaptureSourceType sourceType, ZegoScreenCaptureSourceExceptionType exceptionType)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| source | IZegoScreenCaptureSource* | 回调的屏幕采集源实例。 |
| sourceType | ZegoScreenCaptureSourceType | 采集源类型。 |
| exceptionType | ZegoScreenCaptureSourceExceptionType | 采集源异常类型。 |
详情
屏幕采集采集源异常通知。
- 通知时机:屏幕开始采集后产生异常会触发此回调。
- 支持版本:3.21.0 及以上。
- 使用限制:只适用于 Windows/macOS。
- 注意事项:调用接口 [setEventHandler] 设置后该回调才生效。
onWindowStateChanged
public void onWindowStateChanged(IZegoScreenCaptureSource* source, ZegoScreenCaptureWindowState windowState, ZegoRect windowRect)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| source | IZegoScreenCaptureSource* | 回调的屏幕采集源实例。 |
| windowState | ZegoScreenCaptureWindowState | 采集的窗口状态。 |
| windowRect | ZegoRect | 采集的窗口矩形。 |
- 支持版本:3.4.0 及以上。
- 使用限制:只适用于 Windows/macOS
- 注意事项:调用接口 [setEventHandler] 设置后该回调才生效。
onRectChanged
public void onRectChanged(IZegoScreenCaptureSource* source, ZegoRect captureRect)ZegoExpressEventHandler.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| source | IZegoScreenCaptureSource* | 回调的屏幕采集源实例。 |
| captureRect | ZegoRect | 采集的区域矩形。 |
- 支持版本:3.7.0 及以上。
- 使用限制:只适用于 Windows/macOS
- 注意事项:调用接口 [setEventHandler] 设置后该回调才生效。
ZegoExpressSDK
Declared in ZegoExpressSDK.h
方法
createEngine
public IZegoExpressEngine* createEngine(ZegoEngineProfile profile, std::shared_ptr<IZegoEventHandler> eventHandler)ZegoExpressSDK.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| profile | ZegoEngineProfile | 用来创建引擎的基础配置信息。 |
| eventHandler | std::shared_ptr<IZegoEventHandler> | 事件通知回调。传 [nullptr] 则意味着不接收任何回调通知,之后也可通过 [setEventHandler] 进行设置。如果重复调用 [createEngine] 且第二次调用前未调用 [destroyEngine] 函数销毁引擎,则 eventHandler 不会被更新。 |
详情
创建 ZegoExpressEngine 单例对象并初始化 SDK。
- 调用时机:SDK 其他实例方法调用之前。
- 支持版本:2.14.0 及以上。
- 使用限制:无。
- 注意事项:SDK 只支持创建一个实例,如需重复调用 [createEngine] ,则需在第二次调用 [createEngine] 前先调用 [destroyEngine] 函数销毁引擎,否则再次调用此函数返回的都是上次创建的对象。
返回值
引擎单例对象。
destroyEngine
public void destroyEngine(IZegoExpressEngine*& engine, ZegoDestroyCompletionCallback callback)ZegoExpressSDK.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| engine | IZegoExpressEngine*& | 先前调用 [createEngine] 函数创建的引擎实例。 |
| callback | ZegoDestroyCompletionCallback | 销毁引擎完成的通知回调,可监听此回调以确保设备硬件资源(麦克风、扬声器、摄像头等)被释放完成,若开发者不关注引擎资源的释放时机,该参数可传[nullptr]。 |
详情
销毁 ZegoExpressEngine 单例对象并反初始化 SDK。
- 调用时机:当不再使用 SDK 时,可以通过本接口释放 SDK 使用的资源。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:使用 [createEngine] 创建单例后,如果单例对象未被创建或已被销毁,调用此函数时,不会收到相关回调。
getEngine
public IZegoExpressEngine* getEngine()ZegoExpressSDK.h如果引擎尚未创建或已经销毁,则返回 [nullptr]。
- 调用时机:创建引擎之后,销毁引擎之前。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
引擎单例对象
setEngineConfig
public void setEngineConfig(ZegoEngineConfig config)ZegoExpressSDK.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoEngineConfig | 引擎进阶配置 |
详情
用于开启进阶功能。
- 调用时机:不同的配置有不同的调用时机要求,详情可咨询 ZEGO 技术支持。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
setLogConfig
public void setLogConfig(ZegoLogConfig config)ZegoExpressSDK.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| config | ZegoLogConfig | 日志配置。 |
详情
开发者当需要自定义日志文件大小和路径时,需要调用此函数来完成配置。
- 调用时机:必须在调用 [createEngine] 之前设置才生效,若在 [createEngine] 之后设置,则在 [destroyEngine] 后的下一次 [createEngine] 时生效。
- 支持版本:2.3.0 及以上。
- 使用限制:无。
- 注意事项:一旦调用了本接口,通过 [setEngineConfig] 设置日志大小和路径的方式将无效。因此,不建议使用[setEngineConfig] 设置日志大小和路径 。
setLocalProxyConfig
public void setLocalProxyConfig(const std::vector<ZegoProxyInfo>& proxyList, bool enable)ZegoExpressSDK.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| proxyList | const std::vector<ZegoProxyInfo>& | 代理详细信息。 |
| enable | bool | 是否开启代理。 |
详情
设置本地代理配置。
- 调用时机:必须在调用 [createEngine] 之前设置才生效,否则会失败。
- 支持版本:3.1.0 及以上。
- 使用限制:[createEngine] 后无法更改代理。
- 注意事项:无。
setCloudProxyConfig
public void setCloudProxyConfig(const std::vector<ZegoProxyInfo>& proxyList, std::string token, bool enable)ZegoExpressSDK.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| proxyList | const std::vector<ZegoProxyInfo>& | 代理详细信息。 |
| token | std::string | 鉴权信息。如果使用 AppSign 鉴权可忽略,填空。 |
| enable | bool | 是否开启代理。 |
详情
设置云代理配置。
- 调用时机:必须在调用 [createEngine] 之前设置才生效,否则会失败。
- 支持版本:3.1.0 及以上。
- 使用限制:[createEngine] 后无法更改代理。
- 注意事项:无。
setLicense
public void setLicense(std::string license)ZegoExpressSDK.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| license | std::string | 鉴权信息。 |
详情
当使用 License 鉴权收费的时候,需要调用此函数来完成配置。
- 调用时机:必须在调用 [createEngine] 之前设置才生效,否则会失败。
- 支持版本:3.5.0 及以上。
- 使用限制:不支持中途更改。
- 注意事项:无。
setRoomMode
public void setRoomMode(ZegoRoomMode mode)ZegoExpressSDK.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| mode | ZegoRoomMode | 房间模式。详情描述:用于设置房间模式。业务场景:当需要同时进入多个房间进行推拉流时,可以通过本接口开启多房间模式。是否必填:是。默认值:ZEGO_ROOM_MODE_SINGLE_ROOM。 |
详情
开发者需要使用多房间功能时,需要调用此函数来完成配置。
- 调用时机:必须在调用 [createEngine] 之前设置才生效,否则会失败。
- 支持版本:2.9.0 及以上。
- 使用限制:如果需要使用多房间功能,请与即构技术支持联系配置服务端支持。
- 注意事项:无。
setGeoFence
public void setGeoFence(ZegoGeoFenceType type, std::vector<int> areaList)ZegoExpressSDK.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| type | ZegoGeoFenceType | 地理围栏类型。详情描述:用于设置地理围栏类型。 |
| areaList | std::vector<int> | 地理围栏区域列表。详情描述:用于描述地理围栏范围。 |
详情
开发者需要使用地理围栏功能时,需要调用此函数来完成配置。
- 调用时机:必须在调用 [createEngine] 之前设置才生效,否则会失败。
- 支持版本:3.4.0 及以上。
- 使用限制:如果需要使用地理围栏功能,请联系 ZEGO 技术支持。
- 注意事项:无。
getVersion
public std::string getVersion()ZegoExpressSDK.h在 SDK 在运行过程中若遇到异常,可将问题、日志等信息提交 ZEGO 技术人员定位与排障。开发者也可通过该 API 收集当前 SDK 版本信息,便于 App 运营统计以及关联问题。
- 调用时机:任意时刻。
- 支持版本:1.1.0 及以上。
- 使用限制:无。
- 注意事项:无。
SDK 版本号。
setAndroidEnv
public void setAndroidEnv(void* jvm, void* context)ZegoExpressSDK.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| jvm | void* | Java 虚拟机对象。 |
| context | void* | Android 上下文,必须保证在 SDK 生命周期里有效。 |
详情
设置 Android 平台 JVM 以及 Context。
- 调用时机:必须在 [createEngine] 之前调用此函数。
- 支持版本:1.1.0 及以上。
- 使用限制:仅限于 Android 平台。
- 注意事项:无。
setOhosEnv
public void setOhosEnv(void* env, void* exports)ZegoExpressSDK.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| env | void* | napi_env 对象。 |
| exports | void* | napi_value exports 对象。 |
详情
设置鸿蒙平台的环境。
- 调用时机:必须在 [createEngine] 之前调用此函数。
- 支持版本:3.18.0 及以上。
- 使用限制:仅限于鸿蒙平台。
- 注意事项:无。
setApiCalledCallback
public void setApiCalledCallback(std::shared_ptr<IZegoApiCalledEventHandler> callback)ZegoExpressSDK.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| callback | std::shared_ptr<IZegoApiCalledEventHandler> | 方法执行结果的回调。 |
详情
设置调用方法执行结果的回调,设置后可以获取到每次执行 ZEGO SDK 方法结果的详细信息。
- 调用时机:任意时刻。
- 支持版本:2.3.0 及以上。
- 使用限制:无。
- 注意事项:建议开发者在需要获取每个接口的调用结果时才调用本接口,比如在排查、追踪问题的情况,一般情况下开发者不需要关注本接口。
isFeatureSupported
public bool isFeatureSupported(ZegoFeatureType featureType)ZegoExpressSDK.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| featureType | ZegoFeatureType | 要查询的功能特性类型。 |
详情
由于 SDK 支持特性裁包,部分特性可能已被裁剪; 可以使用此函数快速判断当前 SDK 是否支持指定的功能特性,例如,查询是否支持媒体播放器功能。
- 调用时机:任意时刻。
- 支持版本:2.22.0 及以上。
返回值
是否支持指定功能特性。true 表示支持;false 表示不支持。
loadLibrary
public int loadLibrary(std::string sdk_library_full_path)ZegoExpressSDK.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| sdk_library_full_path | std::string | SDK 动态库绝对路径 |
详情
显示加载 SDK 动态库。
- 调用时机:当需要显示加载 SDK 动态库时,此接口是 SDK 第一个调用的接口,加载成功后才可以调用其他 SDK 接口。
- 支持版本:3.14.0 及以上。
- 使用限制:当需要显示加载 SDK 动态库时,此接口必须第一个调用。
- 注意事项:当开发者需要显示加载 SDK 动态库时,必须在项目中增加预处理宏 ZEGOEXP_EXPLICIT,用来开启显示加载。
返回值
错误码。
unLoadLibrary
public void unLoadLibrary()ZegoExpressSDK.h卸载加载 SDK 动态库。
- 调用时机:当不需要使用 SDK 功能时,卸载 SDK 动态库,此接口是最后一个调用的 SDK 接口。
- 支持版本:3.14.0 及以上。
- 使用限制:当不需要使用 SDK 功能时,此接口必须最后一个调用。
- 注意事项:当开发者需要显示加载 SDK 动态库时,必须在项目中增加预处理宏 ZEGOEXP_EXPLICIT,用来开启显示加载,当不需要 SDK 功能时,调用此接口卸载动态库。
submitLog
public void submitLog()ZegoExpressSDK.h默认情况下,SDK 会在 App 默认目录创建日志文件并打印,每个日志文件默认最大 5MB,三个日志文件循环覆盖写入。当调用此函数时 SDK 会自动将日志文件打包并上传到 ZEGO 服务器。
- 业务场景:开发者可在 App 提供业务上的“反馈”渠道,当用户反馈的问题属于 ZEGO SDK 时,可调用此函数将 SDK 的本地日志信息上传,并联系 ZEGO 技术支持协助定位用户问题。
- 调用时机:无。
- 支持版本:3.7.0 及以上。
- 使用限制:限频每分钟1次。
- 注意事项:1.在调用本接口上传日志后,如果过快的调用 [destroyEngine] 或 退出 App,则可能存在失败的情况。建议等待几秒,等收到上传成功回调后,再调用 [destroyEngine] 或 退出 App。2.支持在 [createEngine] 之前调用,如果之前调用过 [createEngine],就会以最后一次的 appid 来上传日志,否则会等待下次 [createEngine] 才上传日志。
createEngine
public IZegoExpressEngine* createEngine(unsigned int appID, std::string appSign, bool isTestEnv, ZegoScenario scenario, std::shared_ptr<IZegoEventHandler> eventHandler)ZegoExpressSDK.h参数
| 名称 | 类型 | 描述 |
|---|---|---|
| appID | unsigned int | ZEGO 为开发者签发的应用 ID,请从 ZEGO 管理控制台 https://console-express.zego.im 申请。appID 取值范围 0~4294967295。 |
| appSign | std::string | 每个 AppID 对应的应用签名,请从 ZEGO 管理控制台申请。该参数为包含 64 个字符的字符串,字符取值范围:'0' ~ '9', 'a' ~ 'z'。例:"9dc9a25bh2f2137446897071c8c033fa33b91c3dd2a85e0c000ae82c0dad3"。2.17.0 及以上版本 appSign 允许传空或者不传。如果传空或者不传,则必须在调用 [loginRoom] 接口登录房间时将 token 填入 [ZegoRoomConfig] 参数中,用于鉴权。token 的生成方式请参考 使用 Token 鉴权 。 |
| isTestEnv | bool | 【已废弃】为提供更便捷、更标准的服务,ZEGO 已统一环境概念,2021-11-16 之后,不再有正式环境/测试环境之分,2021-11-16 及之前在 ZEGO 控制台 创建项目的用户,可参考 测试环境废弃说明 进行 SDK 升级和调整相关代码。 |
| scenario | ZegoScenario | 房间场景,SDK 会针对指定的场景的做一些音视频配置优化以达成在此场景下最优的效果。指定场景后,开发者可以使用 [setRoomScenario] 来实现在不销毁引擎 [destroyEngine] 的前提下切换其他场景。指定场景后,开发者可以调用其他 API 来继续调整音视频配置。各个场景之间的差异以及如何选择合适的场景请参考 https://doc-zh.zego.im/article/16316 |
| eventHandler | std::shared_ptr<IZegoEventHandler> | 事件通知回调。传 [nullptr] 则意味着不接收任何回调通知,之后也可通过 [setEventHandler] 进行设置。如果重复调用 [createEngine] 且第二次调用前未调用 [destroyEngine] 函数销毁引擎,则 eventHandler 不会被更新。 |
详情
创建 ZegoExpressEngine 单例对象并初始化 SDK。
- 调用时机:SDK 其他实例方法调用之前。
- 支持版本:1.1.0 ~ 2.13.1,此函数在 2.14.0 版本及以上已废弃,请使用不带 [isTestEnv] 参数的同名函数代替。
- 使用限制:无。
- 注意事项:SDK 只支持创建一个实例,如需重复调用 [createEngine] ,则需在第二次调用 [createEngine] 前先调用 [destroyEngine] 函数销毁引擎,否则再次调用此函数返回的都是上次创建的对象。
返回值
引擎单例对象

