耳返相关问题
K 歌场景大概率会用到耳返,如何开启耳返功能?
mTRTCCloud.getAudioEffectManager().enableVoiceEarMonitor(true)
开启耳返功能后没有效果?
由于蓝牙耳机的硬件延迟非常高,请尽量在用户界面上提示主播佩戴有线耳机。 同时也需要注意,并非所有的手机开启此特效后都能达到优秀的耳返效果,TRTC SDK 已经对部分耳返效果不佳的手机屏蔽了该特效。
耳返延迟过高?
请检查是否使用的是蓝牙耳机,由于蓝牙耳机的硬件延迟非常高,请尽量使用有线耳机。
另外,可以尝试通过实验性接口 setSystemAudioKitEnabled 开启硬件耳返来改善耳返延迟过高的问题。目前,对于华为和 Vivo设备,SDK 默认使用硬件耳返,其他设备默认使用软件耳返。
// 开启硬件耳返mTRTCCloud.callExperimentalAPI("{\\"api\\":\\"setSystemAudioKitEnabled\\", \\"params\\": {\\"enable\\":1}}");
NTP 校时问题
提醒:“NTP time sync finished, but result maybe inaccurate”?
NTP 校时成功,但偏差可能在30ms以上,反映客户端网络环境差,rtt 持续抖动。
提醒:“Error in AddressResolver: No address associated with hostname”?
NTP 校时失败,可能是当前网络环境下本地运营商 DNS 解析暂时异常,请稍后再试。
NTP 服务重试处理逻辑?
网络测速建议
在线 K 歌场景对用户的网络条件要求较高,特别是实时合唱,优质稳定的网络环境才能保障良好的 K 歌体验。因此,建议在用户进入房间前对该用户进行一次网络测速,对网络条件不符合要求的用户给予 UI 层的提醒,禁止其加入 K 歌房或参与合唱。
TRTC SDK 网络测速的发起:
TRTCCloudDef.TRTCSpeedTestParams speedTestParams = new TRTCCloudDef.TRTCSpeedTestParams();speedTestParams.sdkAppId = SDK_APP_ID;speedTestParams.userId = userId;speedTestParams.userSig = userSig;// 若实际带宽高于预期值,则测试结果即为预期值;若实际带宽低于预期值,则测试结果为实际带宽值speedTestParams.expectedDownBandwidth = 3000; // 预期的下行带宽,取值范围 10~5000 kbpsspeedTestParams.expectedUpBandwidth = 3000; // 预期的上行带宽,取值范围 10~5000 kbpsmTRTCCloud.startSpeedTest(speedTestParams);
注意:
同一时间只允许一项网速测试任务运行;
请在进入房间前进行网速测试,在房间中网速测试会影响正常的音视频传输效果,而且由于干扰过多,网速测试结果也不准确。
TRTC SDK 网络测速结果的回调:
@Overridepublic void onSpeedTestResult(TRTCCloudDef.TRTCSpeedTestResult result) {String tquality = "未定义";switch (result.quality) {case 0: tquality = "未定义";break;case 1: tquality = "当前网络非常好";break;case 2: tquality = "当前网络比较好";break;case 3: tquality = "当前网络一般";break;case 4: tquality = "当前网络较差";break;case 5: tquality = "当前网络很差";break;case 6: tquality = "当前网络不满足 TRTC 的最低要求";break;}if (result.success) {mTextTestResult.append("测速成功!" + "\\n");mTextTestResult.append("IP 地址:" + result.ip + "\\n");mTextTestResult.append("上行丢包率:" + result.upLostRate + "\\n");mTextTestResult.append("下行丢包率:" + result.downLostRate + "\\n");mTextTestResult.append("网络延迟:" + result.rtt + "ms\\n");mTextTestResult.append("下行带宽:" + result.availableDownBandwidth + "kbps\\n");mTextTestResult.append("上行带宽:" + result.availableUpBandwidth + "kbps\\n");mTextTestResult.append("网络质量:" + tquality + "\\n");} else {mTextTestResult.append("测速失败!" + "\\n");mTextTestResult.append("errMsg:" + result.errMsg + "\\n");}}
中途加入合唱
实时合唱方案理论上对合唱者数量没有限制,支持多人同时参与合唱,也支持中途加入合唱。
下面列出中途加入合唱的关键动作:
NTP 校时
开启合唱实验性接口
进入房间并上麦推流
接收合唱信令,获取伴奏资源及合唱约定时间
计算约定时间与当前时间差,预加载 seek 伴奏
开始参与合唱,并实时同步伴奏进度及歌词进度