Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

220 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

diveo

diveo

承载 GSAV 4DGS 网页播放器的原生外壳 · 原 B 站客户端表层已冻结

A native shell for the GSAV 4DGS web player — formerly a third-party Bilibili client (that surface is now frozen)


React Native Expo TypeScript License: MIT Platform

English · 快速开始 · 功能亮点 · 贡献


⚠️ 项目方向

diveo 正从第三方 B 站客户端转型为 GSAV 4DGS 网页播放器的原生外壳,通过 react-native-webview 承载独立的 GSAV 网页应用(见 ../gsav-hosting)。

原有的 B 站客户端表层因哔哩哔哩律师函已冻结:不再调用 B 站 API、不再开发新功能,待 diveo 的 4D 能力就绪后整体移除(见 docs/adr/0001-gsav-pivot.md)。

以下截图与功能均为已冻结的 B 站表层,仅作历史参考。


截图预览


首页热门 · 内联视频 · 穿插直播

首页直播 · 关注房间· 分区筛选

直播详情 · 4K HDR · 多清晰度

下载管理 · 局域网分享二维码

直播详情 ·实时弹幕 · 清晰度切换

视频弹幕 · 同步加载

演示视频

https://github.com/OpsiClear-Web/diveo/releases/download/v1.0.0/6490dcd9dba9a243a7cd8f00359cc285.mp4


功能亮点

🎬 DASH 完整播放 Bilibili DASH 流 → buildDashMpdUri() 生成本地 MPD → ExoPlayer 原生解码,支持 1080P + 4K HDR杜比视界

💬 完整弹幕系统 视频弹幕 XML 时间轴同步 + 5 车道飘屏覆盖;直播弹幕 WebSocket 实时接收 + 舰长标记 + 礼物计数

🔐 WBI 签名实现 纯 TypeScript 手写 MD5,无任何外部加密依赖,nav 接口 12h 自动缓存

🏠 智能首页排布 BigVideoCard 内联 DASH 静音自动播放 + 水平手势快进 + 直播卡片穿插 + 双列混排

📺 全局迷你播放器 切换页面后底部浮层续播,VideoStore 跨组件状态同步

🔑 扫码登录 二维码生成 + 2s 轮询 + 响应头 Cookie 自动提取 SESSDATA

📥 下载 + 局域网分享 多清晰度后台下载,内置 HTTP 服务器生成局域网 QR 码,同 Wi-Fi 设备扫码直接播放

🌐 跨平台运行 Android · iOS · Web,Expo Go 扫码 5 分钟运行,Dev Build 解锁完整 DASH 播放


技术架构

技术
框架 React Native 0.83 + Expo SDK 55
路由 expo-router v4(文件系统路由,Stack 导航)
状态管理 Zustand
网络请求 Axios
本地存储 @react-native-async-storage/async-storage
视频播放 react-native-video(DASH MPD / HLS / MP4)
降级播放 react-native-webview(HTML5 video 注入)
页面滑动 react-native-pager-view
图标 @expo/vector-icons(Ionicons)

快速开始

方式一:Expo Go(5 分钟,无需编译)

部分清晰度受限,视频播放降级为 WebView 方案

git clone https://github.com/OpsiClear-Web/diveo.git
cd diveo
npm install
npx expo start

用 Expo Go App(Android / iOS)扫描终端二维码即可运行。

方式二:Dev Build(完整功能,推荐)

支持 DASH 1080P+ 原生播放、完整弹幕系统

npm install
npx expo run:android   # Android
npx expo run:ios       # iOS(需 macOS + Xcode)

方式三:Web 端

npm install
npx expo start --web

Web 端图片需本地代理服务器绕过防盗链:node scripts/proxy.js(端口 3001)

GSAV Native Shell

diveo can host the GSAV hosting web app as a thin native shell. GSAV catalog, CDN/R2 URLs, controls, and playback stay in ../gsav-hosting/apps/web; diveo only owns native routing, WebView loading, retry, back navigation, and bridge messages.

Start the local GSAV hosting preview first:

