关于开关音视频方法

1、您好,文档中有两种开关音视频的方法enableAudio/enableVideo 和 enableLocalAudio/enableLocalVideo,如文档中所说,enableAudio/enableVideo是会开启/关闭内部引擎,如在leaveChannel之后还会生效,是指的是禁掉音频之后,就算退出频道,手机的音频引擎也是禁用了吗,会影响其他应用使用吗?

2、如果用户A以静音、关闭视频状态进入频道,今入前使用enableLocalAudio(false),在频道内接收到开启指令之后,再调用enbaleLocalAudio(true)开启,然后在调用muteLocalAudioStream(false)来进行发送音频数据吗?

3、enableAudio和enableLocalAudio,是否直接使用enableLocalAudio就可以,两个方法的作用一样

1,不会影响其他应用,该设置仅保存在Agora sdk内
2,进入频道前调用enableLocalAudio(false)是没用的,在join后调用,想取消进入频道时默认的音频开启要用disableAudio(),频道外调用也可以禁用引擎。进入频道后再enableAudio来启用就行。
3,不一样,enableAudio是开启内部引擎,在频道外可调用,也就是joinChannel前就能用,而且在离开频道后设置仍然有效,比起enableLocalAudio会需要更长的响应时间也就是会慢一些。enableLocalAudio里的设置是在频道内开关本地音频采集(压根不采集声音),而muteLocalAudio是停止或发送本地音频流(言下之意就是还是采集到声音了,只不过不发)

好的,多谢您了
1、加入频道前调用disableAudio()实现默认不开启音频,在进入频道后需要打开时调用enableAudio开启音频模块,后续的开关可以使用enableLocalAudio或muteLocalAudio方法来实现频道内开关音频;
2、多人音视频场景中,当某个用户要停止音视频交流时(不说话,继续接收他人),调用enableLocalAudio(false)关闭本频道的音频开关,此时远程其他用户收到该用户的回调是什么,当该用户调用muteLocalAudio(true)时,相当于本地资源还在继续采集音频,两者的区别是是否继续采集音频吧?两者的回调是什么区别

1,第一条您理解的对的,这么操作可以的
2,不说话只接受他人,要用muteLocalAudio就好。虽然远端其他用户来说收到的回调不一样,我发你个链接,参考onRemoteAudioStateChanged(),不同情况是会有不同回调的
https://docs.agora.io/cn/Voice/API%20Reference/java/classio_1_1agora_1_1rtc_1_1_i_rtc_channel_event_handler.html#a8243351d18932b1678533bee01a856ca
ps.你理解的很到位,区别是在采集这块儿

非常感谢您耐心回答,这边还有几个问题请教一下

按上面步骤,加入频道前disableAudio,在需要开启的时候,第一次使用enableAudio开启,之后都使用enableLocalAudio和muteLocalAudioStream来开关;

1、在使用enableAudio之后,是启用了音频模块,此时音频的采集和发送是需要手动调用吗?

2、开启音频模块之后,使用enableLocalAudio(false)是停止采集,同时也不再继续发送,那再使用enableLocalAudio(true)之后,会自动发送吗,还是需要手动调用muteLocalAudioStream(false)去发送本地音频流

1,不确定,我没这样操作过,理论上不需要因为是相当于对引擎的重置,你可以试一下看看。
2,如果之前没有mute过,是一定会发送的,但是和1,里我放一块儿说个建议,你这里因为想做的是要默认进入频道不启用音频模块,所以其中用到的开关命令会多一些,你实际集成的时候一定要关注好有没有代码逻辑冲突等bug,比如顺序插反里,loop里执行顺序错了这种。 我自己有遇到过这种情况。

您好,您说的这些代码逻辑冲突bug麻烦能稍微详细点吗,我这边还未具体开发,还没考虑到这些具体的,只是根据预想的业务去看的

只是打个比方,咱们搞开发的懂的,bug修不完的哈哈哈,都是等具体遇到了再处理,你之后反正遇到了问题可以提问,不急的,先大胆构建起来

嗯呐,多谢了

您好,这边还有个问题,在加入频道前调用disableAudio之后,相当于禁用了音频模块,这样的话,加入频道之后,甚至没法接收和播放当前频道内的远程用户的音频信息,但是我加入频道按照默认的启用音频模块,在加入频道成功之后,mute调本地的音频,这时远程用户对我的状态判断,会不会有在我加入的一瞬间声音响了一下,然后又没了(我本地mute调),甚至是视频,远程用户是否会收到视频突然闪一下

有可能的,所以说像文档里写的那样,一般是不建议直接重置引擎,我刚刚想了想,一开始被你带沟里去了,你直接join前 mutelocalaudio就行,反正只要不发言就可以,虽然说流是还在,但是没有声音就ok。

哈哈哈哈,我也是文档看的看晕了,方法有些多,我再加入频道前,音频模块是默认启用的,在加入前我enableVideo把视频模块也启用,然后调用mute方法不发送音视频流,再加入频道,这样也是可以的吗?

如果这样可以的话,问题就简单了;

按照上面的步骤启用音视频模块,mute停止发送,join频道,这个时候,远程用户收到该用户加入之后,他就是没有流的把,不会触发他的音视频状态改变的回调

如果是视频通话,视频模块也是默认启用的,不用enable一次了,这下更简单了

那就是确认在join频道之前调用muteLocalAudioStream(true)和muteLocalVideoStream(true)来禁止发送音视频流是可以的了?

没错

So glad to hear that, thank you very much.