尧图精选

Simple Live:基于 Flutter 与 simple_live_core 的多平台直播聚合观看与弹幕方案

🕒 发布时间:2026/10/2 1:37:20 📁 来源:尧图网络
音视频直播【免费下载链接】dart_simple_live简简单单的看直播项目地址https://gitcode.com/GitHub_Trending/da/dart_simple_live点击查看免费下载Simple Live 是一个以“简简单单的看直播”为核心理念的开源直播聚合项目通过统一的 Dart 核心库抽象虎牙、斗鱼、哔哩哔哩、抖音四家直播平台的信息获取与弹幕协议并在此基础上派生出了 Flutter 手机客户端、Android TV 客户端与控制台调试程序。读完本文你将掌握该仓库的四层项目结构、核心库的接口设计与数据模型、控制台程序的两种调试用法以及各客户端的编译运行前提。项目定位与总体形态Simple Live 采用“一个核心库、多个客户端外壳”的架构思路所有直播平台相关的网络请求、签名计算、弹幕解析逻辑都被收敛到独立的 Dart 包中客户端只负责界面展示与用户交互。因此无论是手机端还是 TV 端甚至命令行程序都能复用同一套直播数据能力。需要特别注意的是仓库在 README.md 开头即声明本项目不提供 Release 安装包请自行编译后运行测试。这意味着使用本项目的唯一途径是从源码构建所有平台产物都需要本地 Flutter 工具链支持。支持平台矩阵直播平台数据源平台说明虎牙直播基于 Tars 协议获取房间信息与播放地址弹幕走 WebSocket斗鱼直播需要本地签名脚本计算请求参数哔哩哔哩直播涉及 WBI 签名、buvid 等 Cookie 构造弹幕支持 Brotli 解压抖音直播依赖签名脚本生成合法请求参数运行平台客户端平台状态Android✅ 正式支持iOS✅ 正式支持Windows⚠️ BETAMacOS⚠️ BETALinux⚠️ BETAAndroid TV⚠️ BETA其中手机端与 TV 端是两个独立的 Flutter 工程simple_live_app与simple_live_tv_app桌面三端则是同一套 Flutter 引擎在不同宿主上的运行形态均处于 BETA 阶段说明桌面端仍以验证功能为主。项目界面截图浅色/深色模式可在仓库 assets/screenshot_light.jpg 与 assets/screenshot_dark.jpg 查看README 中直接以这两张图展示应用的实际观感项目结构四个子项目各司其职仓库根目录下划分为四个相互独立又彼此依赖的 Dart 工程README.md 给出了它们的分工目录定位说明simple_live_core项目核心库实现获取各个网站的信息及弹幕simple_live_console控制台程序基于 simple_live_core 的命令行调试工具simple_live_appFlutter APP 客户端面向手机与桌面端的完整应用simple_live_tv_appFlutter Android TV 客户端面向电视遥控交互的专用界面依赖方向是单向的console、app、tv_app都依赖core而core不依赖任何客户端代码。这种分层让平台接入逻辑可以被测试、被复用、被多端共享。simple_live_core 的核心依赖在 simple_live_core/pubspec.yaml 层面核心库还内置了一个自研的 tars_dart 包位于simple_live_core/packages/tars_dart用于虎牙直播的 Tars 编解码协议——包括tars_input_stream、tars_output_stream、tup协议报文等完整实现这也是仓库中唯一以源码形式内置的第三方协议库。核心库深入simple_live_core 的接口抽象simple_live_core/lib/simple_live_core.dart 是核心库的统一出口它一次性导出了两类内容平台接口与数据模型。平台接入层全部实现两个接口数据层则统一使用一套跨平台模型。平台接口 LiveSitesimple_live_core/lib/src/interface/live_site.dart 定义了所有平台站点必须实现的能力集合包括id/name站点唯一标识与展示名称getDanmaku()返回该站点的弹幕处理器实例getCategores()读取网站直播分类树searchRooms(keyword, page)/searchAnchors(keyword, page)搜索直播间与主播getCategoryRooms(category, page)/getRecommendRooms(page)读取类目下房间与推荐房间getRoomDetail(roomId)获取房间详情getPlayQualites(detail)获取可选清晰度列表getPlayUrls(detail, quality)获取实际播放链接getLiveStatus(roomId)查询直播状态getSuperChatMessage(roomId)读取指定房间的醒目留言SC。该接口使用 Dart 的隐式接口特性各站点通过implements LiveSite实现。以 simple_live_core/lib/src/bilibili_site.dart 为例BiliBiliSite将id固定为bilibili、name固定为哔哩哔哩直播并维护了cookie、userId、buvid3、buvid4等会话状态getHeader()会先请求 bilibili 的 buvid 信息b_3/b_4把buvid3、buvid4拼进 Cookie如果用户配置了完整 Cookie 且已含 buvid 则直接沿用同时统一附加默认 User-Agent 与https://live.bilibili.com/的 ReferergetCategores()请求https://api.live.bilibili.com/room/v1/Area/getList拉取分类树并把子分类图标拼接100w.png缩略图后缀getCategoryRooms()走https://api.live.bilibili.com/xlive/web-interface/v1/second/getList且调用了getWbiSign()对请求进行 WBI 签名同时附带w_webid参数——这体现了 bilibili 接口的反爬签名要求。弹幕接口 LiveDanmakusimple_live_core/lib/src/interface/live_danmaku.dart 定义了弹幕生命周期核心成员如下回调onMessage收到一条弹幕消息、onClose连接关闭/重连提示、onReady连接就绪状态heartbeatTime心跳间隔毫秒方法heartbeat()发送心跳、start(args)开始接收、stop()停止接收。各站点在start中接收平台专属的参数对象。例如 bilibili 的 simple_live_core/lib/src/danmaku/bilibili_danmaku.dart 定义了BiliBiliDanmakuArgs包含roomId、token、buvid、serverHost、uid、cookie六个字段连接地址是wss://{serverHost}/subheartbeatTime为 60 秒60 * 1000毫秒收到服务器数据后使用 Brotli 解压再解析弹幕帧断线时通过onClose通知“与服务器断开连接正在尝试重连”。斗鱼、虎牙、抖音的弹幕实现分别位于同目录下的 douyu_danmaku.dart、huya_danmaku.dart、douyin_danmaku.dart。统一数据模型跨平台数据被收敛为若干模型类客户端不感知平台差异LiveRoomDetail房间详情含roomId、title、cover、userName、userAvatar、online、introduction、notice、status直播中/未开播、isRecord是否录播、showTime、url等字段额外提供data与danmakuData两个动态字段用于携带各平台私有数据而不破坏统一模型。LivePlayUrl播放地址urls为可用的播放链接列表headers为拉流时需要的请求头例如 Referer/Cookie播放器拿到该对象即可直接拉流。LiveMessage统一弹幕消息type为枚举chat聊天、gift礼物、online在线人数、superChat醒目留言并附userName、message、data与colorLiveMessageColor负责把平台返回的整数颜色值解析为 RGB并在toString中输出#rrggbb格式供客户端直接渲染弹幕颜色。其余模型还包括LiveCategory/LiveSubCategory/LiveCategoryResult、LiveRoomItem、LiveSearchResult、LiveAnchorItem、LivePlayQuality共同覆盖“分类 → 房间列表 → 房间详情 → 清晰度 → 播放地址 → 弹幕流”的完整链路。核心库还内置了请求与日志基础设施http_client.dart、custom_interceptor.dart、core_log.dart以及供弹幕使用的 web_socket_util.dart 和 binary_writer.dart。控制台程序simple_live_console 的两种调试用法simple_live_console/README.md 说明了这个命令行工具的核心用途在不启动图形界面的前提下验证核心库的能力非常适合接口调试与协议研究。用法一输入直播间播放直链获取信息及播放地址simple_live.exe -i [URL]-i参数接收一个直播间的页面直链例如某平台的房间 URL程序会解析出房间信息与可用的播放地址可用于验证getRoomDetail/getPlayQualites/getPlayUrls整条链路。用法二输入直播间链接获取弹幕simple_live.exe -d [URL]-d参数同样接收直播间链接但行为是建立弹幕连接并打印实时弹幕消息可用于验证对应平台的LiveDanmaku实现是否正常收发。控制台程序的核心逻辑位于 simple_live_console/test/all_live_console_test.dart在 Windows 下编译后即为simple_live.exe在其他桌面平台上可编译为对应原生可执行文件后使用同样的参数。Flutter 客户端simple_live_app 的功能构成simple_live_app 是面向日常使用的完整客户端。从其 lib/modules 目录结构可以推断出主要功能模块首页 / 分类 / 关注home、category含分类详情category/detail、follow_user模块提供直播浏览主路径搜索search模块同时支持房间搜索与主播搜索其中抖音搜索有独立实现search/douyin直播间与播放器live_room模块内含player子模块播放器控制器与播放控件承担播放、清晰度切换与弹幕展示我的 / 账号 / 历史 / 解析mine模块下包含 bilibili 的扫码登录与网页登录mine/account/bilibili、观看历史mine/history以及一个“解析”功能mine/parse设置settings模块提供弹幕屏蔽danmu_shield、弹幕设置、播放设置、关注设置、自动退出、App 样式等丰富配置同步sync模块支持本地局域网同步local_sync含设备发现与扫码和基于 WebDAV 的远程同步remote_sync/webdav用于在多设备间同步关注、历史等数据。数据持久化层位于 simple_live_app/lib/models/db包含follow_user、follow_user_tag、history三张表及其*.g.dart生成代码账户与网络层则由 simple_live_app/lib/services 下的bilibili_account_service、signalr_service、sync_service等支撑。Android 入口为 simple_live_app/android/app/src/main/kotlin/com/xycz/simple_live/MainActivity.kt。Android TV 客户端simple_live_tv_appsimple_live_tv_app 是面向遥控器场景的 TV 版本目录结构与手机端有明显差异界面组件集中在 lib/widgets/buttonhighlight_button、highlight_list_tile、home_big_button与 lib/widgets/card并提供了 highlight_widget.dart、app_focus_node.dart、base_focus_model.dart 等焦点管理基础设施——电视端必须依赖方向键焦点导航而非触摸这是 TV 版与手机版最本质的差异。功能上保留了首页、分类、关注、历史、热门直播hot_live、房间搜索/主播搜索、设置与同步等核心路径。环境要求与编译运行README.md 明确要求Flutter 3.38。四个子项目均以此为基准各端编译方式与标准 Flutter 工程一致手机/桌面端在 simple_live_app 目录执行flutter pub get后按目标平台运行flutter run -d deviceTV 端在 simple_live_tv_app 目录使用 Android TV 设备或模拟器运行控制台在 simple_live_console 目录编译后按前述-i/-d参数使用桌面端打包配置也已就绪例如 Windows 的 MSIX 打包simple_live_app/windows/packaging/msix/make_config.yaml、Linux 的 deb 打包simple_live_app/linux/packaging/deb/make_config.yaml以及 MacOS 的 dmg 打包simple_live_app/macos/packaging/dmg/make_config.yaml。由于仓库不提供预编译安装包首次构建需要完整拉取 Flutter 3.38 工具链并等待依赖编译桌面三端处于 BETA 状态遇到兼容性问题时可参考 simple_live_app/README.md 与 simple_live_tv_app/README.md 中的说明。技术参考与合规声明README.md 末尾列出了本项目的技术参考来源这些资料决定了协议层实现的走向AllLive本项目的 C# 版前身项目结构与思路的源头dart_tars_protocolTars 协议的 Dart 移植参考对应核心库内置的 tars_dart 包wbt5/real-url与Bilibili-Live-API直播播放地址解析与 bilibili 弹幕 WebSocket 协议文档参考danmaku与huya-danmu弹幕解析实现参考TarsCloud/Tars虎牙使用 Tars 协议的官方规范来源douyin-live与Tiktok_Signature抖音直播协议与签名算法参考。在合规层面README 的“声明”部分明确了两点其一项目所有功能均基于互联网公开资料开发无任何破解、逆向工程等行为其二项目仅用于学习交流编程技术严禁用于商业目的如存在侵犯合法权益的情况可联系开发者删除相关内容。这既是项目自身的技术边界也是使用者应当遵守的约束——尤其是抖音、bilibili 等平台持续更新签名与风控策略时任何依赖都应以公开接口为限。小结Simple Live 的价值在于把“四个平台 四种弹幕协议 多个客户端形态”收敛为一套可维护的 Dart 代码simple_live_core提供统一接口与模型simple_live_console提供无界面的验证入口simple_live_app与simple_live_tv_app分别承载触摸与遥控两种交互。如果你需要研究直播平台接入、弹幕 WebSocket 解析或 Flutter 多端复用架构从 simple_live_core/lib/src/interface/live_site.dart 与 simple_live_core/lib/src/bilibili_site.dart 入手是最直接的路径。赞分享音视频直播【免费下载链接】dart_simple_live简简单单的看直播项目地址https://gitcode.com/GitHub_Trending/da/dart_simple_live点击查看免费下载相关推荐Simple Live直播聚合工具一站式解决多平台直播观看难题Simple Live直播聚合工具一站式解决多平台直播观看难题 你是否曾经为了追看不同平台的主播而频繁切换应用是否在手机、电脑和电视之间来回奔波只为找到最音视频直播Simple Live直播聚合工具一站式跨平台观看解决方案Simple Live直播聚合工具一站式跨平台观看解决方案 现代直播观看体验中用户经常需要在多个平台间来回切换下载不同的应用面对不同的界面风格。Simp音视频直播跨平台直播聚合神器Simple Live让多平台观看体验全面升级跨平台直播聚合神器Simple Live让多平台观看体验全面升级 你是否曾经为了追看不同平台的主播而频繁切换应用Simple Live的出现彻底改变了这一现音视频直播上一篇EasyFloat多浮窗管理技巧标签系统与生命周期控制下一篇Mastra × E2B Desktop在云端 Linux 桌面沙箱中构建可操控桌面的 Agent Workspace创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →