耳返相关问题
K 歌场景大概率会用到耳返,如何开启耳返功能?
[[trtcCloud getAudioEffectManager] enableVoiceEarMonitor:YES];
开启耳返功能后没有效果?
由于蓝牙耳机的硬件延迟非常高,请尽量在用户界面上提示主播佩戴有线耳机。 同时也需要注意,并非所有的手机开启此特效后都能达到优秀的耳返效果,TRTC SDK 已经对部分耳返效果不佳的手机屏蔽了该特效。
耳返延迟过高?
请检查是否使用的是蓝牙耳机,由于蓝牙耳机的硬件延迟非常高,请尽量使用有线耳机。
另外,可以尝试通过实验性接口 setSystemAudioKitEnabled 开启硬件耳返来改善耳返延迟过高的问题。目前,对于华为和 Vivo设备,SDK 默认使用硬件耳返,其他设备默认使用软件耳返。
// 开启硬件耳返NSDictionary *jsonDic = @{@"api": @"setSystemAudioKitEnabled",@"params": @{@"enable": @(1)}};NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDic options:NSJSONWritingPrettyPrinted error:nil];NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];[trtcCloud callExperimentalAPI:jsonString];
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 网络测速的发起:
TRTCSpeedTestParams *speedTestParams = [[TRTCSpeedTestParams alloc] init];speedTestParams.sdkAppId = SDK_APP_ID;speedTestParams.userId = userId;speedTestParams.userSig = userSig;// 若实际带宽高于预期值,则测试结果即为预期值;若实际带宽低于预期值,则测试结果为实际带宽值speedTestParams.expectedDownBandwidth = 3000; // 预期的下行带宽,取值范围 10~5000 kbpsspeedTestParams.expectedUpBandwidth = 3000; // 预期的上行带宽,取值范围 10~5000 kbps[trtcCloud startSpeedTest:speedTestParams];
注意:
同一时间只允许一项网速测试任务运行;
请在进入房间前进行网速测试,在房间中网速测试会影响正常的音视频传输效果,而且由于干扰过多,网速测试结果也不准确。
TRTC SDK 网络测速结果的回调:
- (void)onSpeedTestResult:(TRTCSpeedTestResult *)result {NSString *tquality = @"未定义";switch (result.quality) {case TRTCQuality_Unknown:tquality = @"未定义";break;case TRTCQuality_Excellent:tquality = @"当前网络非常好";break;case TRTCQuality_Good:tquality = @"当前网络比较好";break;case TRTCQuality_Poor:tquality = @"当前网络一般";break;case TRTCQuality_Bad:tquality = @"当前网络较差";break;case TRTCQuality_Vbad:tquality = @"当前网络很差";break;case TRTCQuality_Down:tquality = @"当前网络不满足 TRTC 的最低要求";break;default:break;}if (result.success) {[mTextTestResult addObject:@"测速成功!\\n"];[mTextTestResult addObject:[NSString stringWithFormat:@"IP 地址:%@ \\n", result.ip]];[mTextTestResult addObject:[NSString stringWithFormat:@"上行丢包率:%f \\n", result.upLostRate]];[mTextTestResult addObject:[NSString stringWithFormat:@"下行丢包率:%f \\n", result.downLostRate]];[mTextTestResult addObject:[NSString stringWithFormat:@"网络延迟:%u ms \\n", result.rtt]];[mTextTestResult addObject:[NSString stringWithFormat:@"下行带宽:%ld kbps \\n", (long)result.availableDownBandwidth]];[mTextTestResult addObject:[NSString stringWithFormat:@"上行带宽:%ld kbps \\n", result.availableUpBandwidth]];[mTextTestResult addObject:[NSString stringWithFormat:@"下行带宽:%@ \\n", tquality]];} else {[mTextTestResult addObject:@"测速成功!\\n"];[mTextTestResult addObject:[NSString stringWithFormat:@"errMsg:%@ \\n", result.errMsg]];}}
中途加入合唱
实时合唱方案理论上对合唱者数量没有限制,支持多人同时参与合唱,也支持中途加入合唱。
下面列出中途加入合唱的关键动作:
NTP 校时
开启合唱实验性接口
进入房间并上麦推流
接收合唱信令,获取伴奏资源及合唱约定时间
计算约定时间与当前时间差,预加载 seek 伴奏
开始参与合唱,并实时同步伴奏进度及歌词进度