tencent cloud

实时音视频

快速接入(Web 桌面浏览器 Vue 版)

Download
聚焦模式
字号
最后更新时间: 2026-07-29 16:37:49

概述

在直播业务中,运营管理是保障平台稳定运行和提升用户体验的重要环节。直播管理系统提供一站式直播运营能力,涵盖直播监控、房间管理、礼物配置、内容审核等核心功能,帮助您快速搭建专业的直播运营系统,实现直播间的高效运营与内容治理。
您可以根据业务需求选择以下两种接入方式:
接入方式
适用场景
接入说明
希望快速上线,不需要深度定制
将直播管理系统部署到您的环境后,可直接使用,或通过 iframe 嵌入到您已有的运营系统中。
需要统一品牌风格,或需要对功能和页面进行定制
基于开源代码进行开发,可自定义页面、菜单和功能,并集成到现有业务系统中。
说明:
直播管理系统不提供托管的后台服务,您需要自行部署服务端,用于生成登录凭证并调用腾讯云相关能力。仓库中提供了一份服务端示例代码,您可以直接部署使用,也可以将相关能力集成到您已有的后端服务中。

快速体验

在进行快速体验之前,您需要 开通服务,满足相关环境配置及开通对应服务。
将开通后获取的 SDKAppId 和 SDKSecretKey 填入体验 demo 的登录框中。

注意:
快速体验只有基础功能展示,完整功能需阅读本文后本地搭建测试以及自行部署后使用。

功能介绍

功能模块
功能说明
UI 示意
直播监控
支持多路同屏监播和根据 Room ID 快速搜索直播间。
对于违规直播间,接入音视频审核后可以展示违规标签(接入方式请联系我们)。
运营人员可一键强制关播或向主播发送违规告警,实时掌握直播状态并及时处置风险。

直播间详情
支持进入直播间详情页,实时查看弹幕消息、在线观众及核心运营数据。
提供全员禁言、成员封禁等管理能力,帮助运营人员快速响应和处理直播间问题。
评论区可以发送管理员消息(进入本页面时会以管理身份进入该直播间房间)
如已接入文本审核能力,支持查看直播间文本审核记录,并提供批量放行、纠错白名单等审核管理能力(接入方式请联系我们)。
如果需要对所有消息进行 人工审核,可开启评论区全员拦截功能,对消息逐一放行或删除。

直播列表
支持在后台预创建直播间并指定主播 ID,主播开播时可直接进入对应房间。
支持生成 OBS 推流地址,主播可通过 OBS 一键开播。

礼物配置
支持礼物和礼物分类的新增、编辑、删除,并支持多语言配置。




系统框架



快速接入

步骤 1:环境配置及开通服务

在进行快速接入之前,您需要参考 准备工作(Web 桌面浏览器),满足相关环境配置及开通对应服务。

步骤 2:下载项目

从 GitHub Release 页面下载最新发布包,或通过 git clone:
git clone https://github.com/Tencent-RTC/TUILiveKit_Manager
cd TUILiveKit_Manager
pnpm install

步骤 3:配置服务端

1. 编辑 packages/server/config/.env
SDK_APP_ID=1400000001 # 请替换您的 SDKAppID
SECRET_KEY=xxxxxxx # 请替换您的 SecretKey
USER_ID=administrator # 请替换您的管理员 userID
说明:
如何获取 SDK_APP_ID 和 SECRET_KEY 的值请参见 开通服务
如何获取 USER_ID 请参见 账号管理
2. 启动服务:
pnpm run start:server
注意:
默认端口为 9000,可以通过配置 .env 中的 PORT 来修改端口号,且需要允许防火墙访问该端口。

步骤 4:配置前端

编辑 packages/vue3/.env
VITE_API_BASE_URL=http://localhost:9000/api
注意:
VITE_API_BASE_URL 中的端口号要和之前配置 server 启动的端口一致。

步骤 5:启动前端

pnpm run dev:vue

进阶配置(可选)

配置图片上传

系统的礼物缩略图、礼物素材、房间封面等功能依赖图片上传,需要配置存储服务。如果不配置,前端会自动降级为 URL 手动输入模式,不影响其他功能使用。
packages/server/config/.env 中追加存储配置,系统支持三种方式:

方式一:腾讯云 COS 对象存储(默认)

说明:
前往 腾讯云 COS 控制台 创建存储桶并获取 API 密钥。
STORAGE_PROVIDER=cos

COS_SECRET_ID=your_secret_id # 腾讯云 API SecretId
COS_SECRET_KEY=your_secret_key # 腾讯云 API SecretKey
COS_BUCKET=your-bucket-1250000000 # COS 存储桶名称
COS_REGION=ap-guangzhou # 存储桶所在地域
COS_CDN_DOMAIN=web.sdk.qcloud.com # (可选)CDN 加速域名,不配置则使用默认 COS 域名
COS_PATH_PREFIX=uploads # (可选)存储路径前缀,文件将存储在此目录下

方式二:自定义 HTTP 上传接口

