Electron 中使用 SwiftPM 构建跨平台 TRTC Native Addon

背景 Electron 的优势在于 UI 开发效率高,但在实现 RTC、视频前处理、美颜和虚拟背景等能力时,往往会触及 Web SDK 的边界。 TRTC 是腾讯云实时音视频 SDK,适合做采集、推流、拉流、前处理和视频渲染这条主链路。它和浏览器里的 Web SDK 不是一回事:Web SDK 更轻,TRTC Native SDK 则给了更完整的原生能力。 SwiftPM 是 Swift Package Manager,也就是 Swift 的包管理和构建工具。它不只是“装依赖”,还负责描述 target、平台条件、二进制产物和构建关系,所以很适合拿来组织 Swift、C、C++ 和 Objective-C++ 混合工程。 以 TRTC 为例,如果 Web SDK 不支持发送前的视频处理,主链路就无法只依靠 <video>、Canvas、WebGL 或 WebGPU,而需要接入 TRTC Native SDK。 本文整理了一套可落地的方案:用 SwiftPM 管理混合代码,构建 Node Addon;Electron 负责 UI 和布局,TRTC Native SDK 负责采集、前处理、编解码和视频渲染。 目标不是强行让所有平台共用完全相同的原生代码,而是统一 JS API 和包管理结构,并在平台适配层分别接入 macOS 与 Windows SDK。 为什么 addon 用 Swift 这篇方案里,addon 选择 Swift 不是为了绕开 C++,而是因为它刚好处在一个很合适的中间层:上面要接 Electron 和 Node-API,下面要接平台 SDK、窗口句柄和 TRTC。 ...

August 8, 2026

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 统一管理子房间生命周期。 ...

June 1, 2026