使用ARTC过程中如何优化耗时

如果开发者在使用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接口关闭播放设备。中间切换频道和入离会均无需再额外调用。startAudioPlayerstopAudioPlayer接口如下所示:

    • startAudioPlayer:开启音频播放。(注意:您可以控制提前打开音频播放,如果不设置,SDK会在订阅成功的时候打开音频播放。)

      - (void)startAudioPlayer;
    • stopAudioPlayer:关闭音频播放。

      - (void)stopAudioPlayer;
  • 音频采集设备也可以根据自身的场景决定是否提前打开。

    • startAudioCapture:开启音频采集。(注意:您可以控制提前打开音频采集,如果不设置,SDK会在开始推流的时候打开音频采集。)

      - (void)startAudioCapture;
    • stopAudioCapture:关闭音频采集。

      - (void)stopAudioCapture;