Skip to content

Ear_Mirror

buliaoyin edited this page Jul 26, 2017 · 24 revisions

功能说明

耳返是指:

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

该功能可以帮助主播在唱歌等场景下实时监听自己的声音。 一般该功能会跟背景音乐的混音功能一起使用。

低延迟耳返

Android系统下,耳返延迟一般都比较大,基本都在200ms以上,这么高的延迟对耳返的实用性大打折扣。

  1. 耳返的实时性比较差,不利于主播及时做出调整;
  2. 配合背景音乐混音使用时,播放端会出现人声明显落后伴奏的情况。

从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

注意事项

  1. 因为Android机型繁杂,对低延迟特性的支持程度不一,某些机型在开启低延迟特性后甚至会出现声音不正常的现象(如三星S6)。
    因此建议有需求的开发者将该特性作为一个可选项,提示终端用户自行测试耳返效果,然后决定是否开启;
    也可以建立起开启低延迟效果较好的机型的白名单,来确认是否开启。

  2. 开启低延迟特性后,耳返延迟会受到实现在java层的音频filter的影响,也就是说,插入一个不是SDK内部实现的音频filter时,会增加耳返的延迟,这个增加值大概在20-60ms.
    后续SDK内部会集成更加丰富的音频filter,因此有低延迟需求的开发者,需要尽量避免使用外部filter.

  3. 开启低延迟特性后,如果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);
Clone this wiki locally