适用于已有图片上传服务的场景,系统会将文件以 multipart/form-data 方式转发到您的上传接口。
STORAGE_PROVIDER=custom

CUSTOM_UPLOAD_URL=https://your-api.com/upload # 上传接口地址(必填)
CUSTOM_ACCESS_DOMAIN=https://cdn.your-api.com # (可选)文件访问域名前缀
CUSTOM_UPLOAD_FIELD=file # (可选)上传文件字段名,默认 file
CUSTOM_RESPONSE_URL_FIELD=data.url # (可选)响应中 URL 字段的 JSON 路径,默认 data.url
CUSTOM_AUTH_HEADER=Authorization: Bearer token # (可选)自定义认证请求头
CUSTOM_PATH_PREFIX=uploads # (可选)存储路径前缀
注意:
自定义上传接口应返回 JSON 格式,示例:{ "code": 0, "data": { "url": "https://cdn.example.com/xxx.png" } }

方式三:扩展其他存储服务

如果需要接入 AWS S3、阿里云 OSS 等,可按以下步骤扩展:
1. packages/server/src/services/storage/ 下创建 YourProvider.js,继承 StorageProvider 基类。
2. packages/server/src/services/storage/index.jsPROVIDER_MAP 中注册。
3. .env 中设置 STORAGE_PROVIDER=your_key 并添加对应配置项。

内容审核能力

内容审核能力需要使用云 API 功能,因此需要开通对应能力以及配置相关密钥才能使用。
编辑 packages/server/config/.env
# 腾讯云 API 密钥(内容审核、违规标签等功能依赖)
TENCENT_CLOUD_SECRET_ID=xxxx # 请替换您的腾讯云 SecretId
TENCENT_CLOUD_SECRET_KEY=xxxx # 请替换您的腾讯云 SecretKey
说明:
TENCENT_CLOUD_SECRET_ID 和 TENCENT_CLOUD_SECRET_KEY 用于调用腾讯云 IM 审核 API(文本审核、纠错白名单)及 TRTC 审核标签查询 API(违规标签展示)。如何获取请参见 腾讯云 API 密钥管理

音视频违规标签展示

直播间评论内容审核(机器审核)

直播间评论全员审核(人工审核)

实现该功能参考 直播评论全员审核

二次开发

入口项目(packages/vue3)完全开源,您可以自由调整页面结构、导航菜单、品牌标识和页面样式。业务能力可通过以下方式灵活扩展:
品牌与外观定制:通过 live-manager.ts 自定义页面标题、Logo、品牌信息等。
组件定制:通过设置组件的属性和插槽来渲染自定义内容。
服务端扩展:通过 packages/server 中的 Provider 机制扩展存储、鉴权等后端能力。
注意:
如有更高的定制化需求,我们提供更为灵活的 SDK 方式来进行开发。

品牌与菜单配置

项目中的 packages/vue3/src/live-manager.ts 是统一的配置文件,修改此文件即可定制品牌、菜单、插槽等所有内容:
import type { Component } from 'vue';

import { configureLiveManager } from 'tuikit-live-manager-sdk-vue';

export default configureLiveManager({
brand: {
appName: '我的直播管理系统',
pageTitle: '直播管理后台',
logoUrl: '/assets/my-logo.png',
primaryColor: '#0052D9',
},
menus: {
hidden: [],
rename: { 'live-list': '直播间管理' },
order: ['live-list', 'live-monitor', 'gift-config'],
extraMenus: [],
},
components: {},
features: { enableGift: true },
runtime: {
apiBaseUrl: 'http://localhost:9000/api',
language: 'zh-CN',
},
});
说明:
项目默认从 .env 文件读取环境变量,上述示例中使用的是硬编码值。实际使用时,建议通过 import.meta.env.VITE_* 从环境变量读取。

组件插槽

预置页面组件在关键位置提供了插槽,可通过 configureLiveManager 注入自定义 Vue 组件来扩展页面功能:
布局插槽
Slot 名称
插入位置
接收的 Props
headerRight
头部右侧区域
-
sidebarBottom
侧边栏底部区域
-
export default configureLiveManager({
components: {
layout: { headerRight: MyHeaderWidget },
},
});
LiveMonitor 直播监控页
Slot 名称
插入位置
接收的 Props
userActionExtraItems
每个直播间卡片的操作区域
{ live: MonitorLiveInfo }
示例:在监控卡片上添加自定义按钮
// live-manager.ts
import MyMonitorButton from './components/MyMonitorButton.vue';

export default configureLiveManager({
components: {
liveMonitor: {
userActionExtraItems: MyMonitorButton,
},
},
});
<!-- MyMonitorButton.vue -->
<script setup lang="ts">
import type { MonitorLiveInfo } from 'tuikit-live-manager-sdk-vue';

defineProps<{ live: MonitorLiveInfo }>();
</script>

