产品百科 |使用阿里云 RTC SDK 耗时高怎么办?

简介: 本文为您介绍在使用 SDK 过程中减少耗时的方法。

配置合理的自动订阅和自动推流

以下建议可以为您减少耗时:

  • 如果您的场景中,入会后会默认推流,建议您采用自动推流模式。
  • 如果您的场景中,入会后默认会订阅频道中的人,建议您采用自动订阅的模式。自动订阅模式在接收到远端用户回调之后,不需要再手动订阅,能更加节省时间。

通过以下接口设置自动订阅和自动推流:

setAutoPublish:设置是否自动发布,是否自动订阅。默认是自动发布和订阅,必须在加入频道之前设置。

- (int)setAutoPublish:(BOOL)autoPub withAutoSubscribe:(BOOL)autoSub;

合理的使用 publish 和 subscribe 接口

以下建议可以为您减少耗时:

  • publish 和 subscribe 接口用于手动推流、手动订阅、以及会议中推流和订阅配置的变更。
  • publish 接口需要配合 configLocalCameraPublish、configLocalScreenPublish、configLocalAudioPublish 接口使用。
  • subscribe 接口需要配合 configRemoteCameraTrack、configRemoteScreenTrack、configRemoteAudio 接口使用。
  • 根据自身的需要,合理使用大小流。目前默认推小流,如果无需小流,建议关闭。
  • 需要注意:每次 config 完之后调用一次 publish 接口或者 subscribe 接口就可以,无需重复调用。如:当前相机流(大流)和音频流需要调用 publish 接口,而屏幕共享流不需要调用。
  • 正确的调用方式如下:
[self.engine configLocalAudioPublish:YES];
[self.engine configLocalCameraPublish:YES];
[self.engine configLocalScreenPublish:NO];
[self.engine configLocalSimulcast:NO forTrack:AliRtcVideoTrackCamera];
[self.engine publish:^(int err) {
    // 相关UI操作。
}];
  • 错误的调用方式如下:
[self.engine configLocalAudioPublish:YES];
[self.engine publish:^(int err) {
    // 相关UI操作。
}]; 
[self.engine configLocalCameraPublish:YES];
[self.engine publish:^(int err) {
    // 相关UI操作。
}]; 
[self.engine configLocalScreenPublish:NO];
[self.engine publish:^(int err) {
    // 相关UI操作。
}]; 
[self.engine configLocalSimulcast:NO forTrack:AliRtcVideoTrackCamera];
[self.engine publish:^(int err) {
    // 相关UI操作。
}];

场景中存在频繁切换频道或者频繁入离会

以下建议可以为您减少耗时:

  • 维护一个 SDK 的示例,避免频繁的创建和销毁 sdk 带来的耗时。通过一个 SDK 实例的入离会来达到切换频道的效果。
  • 可以根据需要,提前打开音频设备,节省每次入离会的耗时。比如:在语音直播间的场景,可以在创建 SDK 后调用一次 startAudioPlayer 接口提前打开播放设备。在销毁 sdk 前调用 stopAudioPlayer 接口关闭播放设备。中间切换频道和入离会均无需再额外调用。
    startAudioPlayer:开启音频播放。您可以控制提前打开音频播放,如果不设置,SDK 会在订阅成功的时候打开音频播放。
- (void)startAudioPlayer;
  • stopAudioPlayer:关闭音频播放。您可以控制关闭音频播放。
- (void)stopAudioPlayer;
  • 音频采集设备也可以根据自身的场景决定是否提前打开。startAudioCapture:开启音频采集。您可以控制提前打开音频采集,如果不设置,SDK 会在开始推流的时候打开音频采集。
- (void)startAudioCapture;
  • stopAudioCapture:关闭音频采集。您可以控制关闭音频采集。
- (void)stopAudioCapture;


「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。

image.png


相关文章
|
18天前
|
弹性计算 运维 Serverless
Serverless 应用引擎产品使用之在阿里函数计算中,使用阿里云API或SDK从函数计算调用ECS实例的服务如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
18天前
|
Java 开发工具
阿里云灵积平台Java SDK调用教程
开通阿里云灵积服务并创建API-KEY,添加Java依赖`dashscope-sdk-java`版本2.11.0。示例代码展示如何使用SDK进行多模态对话,调用`MultiModalConversation`进行交互,并打印结果。测试结果显示输出对一张图片的描述。参考链接提供通义千问VL快速入门指南。
352 0
|
18天前
|
存储 弹性计算 安全
阿里云活动内云服务器没有数据盘怎么办?购买后如何购买并挂载云盘?
在我们通过阿里云的活动来购买云服务器的时候,一般默认情况下只有系统盘,是没有数据盘的,但是很多用户处于实际使用需求和安全等方面的需求,通常都需要在购买之后单独再购买一块云盘作为数据盘挂载到云服务器上,本文以图文形式为大家展示阿里云活动内云服务器购买流程以及购买后如何购买并挂载云盘,适合新手用户参考。
阿里云活动内云服务器没有数据盘怎么办?购买后如何购买并挂载云盘?
|
18天前
|
人工智能 Java 开发工具
阿里云视觉智能开放平台提供了多种SDK供开发者使用
阿里云视觉智能开放平台提供了多种SDK供开发者使用
37 6
|
18天前
|
对象存储
阿里云oss-cloud-sdk-springboot3兼容问题
阿里云oss-cloud-sdk-springboot3兼容问题
104 0
|
18天前
|
JavaScript Java Maven
云效产品使用常见问题之android sdk 构建出aar后,上传到私有maven仓库失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
18天前
|
安全 开发工具 Android开发
几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK
几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK
541 0
|
8月前
|
API 开发工具 Android开发
解决 Android App 上架 Google play后 ,签名变更,第三方sdk无法登录
解决 Android App 上架 Google play后 ,签名变更,第三方sdk无法登录
162 0
|
16天前
|
Java 开发工具 Maven
Android SDK开发的那些事(1),已整理成文档
Android SDK开发的那些事(1),已整理成文档