cd ../gsav-hosting
npm run smoke:web:local

Then start diveo against that local preview:

EXPO_PUBLIC_GSAV_WEB_URL=http://127.0.0.1:5191 npx expo start

For Android emulator testing:

EXPO_PUBLIC_GSAV_WEB_URL=http://10.0.2.2:5191 npx expo run:android

Routes:

  • /watch/:id opens GSAV_WEB_URL/watch/:id?embed=native
  • /gsav/:id is a GSAV scene alias
  • /gsav-diagnostics opens the native diagnostics page

Native device QA is documented in docs/GSAV_NATIVE_QA.md.

Local GSAV shell checks:

npm run gsav:preflight
npx tsc --noEmit
npm test

直接安装(Android)

前往 Releases 下载最新 APK,无需编译,安装即用。

需在 Android 设置中开启「安装未知来源应用」


项目结构

当前架构正从「B 站客户端」过渡到「GSAV 原生外壳」。下方标注「冻结」的部分为旧 B 站功能,仅维护、不新增(详见上方公告);GSAV 外壳为继续开发方向。

app/
  index.tsx            # 首页入口(旧 B 站信息流 · 冻结 + GSAV 入口)
  watch/[id].tsx       # GSAV 场景(WebView 原生外壳)
  gsav/[id].tsx        # GSAV 场景深链别名(与 /watch 同屏)
  gsav-diagnostics.tsx # GSAV 原生诊断页
  video/[bvid].tsx     # 视频详情(冻结)
  live/[roomId].tsx    # 直播详情(冻结)
  search.tsx · downloads.tsx · settings.tsx  # 搜索 / 下载 / 设置(冻结)

components/            # UI 组件,含 GsavWebView / GsavScreen(GSAV 外壳)
hooks/                 # 数据 Hooks(视频列表、播放流、弹幕等 · 冻结)
services/              # Bilibili API 封装(冻结)
store/                 # Zustand 状态(登录、下载、播放、设置)
utils/                 # 工具函数,含 gsavBridge(GSAV 原生桥协议)
scripts/               # gsav-native-preflight · verify-native-production-config
docs/GSAV_NATIVE_QA.md # GSAV 原生设备 QA 手册

架构方向:diveo 作为轻量原生外壳,通过 react-native-webview 加载独立的 GSAV 托管 Web 应用(../gsav-hosting)。目录、CDN/R2 URL、播放与场景目录由 GSAV 托管侧拥有; diveo 只负责原生路由、WebView 加载/重试/返回与桥消息(见 utils/gsavBridge.ts)。


已知限制

限制 原因
4K / 1080P+ 需要大会员账号登录 B 站 API 策略限制
FLV 直播流不支持 HTML5 / ExoPlayer 均不支持 FLV,已自动选 HLS
Web 端需本地代理 B 站图片防盗链(Referer 限制)
动态流 / 投稿 / 点赞 需要 bili_jct CSRF Token,暂未实现
二维码 10 分钟过期 关闭登录弹窗重新打开即可刷新

贡献

本仓库的 B 站客户端部分已依法冻结(见上方公告),不再接受该部分的新功能 Issue / PR。 项目现以 GSAV 原生外壳(见 GSAV Native Shell)为继续开发方向, 该部分欢迎 Issue / PR。贡献前请阅读 CONTRIBUTING.md


免责声明

本项目仅供个人学习研究使用,不得用于商业用途。 所有视频内容版权归原作者及哔哩哔哩所有。 本项目与哔哩哔哩官方无任何关联。


License

MIT © 2026 diveo Contributors


如果这个项目对你有帮助,欢迎点一个 ⭐ Star!


请作者喝杯咖啡 ☕

如果这个项目对你有所帮助,欢迎请作者喝杯咖啡,你的支持是持续开发的最大动力,感谢每一位愿意打赏的朋友!


微信支付

支付宝

About

高颜值的第三方 B 站 React Native 客户端,支持安卓、H5、iOS | Bilibili-like app with DASH playback, danmaku, WBI sign & live streaming

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages