iOS

最近更新时间:2023-05-25 15:25:47

我的收藏

耳返相关问题

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 kbps
speedTestParams.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 伴奏
开始参与合唱,并实时同步伴奏进度及歌词进度

以上关键动作涉及的具体实现流程及代码实现详见歌曲同步歌词同步人声同步文档。