tencent cloud

云顾问-Tencent RTC 云助手

产品动态
产品简介
产品概述
产品优势
应用场景
购买指南
新手指引
场景化方案
场景化方案概述
社交娱乐
电商直播
音视频通话
远程实时操控
智能客服
AI 面试
模块化方案
模块化方案概述
网络质量监控
移动端应用保活方案
视频画中画方案
直播上下滑
跨房 PK 连麦方案
AI 对话 Chat 信令方案
常见问题
联系我们

Web

PDF
聚焦模式
字号
最后更新时间: 2025-12-24 10:30:38

业务流程

本节汇总了在线娃娃机中一些常见的业务流程,帮助您更好地理解整个场景的实现过程。
在线娃娃机 TRTC 推流
在线娃娃机 RTMP 推流
下图展示了在线娃娃机 RTC Engine 推流的序列图,其中包含网络摄像头 RTC Engine 推流、用户拉流等流程。

下图展示了在线娃娃机 RTMP 推流的序列图,其中包含网络摄像头 RTMP 推流、用户拉流等流程。


接入准备

步骤1:开通服务

在线娃娃机场景通常需要依赖腾讯云 RTC Engine 付费 PaaS 服务构建。其中,RTC Engine 负责提供实时音视频互动能力。您可根据实际业务需求自由选择开通上述服务。
1. 登录 RTC Engine 控制台 ,在应用页面单击创建应用,您可根据需要选择升级 RTC Engine 应用版本,例如旗舰版可解锁更多增值功能服务。

说明:
建议创建两个应用分别用于测试环境和生产环境,首次开通 RTC Engine 服务有免费10000分钟试用时长包。
RTC Engine 包月套餐(体验版、轻量版、标准版、专业版)可以解锁不同的增值功能服务,详情可见 包月套餐说明
2. 应用创建完毕之后,您可以在 应用 > 应用概览中看到该应用的基本信息,其中需要您保管好 SDKAppIDSDKSecretKey 便于后续使用,同时应避免密钥泄露造成流量盗刷。


步骤2:导入 SDK

NPM 集成

1. 您可以在项目中使用 npm 安装 trtc-sdk-v5
npm install trtc-sdk-v5 --save
2. 在项目脚本里导入模块。
import RTC Engine from 'trtc-sdk-v5';

Script 集成

在您的 Web 页面中添加如下代码即可:
<script src="trtc.js"></script>
说明:
trtc.js 需要下载至您项目本地进行集成,对应的 SDK 下载链接与 Demo 地址

步骤3:鉴权与许可

UserSig 是腾讯云设计的一种安全保护签名,目的是为了阻止恶意攻击者盗用您的云服务使用权,RTC Engine 在进房时校验该鉴权凭证。
调试跑通阶段:可以通过 客户端示例代码控制台 计算生成 UserSig,仅用于调试测试。
正式运行阶段:推荐安全等级更高的服务端计算 UserSig 方案,防止客户端被逆向破解泄露密钥。
具体实现流程如下:
1. 您的 App 在调用 SDK 的初始化函数之前,首先要向您的服务器请求 UserSig。
2. 您的服务器根据 SDKAppID 和 UserID 计算 UserSig。
3. 服务器将计算好的 UserSig 返回给您的 App。
4. 您的 App 将获得的 UserSig 通过特定 API 传递给 SDK。
5. SDK 将 SDKAppID + UserID + UserSig 提交给腾讯云服务器进行校验。
6. 腾讯云校验 UserSig,确认合法性。
7. 校验通过后,会向 RTC Engine SDK 提供实时音视频服务。



