音视频通信 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 参数只包含了音频设置,实际代码设置过程中,还可以包含其他模块功能的初始化设置。
「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。