Zego SDK深度适配安卓机型,实现超低延迟耳返

耳返功能又称耳机返听,耳机采集监听,在设备上插入耳机(普通耳机或蓝牙耳机),能从耳机侧听到麦克风采集的声音。

该功能可以使主播在K歌直播、K歌歌曲录制、个人清唱,朗诵等场景下实时监听自己的声音,让观众达到最佳的视听效果。

当前普通耳返功能存在的痛点

痛点一:Android 系统自带的耳返功能较为单一,不能满足用户多样化的需求。

扫描二维码关注公众号,回复: 6196222 查看本文章

痛点二:Android系统繁杂,型号多样,大部分手机设备厂商直接使用Android系统的接口,硬件支持程度的不同,导致耳返效果不同,一些机型耳返延迟(从系统采集到人声从耳机输出)较高,即构对市面多家Android机型做了系统的测试,发现一些机型的耳返数据甚至达到300ms以上,以下是部分Android机型耳返数据:

以上两个痛点,导致肉耳可辨别的延迟对耳返功能大打折扣,主播听到自己声音变调之后不能及时调整自己的音调,影响了观众的视听体验;在个人清唱、个人歌曲本地录制的时候,这种情况大几率需要歌唱者频繁地停下来重新录制变调部分。

另外,当歌唱者跟随伴唱一起唱的时候,会出现让歌唱者伴奏对不上的情况,导致录制出来的效果极差。

对于相同的K歌应用场景而言,iOS系统的表现比Andoid系统好很多,然而对App应用开发商来说,会有心无力,因为无论iOS系统或者Android系统都是调用系统接口进行音频的采集与输出,开发者从App层面优化的空间极为有限。

部分手机厂商对新机型耳返功能的特殊优化

针对以上提到的两大痛点,手机厂商也做了努力。我们发现,华为、oppo、vivo等厂商新发布的机型,针对耳返功能从系统底层做了特殊的优化。通过底层芯片级优化,提供低时延音频数据通路和混音耳返的音效。

以华为新机型为例,华为K歌耳返方案提供双流的底回环通路,录音数据到达HAL层之后,一部分数据送给上层APP,另外一部分数据送给HIFI模块,HIFI模块混音特效加持后直接送给用户,而APP只要实现伴奏的播放即可。

同时,在新平台对底层又进行深度优化,底层回环耳返延迟(见下图绿色箭头)可达到30ms以下。 

这样从系统底层的优化,从根本上解决了耳返的高延迟问题,让App应用开发者无须再为耳返延迟高的问题而在App层面进行复杂的算法优化,极大提升了k歌场景的用户体验,让Android设备成为专业的歌曲生成剪辑工具提供了有力支撑。

同时,为了对App应用开发者更友好,厂商在该方案也提供了一个界面提示用户进行相关的耳返和混音的设置,有了这样的设置,一般的App应用开发者只需很小的工作量就可以实现音频方面的混响功能的设置。

如下图所示,当在支持的手机厂商的机型上,成功使用此功能时,在APP上会提供一个悬浮按钮,点开后会有相应的设置界面。 

App开发者依然存在的问题

由于目前各厂商的耳返优化的功能都是使用其私有接口实现,各厂商的机型都需要通过调用一系列不同的私有接口来判断具体机型是否支持耳返优化的功能,这给开发者带来了一定的工作量。

App应用开发者需要与不同的手机厂商沟通对接,来实现该功能的效果。

另外,由于此耳返优化的功能目前并非通用功能,需要App应用开发者获取具体厂商系统的使用权限,即将自己应用的包名提交给具体的手机厂商,手机厂商会将App开发者的应用包名添加到其系统的白名单上,经过以上步骤,App应用才能在具体支持耳返优化功能的机型上使用此功能的能力。

Zego SDK 适配Android机型的耳返优化

针对当前普通耳返存在的痛点,以及厂商对最新机型优化后App开发者依然存在的问题,Zego Android SDK 在支持耳返延迟优化功能的机型上,针对App应用开发者需要对不同厂商的系统进行不同私有接口调用的问题进行了适配。

将开发者复杂的适配测试工作归结为使用Zego Android SDK时的一个接口的调用上,大大降低了开发者需要针对不同机型的适配工作量。

另外,Zego Android SDK针对APP开发商在对接过程中遇到的两大问题进行了逐一解决。

问题一 & Zego 解决方案

开发者在与厂商对接过程中,需要具备较为专业的 Android 系统底层音频采集的知识,这对App应用开发者来说增加了一定的学习成本。另一方面,App开发商也需要储备在音频领域具备一定专业水平的开发者,人才成本增加。

不仅如此,开发者在开发过程中会花费较多的时间在调试工作上,不符合如今互联网行业需求快速迭代的场景。

Zego拥有一批专门从事数字音频领域的技术专家,也有配套的专业技术支持团队7*24小时指导,开发者不需要了解音频相关知识,在Zego技术团队的指导下,在自己的应用实现接入低延迟耳返的功能,极大降低了开发商的人才投入成本。

问题二 & Zego 解决方案

由于 Android 系统机型众多,系统版本不一,Zego在适配低延迟耳返的功能中,发现部分机型存在鱼和熊掌不可兼得的情况,一种适配方案无法满足所有机型可能出现的异常情况,例如耳返完全变声的问题。

该问题产生的原因是在应用层面上,对于部分本身就不支持的机型没有具体的系统接口来获取采集的音频声道数据,导致在优化过程中,出现音频数据采集异常的情况。

在此问题基础上,与其他厂商要求开发者自己来维护无法兼容的机型黑名单不同,Zego 从开发者接入友好、开发过程更便捷的角度出发,由 Zego 侧来维护一份黑名单机型列表,从而避免了开发者需要更复杂的逻辑来处理机型难以兼容的问题。

如何集成 Zego Android SDK适配系统耳返优化功能

第一步:集成 Zego Android SDK

集成SDK的操作极为简单,只需按“即构官网开发者中心”的集成文档步骤集成即可。

第二步:调用接口传入适配参数

调用SDK的 ZegoLiveRoom 类的静态方法,传入适配参数:

ZegoLiveRoom.setConfig(“adapt_to_system_karaoke=true”);

第三步:初始化SDK并登陆房间

调用ZegoLiveRoom实例的initSDK的方法与loginRoom方法来初始化SDK与登陆房间:

g_ZegoApi.initSDK(appID, appSignature, new IZegoInitSDKCompletionCallback();
…
g_ZegoApi.loginRoom(roomID, role, new IZegoLoginCompletionCallback());

Zego为了对开发者更友好,增加了IM的功能,所以封装了Room的概念。对于SDK来说,需要登陆房间之后才能使用IM,此外,登陆房间也是使用Zego音视频服务的前置条件。

第四步:启动推流或本地预览来启动音频的采集

g_ZegoApi.startPreview();
或
g_ZegoApi.startPublishing(streamID, title, flag);

经过以上四步,通过对Zego SDK四行代码的简单调用,即可实现对应系统级的耳返优化功能,解决了目前安卓耳返秒级的高延迟、差体验的问题,极大缩减了耳返性能优化的人力成本和时间成本,简化了产品实现流程,为用户提供超低延迟耳返的极致体验。


更多音视频技术内容,欢迎访问:即构官网

猜你喜欢

转载自blog.csdn.net/zego_0616/article/details/89146621