<template>
<t-button variant="text" size="small">
自定义操作 — {{ live.liveName }}
</t-button>
</template>
LiveList 直播间列表页
Slot 名称
插入位置
接收的 Props
beforeToolbar
列表页工具栏之前
{ lives: MonitorLiveInfo[]; loading: boolean }
afterToolbar
列表页工具栏之后
{ lives: MonitorLiveInfo[]; loading: boolean }
tableExtraColumns
表格额外列
{ live: MonitorLiveInfo }
rowActions
行操作按钮区域
{ live: MonitorLiveInfo }
liveFormExtraFields
创建/编辑直播间表单额外字段
{ mode: 'create' | 'edit'; formData: Record<string, unknown> }
示例:在表格中添加自定义列
// live-manager.ts
import CustomColumn from './components/CustomColumn.vue';

export default configureLiveManager({
components: {
liveList: {
tableExtraColumns: CustomColumn,
},
},
});
<!-- CustomColumn.vue -->
<script setup lang="ts">
import type { MonitorLiveInfo } from 'tuikit-live-manager-sdk-vue';

defineProps<{ live: MonitorLiveInfo }>();
</script>

<template>
<t-tag :theme="live.isMuted ? 'warning' : 'success'" variant="light">
{{ live.isMuted ? '已禁言' : '正常' }}
</t-tag>
</template>
LiveControl 直播间详情页
Slot 名称
插入位置
接收的 Props
beforeLiveInfo
直播间信息区之前
{ liveInfo: MonitorLiveInfo | null }
customControlPanel
统计卡片下方控制面板
{ liveInfo: MonitorLiveInfo | null; stats: LiveStats }
示例:添加自定义统计面板
// live-manager.ts
import CustomPanel from './components/CustomPanel.vue';

export default configureLiveManager({
components: {
liveControl: {
customControlPanel: CustomPanel,
},
},
});
<!-- CustomPanel.vue -->
<script setup lang="ts">
import { computed } from 'vue';
import type { MonitorLiveInfo, LiveStats } from 'tuikit-live-manager-sdk-vue';

const props = defineProps<{
liveInfo: MonitorLiveInfo | null;
stats: LiveStats;
}>();

const revenueRate = computed(() => {
if (!props.stats || props.stats.viewCount === 0) return '0';
return ((Number(props.stats.giftUserCount ?? 0) / props.stats.viewCount) * 100).toFixed(2);
});
</script>

<template>
<t-card title="自定义统计" class="custom-panel">
<p>送礼转化率:{{ revenueRate }}%</p>
<p>累计点赞:{{ stats.likeCount.toLocaleString() }}</p>
<p>累计评论:{{ stats.commentCount.toLocaleString() }}</p>
</t-card>
</template>
GiftConfig 礼物配置页
Slot 名称
插入位置
接收的 Props
giftTableExtraColumns
礼物表格额外列
{ gift: GiftItem }
giftRowActions
礼物行操作按钮区域
{ gift: GiftItem }
giftFormExtraFields
创建/编辑礼物表单额外字段
{ mode: 'create' | 'edit'; formData: Record<string, unknown> }
示例:在礼物表格中显示分类标签
// live-manager.ts
import GiftCategoryTag from './components/GiftCategoryTag.vue';

export default configureLiveManager({
components: {
giftConfig: {
giftTableExtraColumns: GiftCategoryTag,
},
},
});
<!-- GiftCategoryTag.vue -->
<script setup lang="ts">
import { computed } from 'vue';
import type { GiftItem } from 'tuikit-live-manager-sdk-vue';

const props = defineProps<{ gift: GiftItem }>();
const categories = computed(() => props.gift.categories ?? []);
</script>

<template>
<t-space size="small">
<t-tag v-for="cat in categories" :key="cat" size="small" variant="light">
{{ cat }}
</t-tag>
</t-space>
</template>

生产部署

说明:
如果您已经有自己的服务器,可以选择方式一:自建部署,可以更灵活地进行定制并集成到已有系统中。
如果您想快速试用或演示,可以选择方式二:云函数 + COS/EdgeOne Pages,无需自行购买和配置服务器,更加快捷方便。

方式一:自建部署

服务端:修改配置后将 packages/server 部署到您的服务器,在该目录下运行 pnpm install,然后运行 node src/index.js 启动服务器。
前端:修改 VITE_API_BASE_URL 后在根目录下 pnpm run build:vue,将构建产物部署到静态资源服务器如 Nginx,也可以把构建产物放到之前服务器的 public 目录下,可以和服务器共用端口,此时可以配置 VITE_API_BASE_URL=/api,前端使用相对路径请求 api 接口。

方式二:云函数 + COS / EdgeOne Pages

服务端:在根目录下运行 npm run deploy:server 然后将 packages/server/dist/scf-deploy.zip 上传至腾讯 云函数(Web 函数,Node.js 20.19)。
前端:创建 .env.production 设置云函数请求地址后,在根目录下 pnpm run build:vue,将构建产物上传至 COSEdgeOne
VITE_API_BASE_URL=https://your-scf-url.com/api
注意:
your-scf-url.com 要替换成实际的域名和端口。

相关文档



帮助和支持

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

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

文档反馈