ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Dart Simple Live完整指南:如何用Flutter 3步搭建多平台聚合直播应用

Dart Simple Live完整指南:如何用Flutter 3步搭建多平台聚合直播应用 Dart Simple Live完整指南如何用Flutter 3步搭建多平台聚合直播应用【免费下载链接】dart_simple_live简简单单的看直播项目地址: https://gitcode.com/GitHub_Trending/da/dart_simple_liveDart Simple LiveSimple Live是一个基于Flutter和Dart的聚合直播工具统一支持虎牙、斗鱼、哔哩哔哩、抖音四个平台的播放、弹幕与多设备同步可跑在手机、桌面和电视上。 项目速写定位项目口号简简单单的看直播是最准确的描述它不追求大而全只把找直播间、看直播、收弹幕这条链路做扎实。解决的问题关注的主播分散在四个平台原生App各看各的。这个项目用一套统一接口把四家数据收拢到一起一个App切平台追更。项目构成主README 写明四个子项目——simple_live_core核心库各平台数据与弹幕、simple_live_app手机/桌面客户端、simple_live_tv_appAndroid TV客户端、simple_live_console控制台工具。核心依赖核心库以 dio 做网络请求、web_socket_channel 走弹幕长连接、protobuf 解析抖音弹幕包虎牙的Tars协议则用仓库内自带的tars_dart包实现。技术组件版本作用Flutter3.38跨平台UI框架simple_live_core1.0.3聚合直播核心库media_kit^1.2.2视频播放引擎get^4.7.3状态管理与路由canvas_danmaku^0.2.7弹幕渲染 3步跑起来1. 环境准备安装 Flutter 3.38 SDK这是 README 中指定的版本装好命令行工具后flutter doctor确认设备可用。2. 获取项目git clone https://gitcode.com/GitHub_Trending/da/dart_simple_live cd dart_simple_live/simple_live_app flutter pub get3. 首次运行连接手机或模拟器在simple_live_app目录下直接flutter run即可进入首页。桌面平台在 README 里标注 BETA建议先用移动端验证流程不想构建完整客户端的话可以先跑simple_live_console里的脚本确认核心库数据链路是否通。 核心能力逐个看多平台统一数据接口先解决一个App怎么取四家数据的问题。核心库接口 里定义了LiveSite基类把每个平台的差异收拢成一组固定方法class LiveSite { FutureListLiveCategory getCategores(); // 拉取分类 FutureLiveSearchRoomResult searchRooms(String keyword); // 搜索直播间 FutureLiveRoomDetail getRoomDetail({required String roomId}); FutureListLivePlayQuality getPlayQualites({required LiveRoomDetail detail}); FutureLivePlayUrl getPlayUrls({required LiveRoomDetail detail, required LivePlayQuality quality}); LiveDanmaku getDanmaku(); // 获取弹幕实例 }各平台实现类BiliBiliSite、DouyinSite 等只管怎么调自己的接口上层UI完全不需要感知当前在哪个平台。简单讲新增一个平台就是再写一个实现类。配套的模型层LiveRoomItem、LiveRoomDetail 等把四家的返回数据归一化成同一套结构客户端列表页因此可以四个平台混排展示。弹幕协议处理方式弹幕是这类工具里最磨人的部分四家协议各不相同B站走标准WebSocket抖音弹幕是Protobuf包且请求需要签名虎牙连播放地址都要通过Tars长连接协议去换CDN token斗鱼则有自定义的心跳规则。核心库把这些差异全部封装在LiveDanmaku接口后面对上层只暴露 onMessage、onReady、onClose 三个回调和统一的 start/stop/heartbeat 方法。平台弹幕通道特殊处理哔哩哔哩WebSocketCookie 携带 buvid 设备指纹抖音WebSocket Protobuf请求签名内置JS引擎执行签名脚本虎牙Tars 长连接CDN 播放地址换取斗鱼私有协议心跳保活与消息解码播放引擎与设备适配App 层用 media_kit底层是mpv做播放canvas_danmaku 把弹幕叠在画面上播放器控制器 里还集成了屏幕常亮、横竖屏切换、画中画、音量调节这些看直播的高频操作并允许在设置页里切换音频输出驱动。弹幕默认开启可以整体隐藏也有关键词屏蔽弹幕护盾功能深色模式效果如下关注数据跨设备同步我的页面下提供两条同步链路局域网 SignalR 同步两台设备扫二维码直连和远端 WebDAV 同步接入自己的 WebDAV 服务。关注的主播、标签和观看历史存在本地 Hive 数据库中同步本质上是把这份数据打包传到另一台设备再解包不依赖任何中心化服务器。⚠️ 实战中的几个关键点没有现成安装包只能自己编译README 开头就声明不提供 Release 包找不到下载链接很正常直接flutter build或flutter run自己出包。Flutter版本要对着装项目指定 3.38SDK 版本偏低时依赖解析容易失败先升级工具链再跑 pub get能省掉一堆莫名其妙的报错。核心库是本地路径依赖simple_live_app通过path: ../simple_live_core引用核心库核心库内部还依赖同目录的tars_dart包和一个 git 依赖 dart_quickjs。想拿核心库写自己的客户端记得把路径改对别漏了这几个隐式依赖。登录态影响功能完整度部分画质和平台请求在设置 Cookie 后更稳B站内置了扫码登录抖音源码注释里写明只要有 ttwid 这个Cookie字段就能拿主流画质不用完整登录态。iOS播放有已知问题App的README TODO 里挂着iOS播放问题和全屏、非全屏弹幕样式分离在iOS真机上遇到问题先对照已知清单排查别急着怀疑自己的环境。 还能怎么玩自建轻量客户端核心库与UI完全解耦拿它写电视盒子、车机或任意Flutter项目的直播模块TV版就是现成样例。终端弹幕监控用 simple_live_console 直接在终端拉弹幕和直播状态适合接着写自动化脚本。接入新平台实现一个 LiveSite 加一个 LiveDanmaku 子类就能把新平台挂进整个App。TV手机组合TV版和手机版用同一套同步功能共享关注列表客厅大屏追更。整个项目的分层思路很清晰核心库管数据客户端管体验声明也写明仅供学习交流。想上手的话克隆仓库后在 simple_live_app 下跑一次 flutter run再顺着 simple_live_core/lib/src/interface/ 把 LiveSite 接口读一遍基本就摸清了整个项目的骨架。【免费下载链接】dart_simple_live简简单单的看直播项目地址: https://gitcode.com/GitHub_Trending/da/dart_simple_live创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进