一、集成与环境检测
Web 端 v5 版本和 v4 版本有什么区别?
TRTC Web SDK v5 版本是 Web 端全新升级版,提供扁平化接口、大幅简化 API、降低您的接入成本。在多人音视频场景下,具有更好的性能表现及弱网抗性。相关资料可参见:v5 SDK 文档、npm 地址、发布日志。
注意:
2.x、3.x 版本的 SDK,在 Chrome 96+ 版本无法正常通话该如何处理?
最新版本的 Chrome 96 废弃了 Plan-B,将会导致 TRTC 实时音视频老版本的(2.x, 3.x) Web SDK 会出现无法通话的情况,请您尽快将 Web SDK 升级至我们的最新版本(5.x)。5.x 版本 SDK 的接口与老版本(2.x, 3.x)不兼容,请参考 快速集成(Web) 升级接入 5.x 版本 SDK。
Web 端 SDK 支持哪些浏览器?
TRTC Web SDK 对浏览器的详细支持度,请参见 TRTC Web SDK 对浏览器支持情况。对于上述没有列出的环境,您可以在当前浏览器打开 TRTC 能力测试 测试是否完整地支持 WebRTC 的功能。
部分手机上的浏览器无法正常运行 TRTC 进行推拉流?
TRTC Web SDK 对浏览器的详细支持度,请参见 TRTC Web SDK 对浏览器支持情况。对于上述没有列出的环境,您可以在当前浏览器打开 TRTC 能力测试 测试是否完整地支持 WebRTC 的功能。
iOS 的微信内嵌浏览器不能正常推流?
iOS 14.3+ 版本的微信内嵌浏览器,可以正常推流。请参见 浏览器支持情况,查看 iOS 上的微信内嵌浏览器对推拉流的支持情况。
在微信 H5 无法采集摄像头和麦克风?
出现这种情况,可能是您的微信清理了数据、或者是首次安装的微信,这种情况下微信使用安装时自带的浏览器内核是不支持设备采集的。微信会在 Wi-Fi 联网的情况下,自动下载安装支持设备采集的 XWeb 内核。您可以在 Wi-Fi 联网一段时间(例如半小时)后再次重试。
为什么本地开发测试能正常使用 TRTC Web SDK,但是部署到线上无法使用?
出于对用户安全、隐私等问题的考虑,浏览器限制网页只有在安全的环境下(例如 https、localhost、file:// 等协议),才能采集麦克风、摄像头。HTTP 协议是不安全的,浏览器会禁止在 HTTP 协议下采集媒体设备。
若您在本地开发测试一切正常,但是页面部署后,却无法正常采集摄像头、麦克风。则请检查您的网页是否部署到了 HTTP 协议上,若是,请使用 HTTPS 部署您的网页,并确保具备合格的 HTTPS 安全证书。更多详情请参见 URL域名及协议限制说明。
通话一直没办法互通,切换网络后就正常了?
一般是由于网络防火墙导致,请检查防火墙配置。具体请参见 应对防火墙限制相关 进行处理。
TRTC 的 Web 端、小程序端、PC 端是不是互通的?
是的,实时音视频支持全平台互通。
在 iframe 使用 TRTC Web SDK 报错 Permission denied?
在 iframe 中使用 WebRTC 需要给 iframe 标签增加属性来开启相关权限,具体参考如下。麦克风、摄像头、屏幕分享权限:
<iframe allow="microphone; camera; display-capture;">
使用 Vue 3 有哪些注意事项?
若在 Vue3 框架使用时,遇到 trtc 相关的通话问题,建议升级最新版本 SDK。
import { markRaw } from 'vue';
const trtc = markRaw(TRTC.create());
通话前音视频设备测试?
您可以查看 通话前环境与设备检测。
如何实时检测当前网络的情况?
具体请参见 通话前的网络质量检测。
WebRTC 有哪些已知问题?
具体请参见 WebRTC 已知问题及规避方案。
二、房间与用户管理
什么情况会收到 KICKED_OUT 事件?
当用户被移出时会触发该事件,例如:使用同名用户同时登录、调用后台 REST API 移除用户将用户移出房间、调用后台 REST API 解散房间。
注意:
同名用户同时登录是不允许的行为,可能会导致双方通话异常,业务层应避免出现同名用户同时登录。
Web 端是否可以监听远端离开房间?
支持监听远端退房事件,建议使用客户端事件中的 REMOTE_USER_EXIT 事件实现远端用户退房通知。
从 v5.15.0+ 开始,REMOTE_USER_EXIT 事件新增 reason 字段,可以识别远端用户退出的原因。
单个房间内支持多少人同时推流?
上行用户是指当前正在发布音视频流的用户,通过调用 startLocalVideo / startLocalAudio / startScreenShare 成功发布本地流后成为上行用户。
TRTC 后台服务器对单个房间内的上行用户个数限制是 50。如果房间内已有 50 个推流用户,第 51 个用户尝试发布本地流时会失败。此时如果业务层想要让第 51 个用户推流,应先让其他用户通过调用 stopLocalVideo / stopLocalAudio / stopScreenShare 停止发布本地流,腾出名额后再让新用户推流。
三、本地媒体采集与发布
Web 端 SDK 日志中报错 NotFoundError、NotAllowedError、NotReadableError、OverConstrainedError 以及 AbortError 分别是什么意思?
这是设备采集失败时的错误,详情请参考:DEVICE_ERROR。
Web 端用宽高设置推流的分辨率是所有浏览器都适用吗?
由于设备和浏览器的限制,视频分辨率不一定能够完全匹配,在这种情况下,浏览器会自动调整分辨率使其接近 Profile 对应的分辨率。详情请参见 trtc.startLocalVideo 的 profile 参数。
Web 端支持哪些视频画面分辨率设置?
目前 Web 端支持设置 720p、1080p、2k 和 4k 的视频画面分辨率,更多设置详情请见 Web端画面质量设置。
为什么摄像头支持采集 1080p,而采集出来的分辨率不到 1080p?
这种情况一般是由于摄像头提前被低分辨率采集占用,导致 SDK 无法采集到目标分辨率。
解决方案:检查业务侧逻辑,如果提前采集了摄像头,请在无需使用时,及时释放摄像头采集。
Android 端采集麦克风后,扬声器声音变成从听筒播放了?
Android 端一般会有多个麦克风,label 列表为: ['default', 'Speakerphone', 'Headset earpiece'],如果在 trtc.startLocalAudio 时,不指定麦克风,浏览器默认麦克风可能会采集到 Headset earpiece,此时声音会从听筒放出。若需要通过扬声器外放,则需要指定采集 label 为 Speakerphone 的麦克风。
如何设置视频分辨率?
可以通过预定义的 Profile 或自定义参数来设置视频分辨率、帧率和码率。详情请参见:设置视频属性。
四、远端流订阅与渲染
通话过程中出现有画面但是听不到声音?
- 因浏览器自动播放策略限制,在用户没有与页面产生交互的情况下,音频播放可能会被浏览器拦截,请参见 自动播放受限处理建议。
- 其他异常,可通过监控仪表盘查询收发两端的音量值进行排查。
Web 端 SDK 可以获取当前音量大小吗?
可以通过 AUDIO_VOLUME 事件 获取当前音量大小,具体请参见 音量大小检测。
五、屏幕分享
Web 端屏幕分享的样式支持修改吗?
屏幕分享的样式由浏览器控制,目前不能修改。
Web 端如何在屏幕分享的时候采集系统声音?
具体操作请参见 实现屏幕分享。
Safari 浏览器屏幕分享报错 "getDisplayMedia must be called from a user gesture handler"?
这是因为 Safari 限制了 getDisplayMedia 屏幕采集接口,必须在用户点击事件回调函数 1 秒内调用。建议在 onClick 执行时优先执行屏幕分享采集逻辑,再进行进房等其他操作。详情请参见:实现屏幕分享。
Mac Chrome 屏幕分享失败,报错 "NotAllowedError" 或 "NotReadableError"?
当屏幕录制已授权的情况下,Mac Chrome 屏幕分享可能失败。Chrome bug
解决方案:打开【设置】> 点击【安全性与隐私】> 点击【隐私】> 点击【屏幕录制】> 关闭 Chrome 屏幕录制授权 > 重新打开 Chrome 屏幕录制授权 > 关闭 Chrome 浏览器 > 重新打开 Chrome 浏览器。
六、设备管理与权限
Web 端 SDK 在使用的过程中拔掉摄像头,怎么清除摄像头列表里面的数据?
监听 DEVICE_CHANGED 事件,SDK 会在设备插拔时触发该事件,此时重新获取一次摄像头列表即可。详情请参见 检测设备插拔行为。
Web 端如何切换摄像头和麦克风?
参考:切换摄像头和麦克风。
如何检测设备权限状态?
从 v5.13.0+ 开始,SDK 提供 TRTC.getPermissions 接口用于检查、请求和监听设备权限。详情请参见:设备权限检测。
设备采集异常该如何处理?
SDK 会自动检测设备插拔行为并尝试自动恢复采集。如果恢复失败,会抛出错误事件。详情请参见:检测设备插拔行为。
七、质量优化与网络适应
如何处理音频自动播放失败问题?
由于浏览器自动播放策略限制,在用户没有与页面产生交互的情况下,音频播放可能会被浏览器拦截。详情请参见:自动播放受限处理建议。
如何在通话前检测网络质量?
可以通过创建两个 TRTC 实例分别检测上行和下行网络质量。详情请参见:通话前的网络质量检测。
收到 trtc.on('error') 事件该如何处理?
这个表示 SDK 遇到不可恢复错误,在 SDK 经过多次重试后仍然无法恢复时,会抛出该事件。此时可以通过重新进房或者刷新页面来恢复。
WebSocket 报错 WebSocket is closed before the connection is established,如何处理?
- 如何处理:您可以忽略这个报错,这个报错对业务不会产生任何影响。
- 报错原因:SDK 在进房时会启用多路 WebSocket 竞速连接,以提升进房建联速度。在竞速结束后,连接较慢的 WebSocket 会被 closed,此时浏览器控制台可能会打印出这个错误,可以忽略,对实际业务没有影响。
八、高级功能与插件
是否支持大小流、水印?
如何开启大小流功能?
大小流是指在开启摄像头时同时编码两路视频流,一路正常分辨率视频(称为大流),另一路低分辨率视频(称为小流)。适用于多人音视频通话场景,可以大幅节省下行带宽。详情请参见:大小流。
SDK 支持哪些插件功能?
SDK 提供插件系统支持按需加载各种音视频增强能力,包括美颜、虚拟背景、水印、背景音乐、AI 降噪、变声、实时转录、设备检测、跨房连麦、CDN 推流等。详情请参见:插件概览。
如何自定义采集和渲染?
可以通过传入自定义的 MediaStreamTrack 来实现自定义采集,或通过监听 TRACK 事件获取 MediaStreamTrack 来实现自定义渲染。详情请参见:自定义采集和渲染。
九、错误码与调试
如何开启调试模式?
您可以在 URL 中添加 trtcDebug=1 参数自动开启调试弹窗,例如:www.example.com/?trtcDebug=1。详情请参见:调试模式使用指引。