腾讯云实时音视频TRTC对接使用完全指南:从开通服务到深度集成
1. 腾讯云实时音视频TRTC产品概述
实时音视频TRTC是腾讯云基于二十余年网络问题处理与设备适配经验自主研发的底层通信引擎。这项技术起源于1999年QQ音视频通话的技术积累,经过多年迭代,已成为行业领先的实时通信解决方案。TRTC致力于为开发者提供稳定、可靠、低成本的音视频传输能力,帮助快速构建视频通话、在线教育、直播连麦、在线会议等对通信延时要求苛刻的音视频应用。
TRTC的核心优势体现在多个维度。全球超过2000个节点覆盖确保了服务可达性,智能路由调度基于腾讯云全球实时网络动态选择最优传输路径。在抗丢包能力方面,音频抗丢包率高达70%,保障了弱网环境下的通话质量。端到端延迟方面,TRTC提供平均低于300毫秒的超低延时能力。全平台支持覆盖iOS、Android、Web、小程序、Windows、Mac、HarmonyOS、Electron、Flutter、uni-app等十五个以上平台。此外,TRTC还内置了AI降噪、回声消除、美颜等AI增强模块,大幅降低了二次开发成本。
TRTC支持两种核心场景模式。通话模式包含视频通话和语音通话,适用于一对一或多人面对面沟通场景。直播模式包含视频互动直播和语音互动直播,单个房间支持最多十万人同时在线,具备小于300毫秒的连麦延迟和小于1000毫秒的观看延迟。在角色划分上,TRTC支持主播和观众两种角色,主播既支持向服务端推送自己的音视频数据,也支持从服务端订阅并播放其他主播的音视频数据,观众仅支持从服务端订阅并播放主播角色的音视频数据。
需要先登录腾讯云控制台,点击:腾讯云控制台,还没有账号,点击:注册后再关联,已有账号点击:登录后再关联
2. 开通TRTC服务与获取凭证
接入TRTC的第一步是在腾讯云控制台中开通服务并获取必要的应用凭证。整个流程只需几分钟即可完成。
2.1 开通体验版服务
登录实时音视频TRTC控制台后,单击创建应用。在弹窗中输入应用名称,选择自由集成(无UI)场景,勾选免费领取七天体验版,单击创建应用。创建成功后进入应用管理页面,即可看到体验版的基本信息,包括服务状态、版本信息、功能详情和到期时间。
新账号首次还可前往试用中心免费领取一万分钟音视频时长,用于抵扣音视频通话时长。体验版到期后,可在版本详情中单击体验续期延长有效期七天,每次续期消耗一次免费体验机会。
2.2 获取SDKAppID与密钥
创建应用成功后,在应用管理中可以获取到两个核心凭证。SDKAppID是TRTC应用的唯一标识,用于SDK初始化时识别应用。SDK密钥(也称SecretKey或SDKSecretKey)用于生成UserSig用户鉴权凭证,此密钥必须妥善保管,切勿硬编码在前端代码中。
在后续的MCP配置或SDK集成中,需要将SDKAppID与SecretKey填入相应位置。对于生产环境,建议通过后端服务动态生成UserSig,避免将SecretKey暴露在客户端。
2.3 开通正式版服务
正式版服务主要包含音视频通话费用以及语音转文字、文字转语音等AI智能语音服务费用。支持后付费方式直接使用,也可购买AI智能语音套餐包获取更多用量折扣。购买时需选择无UI自定义开发方案以及对应的SDKAppID。
3. 多平台SDK集成指南
TRTC提供了覆盖主流开发平台的SDK,开发者可根据项目需求选择对应平台进行集成。
3.1 Web端集成
Web端集成通过npm或yarn安装trtc-sdk-v5包即可。执行以下命令安装:
npm install trtc-sdk-v5 --save
// 或
yarn add trtc-sdk-v5如需手动下载,可从官方地址获取zip包并解压到项目中。导入方式支持ES Module和Script标签两种:
import TRTC from 'trtc-sdk-v5';
// 或使用script标签
<script src="/your_path/trtc.js"></script>3.2 iOS端集成
iOS端推荐使用CocoaPods进行集成。在项目根目录执行pod init创建Podfile文件,编辑内容如下:
platform :ios, '8.0'
target 'App' do
pod 'TXLiteAVSDK_TRTC', :podspec => 'https://liteav.sdk.qcloud.com/pod/liteavsdkspec/TXLiteAVSDK_TRTC.podspec'
end执行pod install完成SDK下载,之后使用生成的.xcworkspace文件打开项目。环境要求Xcode 11.0及以上版本,真机需iOS 9.0及以上。
在工程配置中,需在Info.plist中添加Privacy-Microphone Usage Description和Privacy-Camera Usage Description权限描述。在Signing & Capabilities中添加Background Modes并勾选Audio, AirPlay, and Picture in Picture以支持后台音频运行。
3.3 Android端集成
Android端在app/build.gradle的dependencies中添加依赖:
dependencies {
implementation 'com.tencent.liteav:LiteAVSDK_TRTC:latest.release'
}在defaultConfig中指定CPU架构:
android {
defaultConfig {
ndk {
abiFilters "armeabi-v7a", "arm64-v8a"
}
}
}在AndroidManifest.xml中添加必要权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.CAMERA" />环境要求最低兼容Android 4.4(SDK API Level 19),建议使用Android 5.0及以上版本,Android Studio 4.0及以上版本。
3.4 Windows端集成
Windows平台提供C++和C#两种SDK。C#示例代码可在GitHub获取:
git clone https://github.com/Tencent-RTC/TRTC_Windows.git使用Visual Studio(建议VS2017)打开TRTC-API-Example-CSharp.csproj工程文件,推荐选择Release/X86构建平台编译运行。
3.5 uni-app端集成
uni-app平台需从插件市场购买(免费)腾讯云实时音视频SDK原生插件并绑定至项目。导入插件后需制作自定义调试基座,选择传统打包方式进行打包。自定义调试基座成功后使用自定义基座运行项目。
3.6 HarmonyOS端集成
HarmonyOS平台使用DevEco-Studio打开TRTC-API-Example目录。将HarmonyOS设备连接至电脑,开启开发者模式并启用USB调试。
4. TRTC核心API调用详解
掌握TRTC的核心API调用流程是实现音视频通话功能的基础。以下以Web端为例详细讲解各步骤。
4.1 创建TRTC实例
调用TRTC.create()方法创建一个trtc实例:
const trtc = TRTC.create();4.2 进入房间
调用trtc.enterRoom()方法进入指定房间。该方法通常在开始通话按钮的点击回调中调用。核心参数包括sdkAppId、userId、userSig和roomId:
try {
await trtc.enterRoom({
sdkAppId: 1400000000, // 替换为您的SDKAppID
userId: 'user_001', // 用户ID
userSig: 'generated_user_sig', // 后端生成的UserSig
roomId: 8888 // 房间号,数字类型
});
console.log('进房成功');
} catch (error) {
console.error('进房失败', error);
}进房时需注意房间号类型的选择。TRTC支持整型roomId和字符串类型strRoomId两种房间号,两种类型的房间不互通,各端需统一房间号类型。房间号取值区间为1到4294967295。
4.3 推流与拉流
进房成功后即可进行音视频推流。调用startLocalAudio打开麦克风并将音频发布到房间:
await trtc.startLocalAudio();调用startLocalVideo打开摄像头并将视频发布到房间。需在DOM中放置一个用于预览的HTML元素:
const view = 'local-video';
await trtc.startLocalVideo({ view });远端音频默认由SDK自动播放,无需手动调用API。但需注意自动播放策略限制,如果用户在进入房间前未与页面进行交互,自动音频播放可能失败。
远端视频通过监听REMOTE_VIDEO_AVAILABLE事件来播放:
trtc.on(TRTC.EVENT.REMOTE_VIDEO_AVAILABLE, ({ userId, streamType }) => {
if (streamType === TRTC.TYPE.STREAM_TYPE_MAIN) {
trtc.startRemoteVideo({ userId, streamType, view: `${userId}_main` });
}
});4.4 停止推流
调用stopLocalAudio关闭麦克风并取消发布:
await trtc.stopLocalAudio();调用stopLocalVideo关闭摄像头并取消发布:
await trtc.stopLocalVideo();5. 屏幕分享功能实现
屏幕分享是TRTC的重要功能之一,广泛应用于在线教育、远程会议等场景。
5.1 Web端屏幕分享
推流端调用startScreenShare开启屏幕分享:
await trtcA.startScreenShare();如需同时分享系统音频,可传入option参数:
await trtcA.startScreenShare({
option: { systemAudio: true }
});拉流端通过REMOTE_VIDEO_AVAILABLE事件区分主路流和辅路流。主路流通常是摄像头画面,辅路流是屏幕分享画面:
trtcB.on(TRTC.EVENT.REMOTE_VIDEO_AVAILABLE, ({ userId, streamType }) => {
if (streamType === TRTC.TYPE.STREAM_TYPE_MAIN) {
trtcB.startRemoteVideo({ userId, streamType, view: `${userId}_main` });
} else {
trtcB.startRemoteVideo({ userId, streamType, view: `${userId}_screen` });
}
});停止屏幕分享调用stopScreenShare:
await trtcA.stopScreenShare();SDK默认使用1080p参数配置采集屏幕分享。开发者也可监听SCREEN_SHARE_STOPPED事件处理用户通过浏览器按钮主动停止分享的情况。
5.2 其他平台屏幕分享
在Android、iOS、Windows、Electron等平台,屏幕分享通过startScreenCapture接口实现。通过设置encParams参数可指定屏幕分享的编码质量。Windows平台支持主路分享和辅路分享两种方案,辅路分享即主播同时上行摄像头画面和屏幕画面两路视频流,这也是腾讯会议采用的使用方案。
6. 云端混流与录制功能
TRTC提供了强大的云端处理能力,包括混流、录制和截图等功能。
6.1 云端混流
云端混流可将房间内多路音视频流合成为一路流,便于推流至CDN或录制。调用混流接口前需确保在实时音视频控制台已开启自动旁路推流。混流失败时需检查自定义布局参数是否为空。可通过监听onSetMixTranscodingConfig接口排查混流配置问题。
6.2 云端录制
TRTC提供两种云端录制方案:API调用录制和全局自动录制,两种方案不冲突可同时使用。通过调用REST API接口启动云端录制任务,订阅需要录制的音视频流,无需开发者自行部署服务器。录制支持单流录制(每个用户独立文件)和合流录制(同一房间合成为一个文件)两种模式。
6.3 云端截图与切片
云端切片功能可将房间内用户的音视频流按时间间隔进行音频切片或视频截图处理。终端视频截图为付费功能。计费按同一腾讯云账号下所有应用在计费周期内使用终端视频截图服务产生的张数统计用量。
7. 自定义采集与渲染
对于有特殊需求的场景,TRTC支持自定义采集和渲染。
7.1 自定义采集
默认情况下,startLocalVideo和startLocalAudio开启摄像头和麦克风采集。如需自定义采集(如使用外部摄像头、屏幕录制源或经过美颜处理的视频流),可在调用startLocalVideo时传入自定义的媒体流。TRTC提供了updateLocalVideo接口用于更新视频流,可将美颜处理过的流传递给此接口使用。
7.2 自定义渲染
如不需要SDK播放视频,可在调用startLocalVideo或startRemoteVideo时不填view参数或传入null。通过TRTC.getVideoTrack()方法获取相应的videoTrack进行自定义渲染。
8. UserSig生成原理与安全实践
UserSig是TRTC鉴权体系的核心,理解其生成原理对于保障应用安全至关重要。
8.1 UserSig的作用
UserSig是用户进房的鉴权凭证,由业务服务器使用SDKSecretKey生成。客户端SDK初始化时需要传入UserSig,服务端验证通过后才允许用户进入房间。UserSig确保了只有合法用户才能使用TRTC服务,防止未授权访问。
8.2 生成UserSig的最佳实践
生产环境中UserSig必须由后端服务生成,严禁在客户端硬编码SecretKey。前端代码中硬编码密钥存在严重安全风险,密钥一旦泄露任何人都可伪造UserSig。推荐使用Node.js、Python、Java等后端语言调用腾讯云签名工具生成UserSig。
8.3 测试环境简化方案
在开发测试阶段,可在控制台的应用管理中获取SDKAppID和SecretKey,在Demo配置文件中临时替换使用。但上线前务必切换为后端生成方案。
9. 音视频质量优化与参数配置
合理配置音视频参数可显著提升用户体验。
9.1 视频参数设置
在视频通话或互动直播中,可通过设置视频属性调整画面的清晰度和流畅度。调用startLocalVideo或updateLocalVideo方法时设置分辨率、帧率和码率等参数。示例配置:
const stream = TRTC.createStream({
video: {
width: 1280,
height: 720,
frameRate: 25,
bitrate: 1500
}
});9.2 音频质量优化
TRTC内置了AI降噪能力,调用startLocalAudio时选择TRTCAudioQualitySpeech参数即可享受高质量的降噪效果。在网络不佳时,TRTC的抗丢包机制可保障音频的连续性和可理解性。
10. 常见问题与解决方案
以下是TRTC对接使用中常见的问题及解决方法。
10.1 音视频质量不佳
可能原因包括网络不稳定、设备性能不足或编码参数设置不当。建议检查网络连接确保带宽充足且延迟低,根据设备性能调整分辨率和帧率参数。
10.2 连接失败或频繁断线
可能原因包括服务器地址配置错误、防火墙设置或认证信息不正确。需检查SDKAppID和UserSig是否正确,确保网络防火墙未阻止TRTC所需的端口和协议。
10.3 进房失败
进房失败常见于房间号类型不匹配(整型与字符串混用)或UserSig过期。需确保各端使用统一的房间号类型,并检查UserSig是否在有效期内。
10.4 混流失败
混流失败常见原因是未在控制台开启自动旁路推流,或自定义布局参数设置为空。建议先确认控制台配置正确,再检查混流接口调用参数。
10.5 Vue3框架使用注意事项
在Vue3框架中使用TRTC时,需使用markRaw接口标记trtc实例,避免Vue将trtc实例转成Proxy对象导致不可预知的问题:
import { markRaw } from 'vue';
const trtc = markRaw(TRTC.create());11. 结语
本文全面介绍了腾讯云实时音视频TRTC的对接使用流程,从产品概述、服务开通、多平台SDK集成到核心API调用、高级功能实现和常见问题排查,涵盖了开发者从零开始构建音视频应用所需的全部知识。TRTC凭借其低延迟、高并发、全平台支持和AI增强能力,为各类实时音视频场景提供了坚实的技术底座。开发者只需按照本文的指引逐步操作,即可快速搭建稳定可靠的音视频互动应用。
常见问题问答
问1:TRTC体验版和正式版有什么区别?
答:体验版提供七天免费试用,每个SDKAppID可领取一次,到期后可续期一次再延长七天。新账号还可额外领取一万分钟音视频时长。正式版按量计费,包含音视频通话费用和AI智能语音服务费用,可购买套餐包获取折扣。
问2:UserSig应该在哪里生成?
答:生产环境中UserSig必须由业务后端服务器生成,使用SDKSecretKey签名后返回给客户端。严禁在客户端代码中硬编码SecretKey,否则存在密钥泄露风险。
问3:TRTC支持哪些平台?
答:TRTC覆盖iOS、Android、Web、小程序、Windows、Mac、HarmonyOS、Electron、Flutter、uni-app等十五个以上平台,各平台之间可互通。
问4:房间号有什么注意事项?
答:TRTC支持整型roomId和字符串strRoomId两种类型,两种类型房间不互通,各端必须统一房间号类型。整型房间号取值范围为1到4294967295。
问5:屏幕分享和摄像头可以同时推流吗?
答:可以。TRTC支持主路(摄像头)和辅路(屏幕分享)两路视频流同时上行,这也是腾讯会议采用的使用方案。Web端可同时调用startLocalVideo和startScreenShare。
问6:如何在Vue3中正确使用TRTC?
答:在Vue3中使用TRTC时,需使用markRaw接口标记trtc实例,避免Vue的响应式系统将实例转为Proxy对象导致功能异常。