注意:
调试跑通阶段的本地 UserSig 计算方式不推荐应用到线上环境,容易被逆向破解导致密钥泄露。
我们提供了多个语言版本(Java/Go/PHP/Node.js/Python/C#/C++)的 UserSig 服务端计算源代码,详情请参见 UserSig 计算源码

步骤4:初始化 SDK 与监听

RTC Engine SDK 创建实例与设置事件监听器。
const trtc = TRTC.create();

trtc.on('error', err => {
console.error(err);
});
说明:
建议监听 SDK 事件通知,对一些常见错误进行日志打印和处理,详情请参见 错误码表

步骤5:生成 RTMP 推流地址(RTMP 推流)

生成 RTMP 推流地址。
rtmp://rtmp.rtc.qq.com/push/房间号?sdkappid=应用&userid=用户名&usersig=签名
RTMP appName 是 push。
地址中的房间号、应用、用户名、签名需要换成业务的。
为简化参数,只支持字符串房间号,不超过64个字符,字符只能是数字、字母、下划线。
注意:
RTC Engine 其他端如果要观看 RTMP 流,请使用字符串房间号进房
UserSig 的生成规则,请参见 UserSig 相关请注意签名要在有效期内)。
示例:
rtmp://rtmp.rtc.qq.com/push/hello-string-room?sdkappid=140*****66&userid=******rtmp2&usersig=eJw1jdE********RBZ8qKGRj8Yp-wVbv*mGMVZqS7w-mMDQL

接入过程

API 时序图



步骤1:娃娃机推流

RTC Engine 推流

1. 通过 客户端示例代码控制台 两种方法计算生成 UserSig。
2. 将 SdkAppid、UserId、UserSig、RoomId 等信息配置到 RTC Engine 网络摄像头或推流盒上开启推流。
注意:
RTC Engine 房间号分为数字类型 roomId 和字符串类型 strRoomId,两种类型的房间不互通,建议统一房间号类型。
RTC Engine 用户角色分为主播和听众,只有主播才有推流权限,进房时需指定用户角色,如未指定则默认为主播角色。
在线娃娃机场景下,进房模式建议选用rtc模式,这样延迟更低。

RTMP 推流

1. 通过 RTMP 地址生成器 生成 RTMP 推流地址。



2. 将 RTMP 推流地址配置到 RTMP 网络摄像头或推流盒上开启推流。

步骤2:用户进房拉流

1. 用户进入 RTC Engine 房间。
const trtc = TRTC.create();
// 进入房间
try {
await trtc.enterRoom({ strRoomId, scene:'rtc', sdkAppId, userId, userSig});
console.log('进房成功');
} catch (error) {
console.error('进房失败' + error);
}
2. 用户订阅主播音视频流。

trtc.on(TRTC.EVENT.REMOTE_VIDEO_AVAILABLE, ({ userId, streamType }) => {
// 为了播放视频画面,您需在 DOM 中放置一个 HTMLElement,可以是一个 div 标签,假设其 id 为 ${userId}_${streamType}
const view = ${userId}_${streamType};
trtc.startRemoteVideo({ userId, streamType, view });
});

trtc.on(TRTC.EVENT.FIRST_VIDEO_FRAME, event => {
// event.height: 视频高度
// event.width: 视频宽度
// event.streamType: 视频流类型.
// event.userId: 用户 ID,若是空串,则代表是本地视频。
})

步骤3:用户退出房间

1. 用户退出房间。
await trtc.exitRoom();
// 退房成功后,若后续无需使用 rtc engine 实例,则可以调用 trtc.destroy 方法销毁实例,及时释放相关资源。
// 销毁后的 rtc engine 实例无法继续使用,需要重新创建新的实例。
trtc.destroy();
2. 解散房间。
服务端解散房间
RTC Engine 提供了服务端解散数字类型房间 API DismissRoom,以及解散字符串类型房间 API DismissRoomByStrRoomId,您可以通过调用服务端解散房间接口把房间内所有用户从房间移出,并解散房间。
客户端解散房间
客户端没有直接解散房间的 API,需要各个客户端调用 exitRoom 退出房间,当房间内的所有主播和观众完成退房后,根据 RTC Engine 房间生命周期规则,房间将会自动解散,详情请参见 RTC Engine 退出房间

异常处理

自动播放策略限制

在 Web 端拉流的场景中,为了提升用户进入房间的体验,默认设置为进入房间后自动播放。但是,在 Android 和 iOS 的 Webview 中,默认的自动播放策略可能与浏览器中的不同。您可以参考以下文档,在您的 App 中关闭自动播放限制。
Android Webview 关闭自动播放限制:调用 setMediaPlaybackRequiresUserGesture(false) 关闭自动播放限制。
说明:
有关处理完整的自动播放策略限制的建议,请参考 Tutorial: 自动播放受限处理建议
RTC Engine iOS 微信浏览器自动播放可能无法通过以上方法生效。如有需要,请 联系我们

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