关于显示本地视图和远端视图

您好,在官网文档中,用于显示本地视图和远程视图时,每次都需要用到VideoCanvas对象去渲染,VideoCanvas对象创建时需要传入SurfaceView,意味着只要有一个用户需要显示视图就得创建一个VideoCanvas对象吗,该对象创建之后,在什么地方会被回收处理呢,如果我的用户视图是列表形式,滑动、或者远程用户视频在屏幕上显示与不显示切换时,该对象需要手动维护销毁吗?是否会造成浪费内存

是的

需要自行维护的,在不再需要用到时,要销毁这个VideoCanvas对象

好的,多谢了,在销毁的时候,直接将VideoCanvas=null就可以吗,还是有对应的api呢

设为 null 就可以了。

好的,多谢您了;
还有个问题麻烦您一下,比如用户加入频道之后,默认不开启音视频,当需要给该开启音频权限时(此时该用户可以开启音频,但是目前还没打开),是调用enableAudio()吗?
本地用户调用enableAudio()/enableVideo()之后,他的状态是什么,对应的回调,调用该函数后,本地就开始采集并发送音/视频流了吗?

此时 app 有没有摄像头和麦克风设备的权限?如果没有的话,是无法在频道内动态获取权限的。

如果你一开始没有调用 enableAudio,那么也是有音频的,因为默认就是开启状态。
如果没有调用 enableVideo,那么就没有视频引擎了,不发视频,也看不到远端的视频。

建议参考 快速开始 文档,了解具体流程。

是这样的,我要在默认加入频道的时候,不开启音视频,就是不会发送音视频流,此时远程用户如果获取该用户对的状态时,他的音视频是关闭的,当我选择开启时,此时才去发布音视频流,这个流程是怎么做?
1、enableAudio是默认开启的,我要如何在加入频道之前关闭他?
2、enableAudio开启之后,可以通过muteLocalAudio来开关流,此时远程用户也会拿到对应的状态回调;

建议通过 muteLocalAudioStreammuteLocalVideoStream 来实现。

远端用户可以通过 onUserMuteVideo 回调和 onUserMuteAudio 回调来监听对应状态。

如果按照上述方法来关闭,在加入频道前,通过enableAudio/enableVideo方法来启用音视频模块,然后调用 muteLocalAudioStream/muteLocalVideoStream方法来关闭掉,再加入频道,然后在频道中只通过mute来控制是否发送音视频,是这样吧。

如果按照这样,在该用户进入频道后,另一个远程用户B进入频道,此时B用户需要获取当前频道内全部用户的状态,这个怎么直接获取B加入时,当前频道内除自己之外的所有用户状态信息

是的

这个一般是建议自己通过业务逻辑实现的。例如:可以通过 RTM 的用户属性来实现,当本地的 mute 状态变更时,调用 addOrUpdateLocalUserAttributes 添加或更新本地用户的 mute 相关属性,远端用户加入频道后,可以通过 getUserAttributesByKeys 方法获取指定用户指定属性名的属性,从而获知 mute 状态。

好的,非常感谢

不客气