产品百科 | Ali RTC SDK 如何设置音频属性

简介: 本文将为您介绍如何设置音质模式、音频属性。阅读本文后,你可以根据实际业务需求设置音频属性,以达到更好的产品体验。

音视频通信 RTC(Real-Time Communication)是阿里云覆盖全球的实时音视频开发平台,依托核心音视频编解码、信道传输、网络调度技术,提供高可用、高品质、超低延时的音视频通信服务,让用户快速搭建多端实时应用,适用于在线教育、视频会议、互动娱乐、音视频社交等场景。


产品链接:https://www.aliyun.com/product/rtc


本文将为您介绍如何设置音质模式、音频属性。阅读本文后,你可以根据实际业务需求设置音频属性,以达到更好的产品体验。

功能简介

AliRTC SDK 提供了三种音质模式和四种场景供您选择,您可以针对自己的产品场景设置音频属性。比如,在语音电台场景下需要高品质的音质,您可以选择高音质模式配合音乐场景实现高音质的需求。

音频 Profile 规格

音频 Profile 关键字 名称 声道数 / 采样率 / 编码码率
ENGINE_LOW_QUALITY_MODE 低功耗音质模式 1/8kHz/12kbps
ENGINE_BASIC_QUALITY_MODE 标准音质模式(默认模式) 1/16kHz/24kbps
ENGINE_HIGH_QUALITY_MODE 高音质模式 1/48kHz/48kbps

音频 scene 规格

场景关键字 名称 特性
SCENE_DEFAULT_MODE 默认场景 推荐一般的音视频通信场景使用。
SCENE_EDUCATION_MODE 教育场景 优先保证音频连续性与稳定性。
SCENE_MEDIA_MODE 媒体场景 保真人声与音乐音质,推荐连麦直播间使用。
SCENE_MUSIC_MODE 音乐场景 高保真音乐音质,推荐乐器教学等对音乐音质有要求的场景使用。

参数搭配推荐

说明 您可以根据推荐进行参数搭配,也可以根据自身实际业务场景进行自定义搭配。例如社交场景中,有背景音乐的音质需求,scene 可以选择音乐场景,如果没有背景音乐需求,scene 场景可以选择默认背景。

业务场景 profile 设置 scene 设置 特性
音视频通话 标准音质模式(ENGINE_BASIC_QUALITY_MODE) 默认场景(SCENE_DEFAULT_MODE) 在保证高清音质的同时,保证传输稳定流畅。
音频社交场景 高音质模式(ENGINE_HIGH_QUALITY_MODE) 音乐场景(SCENE_MUSIC_MODE) 高保真音乐音质,乐器教学等对音乐音质有要求的场景推荐使用。
音频社交场景 2 高音质模式(ENGINE_HIGH_QUALITY_MODE) 默认场景(SCENE_DEFAULT_MODE) 高保真人声,没有背景音乐需求。
教育场景 标准音质模式(ENGINE_BASIC_QUALITY_MODE) 教育场景(SCENE_EDUCATION_MODE) 优先保证音频连续性与稳定性,同时保证音质高清。

实现方法

Android、iOS、Mac 和 Windows SDK 平台关于音频的 profile 设置与 scene 设置都是通过创建 AliRTCSDK 时传递的 extras 参数来设置,extras 参数形式在 SDK 平台是统一的(json 字符串),如下所示:

{"user_specified_ engine_mode" : "profile设置关键字","user_specified_scene_mode" :"scene场景关键字"}

示例代码

android

JSONObject jsonObject = new JSONObject();
//配置音质模式
try {
   jsonObject.put("user_specified_engine_mode", "ENGINE_BASIC_QUALITY_MODE");
   //配置场景模式
   jsonObject.put("user_specified_scene_mode", "SCENE_DEFAULT_MODE");
   AliRtcEngine aliRtcEngine = AliRtcEngine.getInstance(getApplicationContext(),jsonObject);
} catch (JSONException e) {
   e.printStackTrace();
}

iOS

