腾讯实时音视频(Tencent Real-Time Communication,TRTC)是腾讯云基于 QQ 十多年来在音视频通话技术上积累,并结合腾讯浏览服务 TBS WebRTC 能力与腾讯实时音视频 SDK ,为客户提供多平台互通高品质可定制化的 实时音视频互通服务 解决方案。
为了方便开发者技术选型、开发集成,以下是针对不同问题场景整理的 TRTC 常见问题汇总,后续会持续更新,欢迎反馈。
咨询问题篇
一、功能咨询
1. TRTC 支持哪些平台?
支持的平台包括 iOS、Android、Windows(C++)、Windows(C#)、Mac、Web、Electron、微信小程序、Flutter,更多详情请参见 平台支持。
- 快速入门:https://cloud.tencent.com/document/product/647/32164
- 官方Demo体验:https://cloud.tencent.com/document/product/647/17021
- 官方Demo及SDK下载:https://cloud.tencent.com/document/product/647/32689
2. TRTC 是否支持音视频通话免提模式?
- 支持,免提模式其实就是设置音频路由。原生SDK通过 setAudioRoute 接口切换,小程序通过 live-player 标签的 sound-mode 属性设置。
3. TRTC 是否支持音量大小提示?
- 支持,通过 enableAudioVolumeEvaluation 接口启用。
4. TRTC 是否支持设置镜像画面?
- 支持,通过 setLocalViewMirror 接口设置本地摄像头预览画面的镜像模式,或者通过 setVideoEncoderMirror 接口设置编码器输出的画面镜像模式。
5. TRTC 是否支持录制通话过程中的音频到本地文件?
- 支持,通过 startAudioRecording 接口可以将通话过程中的所有音频(包括本地音频,远端音频,BGM 等)录制到一个文件里,目前支持的音频格式有 PCM, WAV, AAC。
6. TRTC 是否支持音视频互通过程中的视频录制成文件?
- 支持,通过 startLocalRecording 接口可以将本地音视频录制到一个文件里,目前支持的格式只有 mp4。另外 TRTC 也支持用云端旁路录制音视频。
7. TRTC 是否支持类似微信视频通话的悬浮窗、大小画面切换等功能?
- 这些属于UI布局逻辑,SDK并不限制UI上的展示处理。在官方Demo中提供了画面前后堆叠和九宫格布局模式的示例代码,并且支持悬浮窗、大小画面切换和画面拖动,可以直接参考 官方Demo。
8. TRTC 怎么实现纯音频通话?
- TRTC没有音频和视频通道的区分,都是统一传输的,集成了 SDK 进入房间的时候,只调用 startLocalAudio() 接口开启本地音频采集,不调用 startLocalPreview() 接口开启摄像头采集,即纯音频通话模式。
9. TRTC 是否支持自定义采集和渲染音视频数据?
10. TRTC 纯音频通话怎么实现旁路推流和录制?
- TRTC SDK版本在6.9之后,在进房时选择场景参数为 TRTCAppSceneAudioCall 或 TRTCAppSceneVoiceChatRoom 即可;若 TRTC SDK版本在6.9之前,请查看此文档 纯音频旁路和录制参考。
11. TRTC 房间能不能支持踢人、禁止发言、静音?
支持,有以下几种方案:
- 踢人可以通过 TRTC 服务端 房间管理接口 实现;
- 禁止发言、静音和静音简单的实现方案是信令操作,可以使用 TRTC 的自定义信令接口 sendCustomCmdMsg,开发者自己定义相应的控制信令,收到控制信令的通话方执行对应操作既可,比如踢人就是定义一个踢人的信令,收到此信令的用户就自行退出房间。需要注意的是,sendCustomCmdMsg 只针对有上行数据的用户才有效。
- 如果是需要实现更完善的操作逻辑,建议开发者通过 IM 来实现相关逻辑,将 TRTC 的房间与 IM 群组进行映射,在 IM 群组中收发自定义消息来实现相应的操作。
12. TRTC 能支持拉流播放 RTMP/FLV 流吗?
- 支持,TRTCSDK 里目前打包了 TXLivePlayer,另外如果有更高级的播放器功能需求,可以直接使用 LiteAVSDK_Professional 版本,包含了全部功能。
13. TRTC 能不能支持屏幕共享?
平台 | 描述 |
---|---|
iOS/Android | 当前版本的SDK已经支持 |
Windows/Mac | 当前版本的SDK已经支持 |
WebRTC | 当前版本的SDK已经支持 |
Electron | 当前版本的SDK已经支持 |
Flutter | 当前版本的SDK已经支持 |
小程序 | 暂不支持 |
14. TRTC 最多支持多少人通话?
- 通话模式下,单个房间最多支持300人同时在线,最多支持50人同时开启摄像头或麦克风。
- 直播模式下,单个房间支持10万人以观众身份在线观看,最多支持50人以主播身份开启摄像头或麦克风。
15. TRTC 音视频流是否支持通过 CDN 拉流观看?
- 支持,详情请参见 实现 CDN 直播观看。
16. 什么是 UserSig?
- UserSig 是腾讯云设计的一种安全保护签名,目的是为了阻止恶意攻击者盗用您的云服务使用权。
目前,腾讯云的实时音视频(TRTC)、即时通信(IM)以及移动直播(MLVB)等服务都采用了该套安全保护机制。要使用这些服务,您都需要在相应 SDK 的初始化或登录函数中提供 SDKAppID,UserID 和 UserSig 三个关键信息。
其中 SDKAppID 用于标识您的应用,UserID 用于标识您的用户,而 UserSig 则是基于前两者计算出的安全签名,它由 HMAC SHA256 加密算法计算得出。只要攻击者不能伪造 UserSig,就无法盗用您的云服务流量。
UserSig 的计算原理如下图所示,其本质就是对 SDKAppID、UserID、ExpireTime 等关键信息进行了一次哈希加密://UserSig 计算公式,其中 secretkey 为计算 usersig 用的加密密钥
usersig = hmacsha256(secretkey, (userid + sdkappid + currtime + expire +
base64(userid + sdkappid + currtime + expire)))
17. 实时音视频最多可以同时创建多少个房间?
- 支持同时并发存在4294967294个房间,累计房间数量无限制。
18. 实时音视频延时大约多少?
- 全球端到端平均延时小于300ms。
19. TRTC 直播支持什么角色?有什么区别?
- 直播场景(TRTCAppSceneLIVE 和 TRTCAppSceneVoiceChatRoom)支持 TRTCRoleAnchor(主播)和 TRTCRoleAudience(观众)两种角色,区别是主播角色可以同时上行、下行音视频数据,观众角色只支持下行播放其他人的数据。您可以通过调用 switchRole() 进行角色切换。
20. TRTC 如何查看通话时长和使用量?
- 可在实时音视频控制台的【用量统计】页面查看。
21. 两台设备同时运行 Demo,为什么看不到彼此的画面?
- 请确保两台设备在运行 Demo 时使用的是不同的 UserID,TRTC 不支持同一个 UserID (除非 SDKAppID 不同)在两个设备同时使用。
22. 是否支持 Android 和 Web 端互通?
支持。使用相同的 SDKAppID,并进入同一个房间进行通话。详情请参见下列文档链接配置 Demo:
二、方案咨询
1. TRTC V2版本和V1版本有哪些区别?怎么实现旧版本(iLiveSDK)升级 TRTC V2方案?
- 详细区别和方案见文档 https://cloud.tencent.com/document/product/647/32281,另外:
V1内嵌并绑定了IMSDK,V2版本不再内嵌绑定,开发者可自由选择产品组合;
V1版本使用的音视频引擎因为定版较早,对于最近两年出来的设备兼容性不是很好,比如蓝牙耳机、外接设备等,而V2版本是从新设计的,因此对新近几年的设备支持情况好很多;
V1版本因定版较早,网络优化策略相对较旧,弱网下的稳定性相比而言不如V2,V2使用了更新更先进的网络优化算法,在70%以上丢包下仍可以语音通话。
2. 腾讯云移动直播、实时音视频、旁路推流的区别及关系?
- 移动直播
关键词:一对多,RTMP/HLS/HTTP-FLV 协议,CDN
直播分为推流端、源站、CDN、播放端,使用的是通用标准的协议如RTMP,经过CDN分发后,播放时一般可以选择RTMP、HTTP-FLV或HLS(H5支持)等方式。直播的特点是只有一个推流端,以及多个的观看端。
- 实时音视频
关键词:双人/多人通话,多人连麦,UDP 私有协议,低延时
实时音视频(Real-Time Communication, RTC)主要应用场景是音视频双向互动,技术关注点是低延时,使用基于UDP的私有协议,其延迟可低于100ms,典型的场景是QQ电话、微信电话。另外针对直播场景支持10万人大房间,主播间延时能保证最低延时到200ms,普通观众的延时在1s以内。
- 旁路直播
关键词:云端混流,转推,CDN
将主/副播实时音视频通话时的整个房间的画面复制一份到云端进行云端混流,并将混流后的画面推流给腾讯云直播系统的工作方式。
因为混流后的视频数据流和主/副播通话房间实际上并不是同一路流,而是在另外平行的一路,因而称为旁路,即不在主路。云端录制时,录制的流也是通过旁路的方式从流媒体中心引出,存到COS中。
3. 想做一个类似微信音视频通话的应用怎么实现?
4. TRTC 怎么实现直播场景类应用?
- 实时音视频(TRTC)专门针对在线直播场景推出了10万人低延时互动直播解决方案,能保证主播与连麦主播的最低延时到200ms,普通观众的延时在1s以内,并且超强的抗弱网能力适应移动端复杂的网络环境。具体可以接入场景方案 视频互动直播。
5. TRTC 防火墙配置规则?
- 若开发者公司内部有外网访问限制,需要添加防火墙白名单才能访问,相关的规则参考:https://cloud.tencent.com/document/product/647/34399
注:因为服务端IP是动态更新的,不会固定,因此不提供IP白名单。
6. TRTC 移动端怎么实现录屏(屏幕分享)?
7. 实时音视频接入 PC 端是否支持屏幕分享功能?
支持,您可以参考如下文档:
屏幕分享接口详情请参见 Windows(C++)API 或 Windows(C#)API。另外,您也可以使用 Electron 接口。
8. 直播、互动直播、实时音视频以及旁路直播有什么区别和关系?
- 直播(关键词:一对多,RTMP/HLS/HTTP-FLV,CDN)
直播分为推流端、播放端以及直播云服务,云服务使用 CDN 进行直播流的分发。推流使用的是通用标准的协议 RTMP,经过 CDN 分发后,播放时一般可以选择 RTMP、HTTP-FLV 或 HLS(H5 支持)等方式进行观看。 - 互动直播(关键词:连麦、PK)
互动直播是一种业务形式,指主播与观众之间进行互动连麦,主播与主播之间进行互动PK的一种直播类型。 - 实时音视频(关键词:多人互动,UDP 私有协议,低延时)
实时音视频(Tencent Real-Time Communication,TRTC)主要应用场景是音视频互动和低延时直播,使用基于 UDP 的私有协议,其延迟可低至100ms,典型的场景就是 QQ 电话、腾讯会议、大班课等。 腾讯云实时音视频(TRTC)覆盖全平台,除了 iOS/Android/Windows 之外,还支持小程序以及 WebRTC 互通,并且支持通过云端混流的方式将画面旁路直播到 CDN。 - 旁路直播(关键词:云端混流,RTC 旁路转推,CDN)
旁路直播是一种技术,指的是将低延时连麦房间里的多路推流画面复制出来,在云端将画面混合成一路,并将混流后的画面推流给直播 CDN 进行分发播放。
9. 音视频通话场景手机锁屏状态,视频如何拨通?
- 实现离线接听等功能,详情请参见 实现离线接听。
10. 主播和粉丝在直播过程中连麦,是否双方都可以主动发起连麦?
双方都可以主动发起,观众和主播发起逻辑一致,具体操作请参见 跑通直播模式(Android) 。
11. 多人视频会议中,移动端和 Web 端是否可以进入同一房间?
可以。需保证 SDKAppID 和房间号一致,且用户 ID 不一致。
技术支持
亲爱的开发者,如果在使用产品过程中遇到任何问题,欢迎到 云+社区
和 GitHub
提问或者查询历史问题以及解决方案。
- 云+社区各产品问答页查询及提问:
实时音视频:https://cloud.tencent.com/developer/tag/10373?entry=ask
即时通信:https://cloud.tencent.com/developer/tag/126?entry=ask
移动直播:https://cloud.tencent.com/developer/tag/10374?entry=ask
短视频:https://cloud.tencent.com/developer/tag/10375?entry=ask
超级播放器:https://cloud.tencent.com/developer/tag/10855?entry=ask
互动直播:https://cloud.tencent.com/developer/tag/10379?entry=ask - GitHub 的 issue 页面:
移动直播:https://github.com/tencentyun/MLVBSDK/issues
实时音视频:https://github.com/tencentyun/TRTCSDK/issues
播放器:https://github.com/tencentyun/SuperPlayer_Android/issues、https://github.com/tencentyun/SuperPlayer_iOS/issues
即时通信IM:https://github.com/tencentyun/TIMSDK/issues