From a3a6a3a77a2ce1e498a98396f92be6ef84cc2c8a Mon Sep 17 00:00:00 2001 From: noelorin Date: Sun, 23 Aug 2026 15:19:46 +0800 Subject: [PATCH] docs: update to SRS trunk + multi-distribution architecture --- .env.example | 11 ++++++++--- README.md | 20 ++++++++++++-------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/.env.example b/.env.example index d49c72f..fac7b36 100644 --- a/.env.example +++ b/.env.example @@ -7,17 +7,22 @@ JWT_SECRET= # 可选:单独指定推流 JWT 签名密钥;留空则复用 JWT_SECRET SFU_TOKEN_SECRET= -# 后端顺序(主 SFU 在前):cloudflare 优先,srs 本地对照 +# 主干与分发:SRS 为唯一推流主干,分发按 DISTRIBUTORS 扇出 SFU_PROVIDER=cloudflare,srs +DISTRIBUTORS=srs-hls,cf,cdn -# SRS(本地对照后端:docker compose up -d srs) +# 分发:第三方直播 CDN(RTMP 转推) +CDN_RTMP_URL= +CDN_NAME=cdn + +# SRS(主干:唯一推流入口,docker compose up -d srs) SRS_API_BASE=http://localhost:1985 SRS_HTTP_BASE=http://localhost:8080 SRS_APP=live SRS_SECRET= SRS_CANDIDATE=127.0.0.1 -# Cloudflare Realtime(主 SFU) +# Cloudflare Realtime(分发之一:SFU 低延时) CF_APP_ID= CF_APP_SECRET= CF_BASE_URL=https://rtc.live.cloudflare.com/v1 diff --git a/README.md b/README.md index a5c6e7f..af6391e 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,10 @@ > **对标 SyncTV**:SyncTV 是 *Sync + TV*(一起看),**SyncLive 是 *Sync + Live*(一起播·一起看直播)**。本项目是 SyncTV 理念在直播场景的姐妹实现:一路推流,多端同步扇出。 -基于 **Cloudflare Realtime + SRS** 双 SFU 的同步直播分流服务。控制面以 **protobuf / gRPC** 定义,媒体面走 -**Cloudflare Realtime**(主 SFU)与 **SRS**(本地/对照)的 WebRTC 扇出。 +基于 **SRS 主干 + 多路分发** 的同步直播服务。控制面以 **protobuf / gRPC** 定义,媒体面 SRS 为唯一推流入口。 -- 一路推流 → SFU 扇出 → 多路拉流。 -- 同一路发布可同时落到 **Cloudflare Realtime** 与 **SRS** 两条分发链路(分流)。 +- 推流仅进入 SRS 主干(WHIP),由服务端按配置扇出到多路分发。 +- 分发方式:**SRS HLS 直推**(remux 原地出 HLS/FLV)+ **Cloudflare Realtime SFU**(低延时)+ **第三方直播 CDN**(RTMP 转推)。 - 浏览器经服务端反向代理直连 SFU,凭证不出服务端。 - 默认 DB 使用嵌入式 libSQL (file) 持久化房间分发拓扑,零外部依赖。 - 前端为 **SolidJS + TanStack Router/Query + Ark UI + Tailwind v4** 单页应用,构建产物嵌入 Go 二进制。 @@ -20,9 +19,12 @@ sync-live/ internal/ config/ # 运行参数 + 正式环境密钥校验 db/ # 嵌入式 libSQL 持久化 - sfu/cloudflare/ # Cloudflare Realtime REST 客户端 + Provider - sfu/srs/ # SRS Provider - server/ # gRPC 服务 + JSON 网关 + SRS/CF 媒体反代 + 房间拓扑 + sfu/cloudflare/ # Cloudflare Realtime 分发 + sfu/srs/ # SRS 主干 + sfu/cdn/ # 第三方 CDN 分发 + sfu/distributor.go # 分发抽象接口 + server/ # gRPC 服务 + JSON 网关 + 媒体反代 + 房间拓扑 + 分发编排 + static/ # 前端构建产物(由 web/ 构建生成,Go embed) static/ # 前端构建产物(由 web/ 构建生成,Go embed) auth/ # Casbin RBAC + JWT + 用户存储 cmd/server/main.go @@ -46,12 +48,14 @@ cp .env.example .env 未配置 `JWT_SECRET` 时服务将拒绝启动,避免以不安全默认密钥上线。 -### 2. 起本地 SRS(可选,对照后端) +### 2. 起本地 SRS(主干,必须) ```bash cd deploy && SRS_CANDIDATE=127.0.0.1 docker compose up -d srs ``` +SRS 为唯一推流入口,未启动时推流将失败。 + ### 3. 起控制面 ```bash