如何修改ZegoCloud Web示例joinRoom参数实现纯音频通话
我是Java初学者,需要自定义ZegoCloud Web端Easy Example示例。
原示例默认实现带视频的Web端音视频通信,我需要将其调整为纯音频模式
该修改需要通过编辑joinRoom函数实现,我多次尝试均出现报错,现寻求解决方案。
实现音视频通信需要先调用加入房间接口,可根据业务场景通过options参数配置不同的音视频控制规则,相关说明如下:
ZegoMediaOptions枚举可在
src/ZegoExpressManager.entity.ts文件中查看。
枚举定义代码如下:
export enum ZegoMediaOptions { AutoPlayAudio = 1, AutoPlayVideo = 2, PublishLocalAudio = 4, PublishLocalVideo = 8, }
通话场景:配置为
[ZegoMediaOptions.AutoPlayVideo, ZegoMediaOptions.AutoPlayAudio, ZegoMediaOptions.PublishLocalAudio, ZegoMediaOptions.PublishLocalVideo],直播场景默认使用该配置
默认的joinRoom调用示例:
ZegoExpressManager.shared.joinRoom(config.roomID, token, { userID: config.userID, userName: config.userName });
官方给出的不同场景配置参考:
直播场景-主播端:
[ZegoMediaOptions.AutoPlayVideo, ZegoMediaOptions.AutoPlayAudio, ZegoMediaOptions.PublishLocalAudio, ZegoMediaOptions.PublishLocalVideo]
直播场景-观众端:[ZegoMediaOptions.AutoPlayVideo, ZegoMediaOptions.AutoPlayAudio]
语聊房场景-主播端:[ZegoMediaOptions.AutoPlayAudio, ZegoMediaOptions.PublishLocalAudio]
语聊房场景-观众端:[ZegoMediaOptions.AutoPlayAudio]
我尝试编写的代码如下:
ZegoExpressManager.shared.joinRoom(config.roomID, tokenObj.token, { userID: config.userID, userName: config.userName, AutoPlayAudio: 1, AutoPublishAudio: 4, });
补充说明:上述代码运行时已不再报错,但仍然会发布视频流。
你的代码无法关闭视频流,核心是两个错误:
- 字段拼写错误:枚举中发布本地音频的配置项是
PublishLocalAudio,你写的AutoPublishAudio是不存在的字段,会被SDK直接忽略。 - 传参格式错误:音视频控制规则需要通过
mediaOptions字段传入枚举值组成的数组,不能把枚举值直接平铺到joinRoom的第三个配置参数的根层级;且你没有显式移除视频相关权限,SDK会自动加载默认的音视频全开配置,因此会持续发布视频流。
根据纯音频需求,直接替换为对应场景的代码即可:
- 纯音频场景主播(需要发布本地音频、播放远端音频):
ZegoExpressManager.shared.joinRoom(config.roomID, tokenObj.token, { userID: config.userID, userName: config.userName, mediaOptions: [ ZegoMediaOptions.AutoPlayAudio, ZegoMediaOptions.PublishLocalAudio ] });
- 纯音频场景观众(不需要发布本地流,仅播放远端音频):
ZegoExpressManager.shared.joinRoom(config.roomID, tokenObj.token, { userID: config.userID, userName: config.userName, mediaOptions: [ ZegoMediaOptions.AutoPlayAudio ] });
内容的提问来源于stack exchange,提问作者Newbie Net Doc

