An open API service indexing awesome lists of open source software.

https://github.com/atorber/noderadio


https://github.com/atorber/noderadio

Last synced: 2 months ago
JSON representation

Awesome Lists containing this project

README

          

# NodeRadio | 私频收音机

**NodeRadio(私频收音机)** 是一款为极客、开发者及架构师打造的、高度自定义的音视频直播流管理工具。目前使用 Flutter 框架进行开发,原生支持 Android 平台的高级特性。

它像是一台来自未来的复古电台。不同于预设繁琐的传统播放器,NodeRadio 将每一个 **直播 URL** 或 **协作空间地址** 抽象为一个“频道节点(Channel Node)”。通过输入地址,你可以亲手“调教”出属于自己的私人频道阵列。

-----

## 📻 设计哲学:Neon Nocturne 赛博美学

* **暗黑霓虹:** 采用基于 Material 3 `AppTheme.darkTheme` 深度定制的 *Neon Nocturne* 主题,高对比度色彩(荧光紫、赛博青)点缀在深邃幽暗的背景上。
* **快速交互:** 极简的底部导航结构(频道矩阵、一键添加),摆脱冗杂逻辑,直达核心媒体内容。
* **节点架构:** 频道链接具有严谨的数据结构并自动识别流类型,每个频道都是独立的、持久化的 Node。

-----

## ✨ 当前已实现的核心特性

* **智能频道库管理:**
* 内置轻量级的持久化能力(SharedPreferences),无缝保存、添加、长按删除自定义频道。
* 频道地址智能探测:输入链接即可自动识别并标记为 **飞书直播**、**HLS 流**、**RTMP 流** 或 **常规 Web 页面** 类型。
* **深度支持飞书直播 (Feishu/Lark):**
* 完美解析 `meetings.feishu.cn` 等内嵌 Web 直播流地址。
* 提供一键导入飞书直播测试流选项,免跨端复杂跳转直接在 App 内呈现,打造闭环体验。
* **全功能内置 Web 容器引擎:**
* 内嵌专属打造的 `WebViewPlayerScreen`。
* 提供内置加载进度条与强定制的 Chrome Mobile User-Agent 模拟,深度解决网页兼容问题。
* 一键全屏与横屏强制切入系统,具备最佳的大屏观影体验。
* **Android 原生画中画 (Picture-in-Picture) 后台悬浮播放:**
* 深度集成底层 API (`supportsPictureInPicture`),拥有原生的系统级浮窗支持能力。
* 支持 **Auto PiP 行动**:观看任何直播频道时退回桌面(系统主屏),自动无缝收缩为系统级悬浮窗继续播放。
* 浮窗时自动剥离 App 导航栏与状态栏,呈现 100% 纯净流媒体小窗,并在点击时优雅扩展回全屏应用。
* **无阻碍的中国网络环境编译引擎支持:**
* 针对中国大陆进行了原生 Gradle 与 Maven 下载的定制重配(注入阿里云与腾讯云镜像仓库),保障项目开箱即用、随时可以顺滑构建出 Android Release 应用包。

-----

## 🛠 技术栈与架构 (For Architects)

* **渲染层:** Flutter & Dart。
* **持久层:** `shared_preferences` 对基础数据进行序列化管理。
* **媒体容器:**
* `webview_flutter` 用于实现复杂逻辑页面的渲染(如飞书鉴权页面与推流显示)。
* **底层支持:**
* 使用了 `simple_pip_mode` 突破了普通 Flutter 生命周期限制,获取了 Android 内部的 Picture in Picture 生命周期接口权限以接管悬浮状态。

-----

## 🚀 接入与使用示例

### 如何添加一个飞书直播节点:

1. **获取信号:** 在外部复制飞书会议/直播分享地址。
2. **创建节点:**
* 在 App 底部导航切换至 **[添加]** 标签。
* 填入频道名称(如:`部门技术分享周会`),粘贴相应的 URL,或者使用一键填充测试模板。
3. **注入链接:** 点击 **“保存并添加”**,频道将自动归纳至首页矩阵中进行持久化保存。
4. **悬浮观看:** 点击卡片开始播放,随后上滑返回桌面即可启动画中画 (PiP) 功能。

-----

## 🤝 关于维护

**项目主页:** [github.com/atorber/NodeRadio](https://github.com/atorber/NodeRadio)

如果您在打包编译出现问题(特别是在同步 Android 依赖时),请注意检查项目的 `android/build.gradle.kts` 网络代理以及镜像。当前的构建脚本已确保在国内最高效。

-----

> *"在数字荒原中,捕捉那一束属于你的霓虹电波。"*