功能模块 | 功能说明 | UI 示意 |
直播监控 | 支持多路同屏监播和根据 Room ID 快速搜索直播间。 对于违规直播间,接入音视频审核后可以展示违规标签(接入方式请联系我们)。 运营人员可一键强制关播或向主播发送违规告警,实时掌握直播状态并及时处置风险。 | ![]() |
直播间详情 | 支持进入直播间详情页,实时查看弹幕消息、在线观众及核心运营数据。 提供全员禁言、成员封禁等管理能力,帮助运营人员快速响应和处理直播间问题。 评论区可以发送管理员消息(进入本页面时会以管理身份进入该直播间房间) 如已接入文本审核能力,支持查看直播间文本审核记录,并提供批量放行、纠错白名单等审核管理能力(接入方式请联系我们)。 如果需要对所有消息进行 人工审核,可开启评论区全员拦截功能,对消息逐一放行或删除。 | ![]() |
直播列表 | 支持在后台预创建直播间并指定主播 ID,主播开播时可直接进入对应房间。 支持生成 OBS 推流地址,主播可通过 OBS 一键开播。 | ![]() |
礼物配置 | 支持礼物和礼物分类的新增、编辑、删除,并支持多语言配置。 | ![]() |

git clone https://github.com/Tencent-RTC/TUILiveKit_Managercd TUILiveKit_Managerpnpm install
packages/server/config/.env:SDK_APP_ID=1400000001 # 请替换您的 SDKAppIDSECRET_KEY=xxxxxxx # 请替换您的 SecretKeyUSER_ID=administrator # 请替换您的管理员 userID
pnpm run start:server
.env 中的 PORT 来修改端口号,且需要允许防火墙访问该端口。packages/vue3/.env:VITE_API_BASE_URL=http://localhost:9000/api
pnpm run dev:vue
packages/server/config/.env 中追加存储配置,系统支持三种方式:STORAGE_PROVIDER=cosCOS_SECRET_ID=your_secret_id # 腾讯云 API SecretIdCOS_SECRET_KEY=your_secret_key # 腾讯云 API SecretKeyCOS_BUCKET=your-bucket-1250000000 # COS 存储桶名称COS_REGION=ap-guangzhou # 存储桶所在地域COS_CDN_DOMAIN=web.sdk.qcloud.com # (可选)CDN 加速域名,不配置则使用默认 COS 域名COS_PATH_PREFIX=uploads # (可选)存储路径前缀,文件将存储在此目录下
multipart/form-data 方式转发到您的上传接口。STORAGE_PROVIDER=customCUSTOM_UPLOAD_URL=https://your-api.com/upload # 上传接口地址(必填)CUSTOM_ACCESS_DOMAIN=https://cdn.your-api.com # (可选)文件访问域名前缀CUSTOM_UPLOAD_FIELD=file # (可选)上传文件字段名,默认 fileCUSTOM_RESPONSE_URL_FIELD=data.url # (可选)响应中 URL 字段的 JSON 路径,默认 data.urlCUSTOM_AUTH_HEADER=Authorization: Bearer token # (可选)自定义认证请求头CUSTOM_PATH_PREFIX=uploads # (可选)存储路径前缀
{ "code": 0, "data": { "url": "https://cdn.example.com/xxx.png" } }。packages/server/src/services/storage/ 下创建 YourProvider.js,继承 StorageProvider 基类。packages/server/src/services/storage/index.js 的 PROVIDER_MAP 中注册。.env 中设置 STORAGE_PROVIDER=your_key 并添加对应配置项。packages/server/config/.env:# 腾讯云 API 密钥(内容审核、违规标签等功能依赖)TENCENT_CLOUD_SECRET_ID=xxxx # 请替换您的腾讯云 SecretIdTENCENT_CLOUD_SECRET_KEY=xxxx # 请替换您的腾讯云 SecretKey
packages/vue3)完全开源,您可以自由调整页面结构、导航菜单、品牌标识和页面样式。业务能力可通过以下方式灵活扩展:live-manager.ts 自定义页面标题、Logo、品牌信息等。packages/server 中的 Provider 机制扩展存储、鉴权等后端能力。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 },},});
Slot 名称 | 插入位置 | 接收的 Props |
userActionExtraItems | 每个直播间卡片的操作区域 | { live: MonitorLiveInfo } |
// live-manager.tsimport 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>
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.tsimport 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>
Slot 名称 | 插入位置 | 接收的 Props |
beforeLiveInfo | 直播间信息区之前 | { liveInfo: MonitorLiveInfo | null } |
customControlPanel | 统计卡片下方控制面板 | { liveInfo: MonitorLiveInfo | null; stats: LiveStats } |
// live-manager.tsimport 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>
Slot 名称 | 插入位置 | 接收的 Props |
giftTableExtraColumns | 礼物表格额外列 | { gift: GiftItem } |
giftRowActions | 礼物行操作按钮区域 | { gift: GiftItem } |
giftFormExtraFields | 创建/编辑礼物表单额外字段 | { mode: 'create' | 'edit'; formData: Record<string, unknown> } |
// live-manager.tsimport 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>
packages/server 部署到您的服务器,在该目录下运行 pnpm install,然后运行 node src/index.js 启动服务器。VITE_API_BASE_URL 后在根目录下 pnpm run build:vue,将构建产物部署到静态资源服务器如 Nginx,也可以把构建产物放到之前服务器的 public 目录下,可以和服务器共用端口,此时可以配置 VITE_API_BASE_URL=/api,前端使用相对路径请求 api 接口。npm run deploy:server 然后将 packages/server/dist/scf-deploy.zip 上传至腾讯 云函数(Web 函数,Node.js 20.19)。VITE_API_BASE_URL=https://your-scf-url.com/api
文档反馈