andrew_live_sdk 0.0.1
andrew_live_sdk: ^0.0.1 copied to clipboard
Live streaming SDK for Flutter — WHIP/WHEP WebRTC, beauty, effects, virtual background, linkmic, PK, danmaku. Layer 1 core with SPI architecture.
live_sdk #
Live SDK for Flutter — 对标 LiveKit / Agora / TRTC 的纯技术核心 SDK。 License:MIT 开源(核心 + 自研 AI 模型)
安装 #
dependencies:
live_sdk: ^0.1.0
快速开始 #
import 'package:live_sdk/live_sdk.dart';
final client = LiveClient();
await client.init(const LiveSdkConfig(enableGpu: true));
// 注入 SPI(可选,按需注入)
client.setDanmakuProvider(MyDanmakuProvider()); // 弹幕数据源
client.setCloudAiProvider(MyCloudAiProvider()); // 云端 AI(超分/年龄变换等)
client.setModelProvider(MyModelProvider()); // 模型动态下载(AI降噪等)
client.addListener(MyListener());
// 推流
await client.streamManager.startPush(
roomId: 'room_123',
config: PushStreamConfig.fullHd30,
);
这是什么 #
live_sdk 采用业界标准的两层架构:
- Layer 1 核心 SDK(
live_sdk包) — 只做技术能力(媒体/视觉/信令/质量)+ SPI 接口 - Layer 2 示例 App(
template_app/) — 抖音风格完整业务参考实现,接入方拷贝改
核心承诺:
- ✅ MIT 开源(包括 Flutter 层、iOS/Android Native 引擎)
- ✅ 零云厂商 SDK 依赖(不用声网、腾讯云、阿里云的私有 SDK)
- ✅ 核心 SDK 不含业务规则(礼物/带货/等级等业务在示例 App,接入方可控)
- ✅ SPI 架构:云端 AI / 模型下载 / 弹幕 / 礼物等能力全部通过 SPI 注入,接入方可控
业界对比 #
| 厂商 | 核心 SDK 含业务吗 | 我们的方案 |
|---|---|---|
| 声网 Agora | ❌ 完全没有,业务靠接入方自建 | 一致:核心只做技术 |
| 腾讯 TRTC | ❌ 完全没有,demo 标「参考实现」 | 一致:template_app 当参考 |
| LiveKit(开源) | ❌ 完全没有,提供 example | 一致:template_app 当参考 |
| 我们(live_sdk) | ❌ 核心不含业务,业务在 template_app | ✅ 业界标准 |
三种接入方式 #
方式 1:仅用核心 SDK(最小接入,类似用 Agora) #
dependencies:
live_sdk: ^1.0.0
final client = LiveClient();
await client.init(
baseUrl: '...', token: '...', /* ... */
// 不注入任何 Port
);
await client.streamManager.startPublish(roomId: 'r_123', config: PublishConfig.fullHd30);
// 没有礼物、没有带货——接入方自己实现自己的业务
方式 2:核心 SDK + 自有业务系统(接入方已有礼物/支付/用户系统) #
await client.init(
baseUrl: '...', token: '...',
ports: Ports(
giftSystem: MyCompanyGiftSystem(), // 我自己实现 GiftSystemPort
userSystem: MyCompanyUserSystem(), // 我的用户/等级系统
pkScoring: MyCompanyPkScoring(), // 我的 PK 计分规则
// 不需要带货?就不传 commerce
),
);
方式 3:拷贝 template_app(开箱即用抖音风格) #
cp -r live-sdk-flutter/template_app/lib/ports/ my_app/lib/live_ports/
cp -r live-sdk-flutter/template_app/lib/features/live_room/ my_app/lib/features/live_room/
await client.init(
ports: Ports(
giftSystem: TemplateGiftSystem(client), // 示例实现,可改业务规则
commerce: TemplateCommerce(client),
userSystem: TemplateUserSystem(),
pkScoring: TemplatePkScoring(),
),
);
核心特性 #
- ✅ ~21 个技术 Manager(媒体/视觉/房间/质量,详见 docs/01-功能清单.md)
- ✅ 业界标准协议:WHIP/WHEP(WebRTC)+ LL-HLS + RTMP + SRT 兜底
- ✅ 超低延迟:RTC ≤ 300ms、首帧 ≤ 1.2s
- ✅ 弱网策略:自动降码率→降分辨率→切协议三级回退
- ✅ SPI 架构:所有外部依赖通过 SPI 注入,SDK 零硬编码地址
- ✅ 算法模型三种策略:本地内置 / 动态下发(SPI)/ 云端 API(SPI)
- ✅ 完全自研:所有 AI/美颜/审核能力均自研,源码完全可控
SPI 接口 #
SDK 发布到 pub.dev,不包含任何私有服务地址。所有外部能力通过 SPI 接口由接入方注入:
| SPI 接口 | 说明 | 未注入时 |
|---|---|---|
DanmakuProvider |
弹幕数据源 | 弹幕功能不可用 |
GiftProvider |
礼物数据源 | 礼物功能不可用 |
RoomDataProvider |
房间数据 | 房间列表不可用 |
UserProfileProvider |
用户信息 | 等级/勋章不可用 |
CommerceProvider |
商品橱窗 | 带货功能不可用 |
ModerationProvider |
内容审核 | 审核功能不可用 |
CloudAiProvider |
云端 AI(超分/年龄变换等) | 云端 AI 不可用,本地功能正常 |
ModelProvider |
模型动态下载(AI降噪等) | 动态模型不可用,本地功能正常 |
LiveEventListener |
事件回调 | 不影响功能 |
设计文档 #
| # | 文档 | 内容 |
|---|---|---|
| 00 | 总体设计 | 两层架构(核心 + 示例 App) |
| 01 | 功能清单 | 核心能力(~180 项)+ 示例 App 内容 |
| 02 | 架构与模块设计 | 核心 LiveClient + Manager + Port 钩子 |
| 03 | API 契约 | 核心 Manager API + 事件回调 + 错误码 + SPI 接口(19 个业务 Port) |
| 04 | 实现细节 | Native 桥接 + 性能弱网策略 + 自研算法清单 |
| 05 | 工程交付 | 安全合规 + 版本路线图 + 测试策略 + template_app 结构 |
目录结构 #
live-sdk-flutter/
├── README.md ← 你在这里
├── docs/ ← 设计文档(6 篇)
│ ├── 00-总体设计.md
│ ├── 01-功能清单.md
│ ├── 02-架构与模块设计.md
│ ├── 03-API契约.md ← API + 事件 + 错误码 + SPI(合并版)
│ ├── 04-实现细节.md ← Native + 性能 + 自研算法(合并版)
│ └── 05-工程交付.md ← 安全 + 路线图 + 测试 + template_app(合并版)
├── lib/ ← Layer 1 核心 SDK(待开发)
│ └── src/ports/ ← SPI 接口定义
├── template_app/ ← Layer 2 示例 App(待开发)
│ └── lib/ports/ ← 业务 Port 参考实现(拷贝改)
├── example/ ← 极简 example(仅核心用法)
└── test/ ← 核心包测试
版本规划 #
| 版本 | 状态 | 目标 |
|---|---|---|
| v0.1 MVP | 🚧 设计完成,待开发 | 媒体基础 + 极简房间 + 基础美颜 + Ports 框架 |
| v0.5 | ⏳ | 高级美颜 + 虚拟背景 + 连麦 + 弹幕渲染 |
| v0.7 | ⏳ | PK 拓扑 + 质量监控 + 诊断 |
| v1.0 开源首发 | ⏳ | 核心 SDK + 19 个业务 SPI + template_app 完整版 |
| v1.1 | ⏳ | template_app 扩展(语聊房/KTV/AI 主播/虚拟主播) |
| v2.0 | ⏳ | 企业托管服务(代码仍 MIT) |
详见 docs/05-工程交付.md 的「第二部分:版本路线图」。
许可证 #
- 核心代码(lib/):MIT License(完全开源)
- 示例 App(template_app/):MIT License(接入方可拷贝改业务规则)
- iOS / Android Native 引擎:MIT License(完全开源)
- 自研 AI 模型权重:MIT / Apache 2.0 / CC-BY(公开分发)
- 托管服务(可选):服务收费(GPU 推理集群 / SRS 流量 / TURN 流量 / 素材市场抽成)
商业化模式:参考 GitLab / Sentry / LiveKit / Agora 开源版的「开源核心 + 托管服务」模式。客户可自托管一切(0 成本),或购买托管服务(按用量付费)。
相关仓库 #
- im-sdk-flutter — 兄弟项目,IM SDK(弹幕/评论复用其通道)
- andrew-live — 直播后端(礼物/商品/等级等业务)
- andrew-chat/app/rtc — RTC 信令
- mengchu/mengchu_flutter — 接入此 SDK 的宿主 App