@property (nonatomic, strong) AliRtcEngine *engine;
NSMutableDictionary *extraDic = [[NSMutableDictionary alloc] init];
[extraDic setValue:@"ENGINE_BASIC_QUALITY_MODE" forKey:@"user_specified_engine_mode"];
[extraDic setValue:@"SCENE_EDUCATION_MODE" forKey:@"user_specified_scene_mode"];
NSError *error = nil;
NSData *json = [NSJSONSerialization dataWithJSONObject:extraDic options:NSJSONWritingPrettyPrinted error:&error];
NSString *string = [[NSString alloc] initWithData:json encoding:NSUTF8StringEncoding];
_engine = [AliRtcEngine sharedInstance:self extras: string];

Mac

@property (nonatomic, strong) AliRtcEngine *engine;
NSMutableDictionary *extraDic = [[NSMutableDictionary alloc] init];
[extraDic setValue:@"ENGINE_BASIC_QUALITY_MODE" forKey:@"user_specified_engine_mode"];
[extraDic setValue:@"SCENE_EDUCATION_MODE" forKey:@"user_specified_scene_mode"];
NSError *error = nil;
NSData *json = [NSJSONSerialization dataWithJSONObject:extraDic options:NSJSONWritingPrettyPrinted error:&error];
NSString *string = [[NSString alloc] initWithData:json encoding:NSUTF8StringEncoding];
_engine = [AliRtcEngine sharedInstance:self extras: string];

Windows

std::string GetEngAndsceneMode(const std::string strEngMode, const std::string strSceneMode) 
{
  std::string strParam = "{";
  if (strEngMode == "default") 
  {
    strParam += "\"user_specified_engine_mode\" : \"ENGINE_BASIC_QUALITY_MODE\",";
  }
  if (strSceneMode == "default")
  {
    strParam += "\"user_specified_scene_mode\" : \"SCENE_DEFAULT_MODE\",";
  }
  strParam += "}";
  return strParam;
}
AliRtcEventListener* rtcEventlister;
std::string strEngMode = "default";
std::string strSceneMode = "default";
AliRtcEngine *mpEngine = AliRtcEngine::sharedInstance(rtcEventlister, GetEngAndsceneMode(strEngMode, strSceneMode).c_str());

注意 示例代码中 SDK 的初始化 extras 参数只包含了音频设置,实际代码设置过程中,还可以包含其他模块功能的初始化设置。


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

image.png

相关文章
|
文字识别 算法 API
视觉智能开放平台产品使用合集之支持的离线SDK有哪些
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
142 2
视觉智能开放平台产品使用合集之支持的离线SDK有哪些
|
运维 分布式计算 DataWorks
DataWorks产品使用合集之sdk的下载地址在哪里
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
存储 监控 API
视觉智能开放平台产品使用合集之人脸识别服务端的离线SDK是什么
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
117 0
|
JSON Java API
【Azure API 管理】通过Java APIM SDK创建一个新的API,如何为Reqeust的Representation设置一个内容示例(Sample)?
【Azure API 管理】通过Java APIM SDK创建一个新的API,如何为Reqeust的Representation设置一个内容示例(Sample)?
|
固态存储 Java 网络安全
【Azure Developer】使用Java SDK代码创建Azure VM (包含设置NSG,及添加数据磁盘SSD)
【Azure Developer】使用Java SDK代码创建Azure VM (包含设置NSG,及添加数据磁盘SSD)
130 0
|
缓存 Java API
【Azure 服务总线】详解Azure Service Bus SDK中接收消息时设置的maxConcurrentCalls,prefetchCount参数
【Azure 服务总线】详解Azure Service Bus SDK中接收消息时设置的maxConcurrentCalls,prefetchCount参数
162 0
|
7月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
416 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
JavaScript 前端开发 Java
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
365 0
|
11月前
|
程序员 开发工具 Android开发
Android|使用阿里云推流 SDK 实现双路推流不同画面
本文记录了一种使用没有原生支持多路推流的阿里云推流 Android SDK,实现同时推送两路不同画面的流的方法。
201 7
|
10月前
|
Java Linux API
Android SDK
【10月更文挑战第21天】
270 1