web SDK 4.0 ILocalVideoTrack.setEnabled 方法报错

推流成功后,第一调用ILocalVideoTrack.setEnabled(enabled) 方法,enabled为false禁用该轨道,此时正常;但是再次调用该方法,enabled设置为true,打算启用该轨道时,会报错 : AgoraRTCError CAN_NOT_PUBLISH_MULTIPLE_VIDEO_TRACKS
![image|850x536](upload:image //wM9Xq90NUSXg0mjKLyfWICV8CcI.png)

一个 Client 同一时间只能发布一个视频轨道,如果想发布多个视频轨道请创建多个 Client。

我只是调用了两次setEnabled而已,第一次禁用,第二次启用,为啥就成发布多个轨道了?那除了setEnabled方法,还有其他方法可以实现 关闭/打开 摄像头麦克风效果吗?根本目的是为了实现 关闭/打开 摄像头麦克风效果

可以调用publish和unpublish来实现https://docs.agora.io/cn/Interactive%20Broadcast/API%20Reference/web_ng/interfaces/iagorartcclient.html#publish
https://docs.agora.io/cn/Interactive%20Broadcast/API%20Reference/web_ng/interfaces/iagorartcclient.html#unpublish

web端没有直接开关摄像头麦克风的方法吗,文档中没有找到,如果仅依赖publish和unpublish来实现开关麦克风摄像头效果,麦克风摄像头的开闭状态将无法维护

从你的报错来看,是在publish就报错了,没有走到setEnabled,应该是publish多个视频轨道了,可以检查一下代码逻辑

老铁 我也遇到了你这个问题 然后解决了
根本原因是因为 localVideoTrack 这个对象改变了
估计是SDK监测它改变之后 自动给publish了
我用的vue3的组合式api中的ref
const localVideoTrack = ref<ILocalVideoTrack | undefined>()
localVideoTrack.value.setEnabled(true)
然后我打印log发现 localVideoTrack.value不是原始对象 怀疑是这里导致的
然后改为:
toRaw(localVideoTrack.value).setEnabled(true)
就可以了
建议SDK可以兼容下这种情况 因为音频的是好使的

老哥,在本地视频localTracks.videoTrack.setEnabled(false);之后怎么去除那个黑框啊,或者怎么自定义一个新的样式去替换这个黑框