-
Notifications
You must be signed in to change notification settings - Fork 209
Ear_Mirror
耳返是指:
在设备上插入耳机(普通耳机或蓝牙耳机),能从耳机测听到麦克风采集的声音。
该功能可以帮助主播在唱歌等场景下实时监听自己的声音。 一般该功能会跟背景音乐的混音功能一起使用。
Android系统下,耳返延迟一般都比较大,基本都在200ms以上,这么高的延迟对耳返的实用性大打折扣。
- 耳返的实时性比较差,不利于主播及时做出调整;
- 配合背景音乐混音使用时,播放端会出现人声明显落后伴奏的情况。
从4.2.0版本开始,SDK引入了低延迟音频特性,开启后在支持该特性机型上,耳返延迟会有非常明显的优化。
部分机型的环路延迟测试数据:
即声音从手机外放播放出来到手机mic完成对该段声音的采集所花的时间(使用耳机时,该值会更小一些)。
机型 | v4.1.5版本 | v4.2.0不开启低延迟特性 | v4.2.0开启低延迟特性 |
---|---|---|---|
Google Pixel | - | 80ms(使用耳机40ms) | 36ms(使用耳机23ms) |
小米Note2 | 200ms | 80ms(使用耳机40ms) | 36ms(使用耳机23ms) |
小米5 | 240ms | 80ms(使用耳机40ms) | 39ms(使用耳机27ms) |
Oppo R9s Plus | - | 80ms(使用耳机80ms) | 69ms(使用耳机36ms) |
Nexus5 | 159ms | 79ms | 59ms |
360 | 210ms | 90ms | 70ms |
小米NOTE LTE | 240ms | 79ms | 99ms |
小米4 LTE | 240ms | 79ms | 99ms |
乐视X800+ | 329ms | 80ms | 100ms |
魅族pro5 | 298ms | 298ms | 320ms |
-
因为Android机型繁杂,对低延迟特性的支持程度不一,某些机型在开启低延迟特性后甚至会出现声音不正常的现象(如三星S6)。
因此建议有需求的开发者将该特性作为一个可选项,提示终端用户自行测试耳返效果,然后决定是否开启;
也可以建立起开启低延迟效果较好的机型的白名单,来确认是否开启。 -
开启低延迟特性后,耳返延迟会受到实现在java层的音频filter的影响,也就是说,插入一个不是SDK内部实现的音频filter时,会增加耳返的延迟,这个增加值大概在20-60ms.
后续SDK内部会集成更加丰富的音频filter,因此有低延迟需求的开发者,需要尽量避免使用外部filter. -
开启低延迟特性后,如果app切到后台,某些机型如nexus5, 小米note2,可能会出现bgm卡顿的情况, 这个是由于App切到后台,系统降频、降低App优先级引起的,开发者可以在切后台时暂时禁用低延迟特性, App切回前台后再开启;或者App切到后台时,开启foreground service来规避该问题。
- 开启和关闭耳返:setEnableAudioPreview(boolean)
- v4.1.5及之前版本需要开发者自行判断是否已插入耳机,需要在耳机插入后再开启,并在耳机拔出后关闭,否则会出现自激;
- v4.2.0及以上版本,SDK内部做了处理,开启耳返后,耳返只会在插入耳机后生效,拔出耳机后SDK会自行停止,直到下次插入耳机;
- 开启和关闭音频低延迟特性(默认关闭):setEnableAudioLowDelay(boolean)
混音功能即将背景音乐和mic采集的声音经过mix生成一路音频。
v4.2.0以前版本:
默认开启耳返后,会将背景音乐mute,若不开启背景音乐的混音,播放背景音乐,开启耳返时是听不到背景音乐的,用户需要手动设置。
开启耳返的情况下,耳返听到的声音效果跟推流出去后播放端听到的效果完全一致,不开启背景音乐混音,打开耳返的情况下推流端也就听不到背景音乐。
v4.2.0及以后版本:
耳返只与mic采集模块关联,开启耳返不会对将背景音乐mute,是否开启混音不影响耳返能否听到背景音乐。
开启和关闭混音功能:setEnableAudioMix(boolean)
mStreamer.setEnableAudioMix(true);
mStreamer.setEnableAudioMix(false);