RTC Engine
  • 产品概述
  • Web
    • 跑通 Demo
    • SDK 快速启动
    • 基础功能
      • 屏幕分享
      • 直播
      • 媒体设备
      • 音量
      • 设置编码配置文件
      • 检测网络质量
      • 检测能力
    • 高级功能
      • 启用 AI 降噪
      • 启用混音
      • 启用水印
      • Enable Virtual Background
      • 启用美颜和特效
      • 数据消息
      • 自定义采集和渲染
    • 接口列表
    • 发布说明
    • 支持平台
    • Web 常见问题
      • 优化多人视频通话
      • 处理自动播放受限
      • 应对防火墙限制
      • 其他
  • Android
    • Run Sample Code
    • 集成
      • 2. 导入 SDK
      • 3. 进入房间
      • 4. 订阅音视频流
      • 5. 发布音视频流
      • 6. 退出房间
      • 7. 检测网络质量
      • 8. 开启屏幕共享
      • 9. 设置视频质量
      • 10. 旋转视频
    • 测试网络质量
    • 自定义采集和渲染
    • 自定义音频采集和播放
    • 客户端API
      • 产品概述
      • TRTCCloud
      • TRTCStatistics
      • TRTCCloudListener
      • TXAudioEffectManager
      • TXBeautyManager
      • TXDeviceManager
      • 类型定义
      • 废弃接口
      • 错误码
    • 解决方案
      • 实时合唱 (TUIKaraoke)
        • 快速集成
        • 实施步骤
        • 歌曲同步
        • 歌词同步
        • 语音同步
        • 混流解决方案
        • TRTCKaraoke 相关接口
        • 常见问题
    • 发布说明
  • iOS
    • Run Sample Code
    • 集成
      • 2. 导入 SDK
      • 3. 进入房间
      • 4. 订阅音视频流
      • 5. 发布音视频流
      • 6. 退出房间
      • 7. 检测网络质量
      • 8. 开启屏幕共享
      • 9. 设置视频质量
      • 10. 旋转视频
    • 测试网络质量
    • 自定义采集和渲染
    • 自定义音频采集和播放
    • 客户端API
      • 产品概述
      • TRTCCloud
      • TRTCCloudDelegate
      • TRTCStatistics
      • TXAudioEffectManager
      • TXBeautyManager
      • TXDeviceManager
      • 类型定义
      • 废弃接口
      • ErrorCode
    • 解决方案
      • 快速集成
      • 实施步骤
      • 歌曲同步
      • 歌词同步
      • 语音同步
      • 混流解决方案
      • TRTCKaraoke 相关接口
      • 常见问题
    • 发布说明
  • macOS
    • Run Sample Code
    • 集成
      • 2. 导入 SDK
      • 3. 进入房间
      • 4. 订阅音视频流
      • 5. 发布音视频流
      • 6. 退出房间
      • 7. 检测网络质量
      • 8. 开启屏幕共享
      • 9. 共享电脑声音
      • 10. 设置视频质量
      • 11. 旋转视频
    • 测试硬件设备
    • 测试网络质量
    • 自定义采集和渲染
    • 自定义音频采集和播放
    • 客户端API
      • 产品概述
      • TRTCCloud
      • TRTCCloudDelegate
      • TRTCStatistics
      • TXAudioEffectManager
      • TXBeautyManager
      • TXDeviceManager
      • 类型定义
      • 废弃接口
      • ErrorCode
      • 发布说明
    • 发布说明
  • Windows
    • Run Sample Code
    • 集成
      • 2. 导入 SDK
      • 3. 进入房间
      • 4. 订阅音视频流
      • 5. 发布音视频流
      • 6. 退出房间
      • 7. 检测网络质量
      • 8. 开启屏幕共享
      • 9. 设置视频质量
      • 10. 旋转视频
    • 测试硬件设备
    • 测试网络质量
    • 自定义采集和渲染
    • 自定义音频采集和播放
    • 客户端API
      • 产品概述
      • ITRTCCloud
      • ITRTCStatistics
      • TRTCCloudCallback
      • ITXAudioEffectManager
      • ITXDeviceManager
      • 类型定义
      • 废弃接口
      • 错误码
    • 发布说明
  • Electron
    • 集成
      • 1. 接口示例
      • 2. 导入 SDK
      • 3. 进入房间
      • 4. 订阅音视频流
      • 5. 发布音视频流
      • 6. 退出房间
      • 7. 检测网络质量
      • 8. 开启屏幕共享
      • 9. 共享电脑声音
      • 10. 设置视频质量
      • 11. 旋转视频
    • 客户端API
      • 产品概述
      • 错误码
  • Flutter
    • 集成
      • 1. 接口示例
      • 2. 导入 SDK
      • 3. 进入房间
      • 4. 订阅音视频流
      • 5. 发布音视频流
      • 6. 退出房间
      • 7. 检测网络质量
      • 8. 开启屏幕共享
      • 9. 共享电脑声音
      • 10. 设置视频质量
      • 11. 旋转视频
    • 客户端API
      • 产品概述
      • 错误码
  • Unity
    • 集成
      • 1. 接口示例
      • 2. 导入 SDK
    • 客户端API
      • 产品概述
      • 错误码
  • QT
    • 集成
      • 1. 导入 SDK
  • 产品概述
    • 产品概述
  • 概念
  • 产品特性
  • 性能统计
  • 价格中心
    • 免费时长
    • RTC-Engine 套餐
    • 订阅套餐时长计费说明
    • 现收现付
      • 音视频时长计费说明
      • 云端录制计费说明
      • 混流转码与旁路转推计费说明
  • 常见问题
    • 入门常见问题
    • 迁移指南
      • Twilio Video 到 TRTC 的迁移
      • 计费
      • 产品特性
      • UserSig
      • 防火墙限制
      • 如何缩减安装包
      • TRTCCalling Web 相关
      • 音视频质量
      • 其他
RTC Engine

常见问题

耳返相关问题

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

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