如果开发者在使用ARTC过程中需要追求极致的体验,可以根据您的使用场景,通过一些方法来进一步降低使用ARTC的耗时。通过阅读本文,您可以了解减少耗时的方法。
配置合理的自动订阅和自动推流
如果您的场景中,入会后会默认推流,建议您采用自动推流模式。
如果您的场景中,入会后默认会订阅频道中的人,建议您采用自动订阅的模式。自动订阅模式在接收到远端用户回调之后,不需要再手动订阅,能更加节省时间。
详情参考自动推拉流功能文档。
降低入会及推拉流的网络耗时
SDK实例尽量前置创建,这样SDK内部会提前初始化一些网络配置、DNS解析等。
使用场景举例:app安装后首次使用SDK、长时间未使用SDK等场景。
使用方法举例:在请求token的时候先创建SDK实例,然后在token获取后再调用入会API。
代码示例(android为例)
/** * @brief 获取AliRtcEngine实例 * @param context Android 上下文 * @details 该方法为同步调用,以单例的形式提供对象创建。 * @note 同一时间只会存在一个主实例。 * @note 创建子实例,请参考使用{@link #createChannel} */ public static AliRtcEngineImpl getInstance(Context context)
如果在极端的带宽受限的场景下,可以尽可能降低带宽消耗,避免出现网络拥塞。
使用场景举例:app运行在蓝牙组建的局域网等一些带宽很小的场景。
特别说明:引擎初始化时会消耗大约300KB的网络流量,可以通过以下方式关闭此网络消耗;关闭后会使用系统的DNS解析。
代码示例(android为例)
// 第一步:构造extras字段 JsonObject jsonObject = new JsonObject(); jsonObject.addProperty("user_specified_force_local_dns", "TRUE"); String jsonExtras = jsonObject.toString(); // 第二步:创建引擎 mAliRtcEngine = AliRtcEngine.getInstance(getApplicationContext(), extras);
场景中存在频繁切换频道或者频繁入离会
维护一个SDK的示例,避免频繁的创建和销毁SDK增加耗时。可以通过一个SDK实例的入离会来达到切换频道的效果。
可以根据需要,提前打开音频设备,节省每次入离会的耗时。例如:在语音直播间的场景,可以在创建SDK后调用一次startAudioPlayer接口提前打开播放设备。在销毁SDK前调用stopAudioPlayer接口关闭播放设备。中间切换频道和入离会均无需再额外调用。startAudioPlayer和stopAudioPlayer接口如下所示:
startAudioPlayer:开启音频播放。(注意:您可以控制提前打开音频播放,如果不设置,SDK会在订阅成功的时候打开音频播放。)
- (void)startAudioPlayer;
stopAudioPlayer:关闭音频播放。
- (void)stopAudioPlayer;
音频采集设备也可以根据自身的场景决定是否提前打开。
startAudioCapture:开启音频采集。(注意:您可以控制提前打开音频采集,如果不设置,SDK会在开始推流的时候打开音频采集。)
- (void)startAudioCapture;
stopAudioCapture:关闭音频采集。
- (void)stopAudioCapture;