PCHelper
背景介绍 腾讯体育的个人直播业务中,主播开启比赛陪看直播一直仅支持移动端开播。然而,移动端开播存在屏幕尺寸过小、摄像头拍摄角度受限等问题,严重影响了主播的解说体验。为了提升主播在比赛解说场景下的使用体验,同时降低使用 OBS 进行运营的人力成本,我们决定在腾讯视频 PC 开播助手的基础上进行迭代开发,新增对腾讯体育比赛陪看功能的支持。 选择陪看比赛界面: 陪看解说画面: 从零开发一款 PC 开播软件的成本较高。幸运的是,腾讯视频已经拥有一款成熟的 PC 开播助手,用于支持主播或艺人在 PC 端进行直播。虽然当时该产品尚不支持陪看直播功能,但我们可以在其基础上进行二次开发:接入腾讯体育的账号体系,并新增比赛陪看能力,从而以最小的开发成本实现业务需求。 整体架构概览 腾讯视频 PC 开播助手基于 Electron 框架开发,推流等核心功能则依赖 OBS Node(obs-studio-node)实现,前端部分采用 Vue.js 技术栈。 OBS Studio 是一款知名的开源直播与录屏工具,其客户端使用 Qt 框架绘制界面。OBS Node 是将 OBS Studio 的核心功能模块进行封装,使其能够被 Node.js 直接调用的扩展库。 OBS 原生支持多种推流协议,但腾讯视频直播中台采用的是 TRTC(Tencent Real-Time Communication)协议。在此基础上,视频 PC 开播助手对 OBS Node 进行了以下扩展: TRTC 协议支持:实现基于 TRTC 的推流和连麦功能; 移动设备开播支持:支持使用手机等移动设备作为视频源进行开播。 整体技术架构如下图所示: 图 1|整体技术架构 Renderer 进程Vue UI ⇄ IPC ⇄ Main 进程Node + Native → OBS Node + TRTC SDK 腾讯体育后台服务(账号/房间/陪看控制) → Main 进程 虚拟主播(比赛点播转直播) → TRTC SDK 主播推流 → TRTC 云端混流 → 观众端 多房间架构设计(SubRoom) 陪看场景最大的技术约束是:主播需要同时处于主直播间和虚拟陪看房间。为此我们在 TRTC 单房间模型之上封装了 ITRTCSubRoom,并通过 SubRoomService 统一管理子房间生命周期。 ...