本项目面向个人学习与研究,与哔哩哔哩官方无任何关联,未获得官方授权或背书。源码采用 MIT 协议,用途说明不限制 MIT 的授权范围;第三方组件与参考项目见 THIRD_PARTY.md。
macOS 新手指南和更新说明可从“帮助”菜单或“设置 → 关于”打开;首次安装或相应版本首次启动会自动展示一次。完整记录见 CHANGELOG.md。
面向 macOS 26+、iOS / iPadOS 26+ 的非官方哔哩哔哩客户端,主要使用 SwiftUI、Liquid Glass 和 AVPlayer。本次双端版本为 macOS 1.1.4(build 15,Apple silicon)与 iOS / iPadOS 0.1.4 开发预览(build 8,需要自签的 IPA)。安装文件以 v1.1.4 发布页 的 Assets 为准。
从 GitHub Releases 下载 Apple silicon 发布包,解压后将 Bilibili NEXT.app 放入应用程序目录。扫码登录后,登录信息保存在 macOS 钥匙串。开发构建使用本机已有的 Apple Development 签名;从早期临时签名版本迁移时,系统可能要求重新授权一次。
当前发布包未进行 Developer ID 公证,其他 Mac 的系统信任流程尚未验证;也可以下载源码自行构建。
移动端增加返回时继续/停止小窗播放选项、单双列视频布局和下载批量管理;删除缓存不会删除外部导出文件,索引保存失败保留记录供重试。iPhone 视频画面贴齐两侧,标题先于播放选项;支持横拖调进度、下滑返回及手动全屏请求横屏。iPad 宽窗口可手动收起和恢复侧栏。
Mac 收紧页面、搜索栏和视频卡片布局,增加侧栏显隐、动态类型筛选和 F 全屏快捷键,扩大消息点击区域。两端改进普通弹幕连续补载,Mac 弹幕设置在明亮画面上保持文字对比。真机方向锁、长时锁屏、音频中断及部分在线连续后台场景仍待完整验收。
详细变化见 CHANGELOG.md,验证与限制见 QA.md 和 IOS_STATUS.md。弹幕下载失败的既有反馈仍在待修列表,未据本次更新宣称解决。
macOS 功能:31 个视频主分区;播放页相关推荐、标签、合集与列表队列、自动下一集、循环、字幕、章节和进度缩略图;视频与用户搜索、排序、时长与日期筛选、搜索历史和联想;收藏夹编辑与批量管理、稍后再看移除与已看完清理;动态点赞、转发与图文发布;评论图片、表情选择;私信表情、图片发送和两分钟内撤回;弹幕列表、历史与云端屏蔽规则、可选的本机人物防挡;推荐反馈、举报与黑名单。实际可用内容取决于视频、登录权限和官方接口。画中画入口显示系统 AVPlayer 控件,再使用系统画中画按钮。
私信使用每个会话独立的滚动位置,加载历史时保持当前阅读位置;会话分页使用服务端最后一条记录的时间戳,重复分页或网络失败会显示提示。人物防挡默认关闭,使用本机 Vision 分割,开启时会增加播放处理开销;与网页端算法不完全相同。表情图片目前显示静态帧。分区沿用当前网页公开的主分区,未启用的子分类不显示。
- 搜索关键词、BV 号或视频链接;支持推荐、热门、关注视频动态。
- 播放页可切换分集、清晰度、速度,提供常驻原生进度、暂停、音量控制,全屏沿用当前窗口和播放器;双击画面或按 F / ⌃⌘F 切换全屏,Esc 退出。播放器区域的鼠标滚轮交给页面滚动,避免误触进度。
- 播放时切换页面,右下角出现 Liquid Glass 迷你播放器,视频继续播放。可暂停/继续、返回播放页或关闭;返回保留当前进度,关闭才停止播放。
- 空格暂停/继续,左右方向键单击跳转 5 秒,按住右方向键临时加速,松开恢复原速;支持快速播放的本地媒体使用 3×,在线 HLS 使用 2× 并明确提示,避免系统退化为关键帧快进而卡住音画;输入文字时不接管这些按键。
- 播放页显示视频发布时间。打开视频后焦点转入播放器,避免搜索框截走快捷键;主动编辑文字时保留输入行为。
- 自动恢复各分集的观看位置;接近片尾的记录重新打开时从头播放,避免从最后一个媒体片段起播。
- 播放采用按需 Range 请求和本机播放桥接。视频和音频流式读取,不需要先完整下载。设置中的“视频加载并发”控制 1–32 路视频分块读取上限,结果按顺序交给播放器,切换视频或清晰度后生效。
- 起播同时试读接口提供的 CDN,选择有效来源并复用连接;按最多 1 MiB 的页读取,按顺序交付。失败块保留前缀并补传剩余字节;备用 CDN 必须匹配原媒体的初始化信息、索引和文件长度。失败区间经身份校验并成功补传后,后续请求优先沿用可用线路,已在途请求继续完成。超时按连续无数据判断,正常慢速传输不会因为单块耗时较长而反复换线;失败时降低并发,连续成功后逐步恢复到设置上限。
- 默认开启“持续预读到片尾”:播放请求优先,后台将后续视频和音频写入
~/Library/Caches/BiliGlass/Playback。默认上限 8 GB,可设置 1–32 GB;保留磁盘空间,空间不足时继续按需播放。完成预读不会暂停或结束视频。切换视频、关闭播放页或正常退出后删除本次临时目录;异常退出遗留目录在下次启动时清理。手动保存的离线缓存独立保留。 - 右上角透明玻璃浮窗显示播放详情,打开不暂停视频;显示实际视频/音频 CDN、编码、码率、帧率、实际下载速度、前向缓冲、当前/有效/设置并发、峰值、换线和补传次数;缓冲时在画面显示状态。
- 4K、8K、HDR、杜比视界仅在该视频、账号和设备实际提供支持时显示。8K 和 PQ HDR 已实测出画;杜比视界改用完整的原生分段播放,避免合轨时仅识别首个 5 秒片段;8.4 样本解码轨道报告 HLG,尚未独立验证逐帧杜比增强处理。
- “缓存到应用”保存在独立缓存目录;“下载到其他位置”允许选择文件夹。下载页查看进度、暂停、继续、离线播放和管理记录。
- 下载使用分块并发,可在设置中调整每个任务的连接数及同时下载任务数。暂停或退出后保留完成块与未完成块的已收前缀,继续时重新获取地址并检查媒体身份;使用共享连接和最多 1 MiB 的网络分段,完成后移入已完成列表并更新角标。合轨完成后保存恢复检查点;重试复用相同媒体文件,不覆盖不同的同名文件。
- 旧缓存中系统不能正确识别的
hev1视频,会生成独立的兼容副本;只调整满足条件的编码标记,保留原缓存和媒体内容。 - 默认同时保存弹幕 JSON 和 XML;离线播放使用本地 JSON,XML 可用于其他播放器。
- 普通滚动、反向、顶部、底部弹幕、高级定位弹幕(mode 7)和 BAS(mode 9)在应用内原生绘制。BAS 支持文字、矢量路径、模板、串并行动画、父子布局与旋转缩放;有弹幕时按屏幕刷新回调更新,暂停、隐藏和弹幕空档停止显示回调;文字阴影随字形缓存。暂停和回拖按视频时间重建画面。旧版可执行代码弹幕(mode 8)暂不支持,复杂 BAS 作品仍可能存在兼容差异。
- 评论按服务端游标分页,短页不会提前结束;重复游标只有在没有新评论时才显示重试。评论和视频列表支持下滑自动加载,可在设置中关闭。
- 评论支持排序、分页、楼中楼、回复、点赞、删除自己的评论和服务端提供的 IP 属地。主列表按可见楼层加载视图,较长评论可以展开。评论图片可在应用内打开、缩放、切换及保存原图,过渡动画遵循系统“减少动态效果”设置。
- 评论中的普通表情和组合表情包按服务端图片与尺寸嵌入原生文本,支持换行、选择与复制原文;复用图片缓存,失败时保留表情名称。动画图片目前显示静态帧。
- 回复合并保留已有楼中楼;刷新失败时保留当前列表。提交成功后保留本次文字与服务端提示,接口未返回评论内容时明确提示等待确认,不将本地提交记录等同于公开可见。
- 视频互动栏显示点赞、投币、收藏和分享数量。支持点赞/取消,选择投 1 或 2 枚硬币及同时点赞;按视频类型、已投数量和账户余额限制可投数量,不能选 2 枚时直接显示原因。增加原生“一键三连”确认面板,调用统一接口,分别保留服务端确认的点赞、投币和收藏结果;投币与三连不自动重试。
- 收藏支持多收藏夹勾选、取消收藏、新建公开/私密收藏夹。点击“保存”才应用视频收藏变更;创建收藏夹会立即提交。
- 分享支持复制链接、复制 BV 号、二维码和 macOS 系统分享,可附带当前分集和播放位置。链接不含登录信息或跟踪参数。
- 互动提交时防重复点击;网络结果不确定时要求先刷新状态,投币不会自动重试。正常操作使用原生玻璃面板。
- 个人中心提供投稿、收藏、稍后再看、观看记录、缓存和消息入口。观看记录可切换「账号历史」与「本机记录」;账号历史按服务端游标自动分页,并合并本机记录,同一视频保留最近观看的分 P 和进度。登录后新产生的观看进度会同步到账户,可在设置中关闭;缓存视频也保留观看记录。清空本机记录不会删除账号历史。
- 评论里的 B 站视频及 b23 短链接显示原生封面和标题卡片,点击在应用内播放。
- 私信会话、文字收发、图片和视频分享、回复我的、@ 我的、收到的赞和系统通知使用原生界面。
- 视频分享显示封面、标题、作者,兼容旧 AV 分享,点击后在应用内播放;失效分享显示错误。非视频分享的外部链接仍可能在浏览器打开。
- 动态、动态评论、关注/粉丝列表、合集及合集视频、账户信息使用原生界面。
- 设置页使用原生 Liquid Glass 侧栏和分组卡片,提供深色/浅色/跟随系统、通透/柔和玻璃、自定义背景图片及模糊、动画、自动播放、恢复进度、账号进度同步、评论排序、视频加载并发、下载连接数、同时任务数、前向缓冲、弹幕和缓存管理。
- 自定义背景模糊在后台生成并缓存;保持原生玻璃材质,避免每帧重新模糊背景。设置窗口可调整大小,侧栏与顶部工具栏统一高度和间距。
- 返回推荐/热门时复用近期列表;手动刷新保留原内容直到新内容返回。启动复用当前账号的首页快照,再获取新推荐;封面保留有容量上限的解码缓存。
- 官方验证码在独立验证面板中打开,只有这一类验证流程使用 WebKit;需要用户本人完成。面板复用本应用登录,不读取 Edge 的登录凭据。
新观看进度按约 30 秒限频同步,暂停或离开播放页时提交当前位置;退出进程前保存本机进度,不保证退出时网络请求已完成。旧版本积累的本机记录会合并显示,不批量上传。同步失败时保留本机记录。图片支持 JPEG、PNG、WebP、GIF,单张最大 10 MB。动态与消息发送失败保留草稿;网络结果不确定时应先刷新确认,应用不自动重发。番剧、直播和创作中心仍在浏览器打开,暂未覆盖网页端所有服务。
需要 macOS 26+、Xcode 26+ 与 Swift 6.2+。
swift test
swift test --package-path Vendor/BiliKitCore
Scripts/build-app.sh提交源码后可运行 Scripts/package-release.sh 生成 macOS ZIP、DMG、未签名 iOS IPA、源码包和 SHA-256 校验值。完整开发约定见 CONTRIBUTING.md。
构建脚本优先选择本机 Apple Development 签名;可通过 SIGNING_IDENTITY 指定已有签名身份。没有可用身份时使用临时签名,此时重新构建可能再次触发钥匙串授权。不要在多次构建中交替更换签名身份。
联网集成验证使用 BILIGLASS_LIVE_TEST=1 BILIGLASS_DOWNLOAD_TEST=1 swift test,只读取公开数据、生成二维码、下载测试视频及离线播放,不发送评论或弹幕。
可用 BILIGLASS_BAS_FIXTURE=/absolute/path/to/danmaku.json swift test 验证真实 BAS 数据,测试媒体和第三方弹幕内容不随源码分发。
第三方组件和修改见 THIRD_PARTY.md。实际验证范围和限制见 QA.md。
项目代码采用 MIT License。内含 BiliKit-Mac 的 MIT 播放组件,保留原作者许可;下载恢复参考 Bilibili-thread-ripper,另参考 IINA、BAS 和社区 API 文档。完整来源、版本与本地改动见 THIRD_PARTY.md。本项目与哔哩哔哩官方无隶属关系,媒体和商标归各自权利人所有。
两端采用统一的扁平化 SVG 图标,矢量源文件与资源生成方法 随源码提供。具体测试和未覆盖功能见 QA.md,版本说明见 RELEASE_NOTES.md。
本次 IPA 文件为 v1.1.4 双端发布页 的 Bilibili-NEXT-0.1.4-iOS-self-sign.ipa,从 Assets 下载。此 IPA 需要自行签名后安装,不能直接点击安装。 包内仅含不带个人证书的临时签名结构,方便签名工具识别。使用自己的 Apple Account / 开发者证书和适用的描述文件完成签名;开发签名按系统提示启用开发者模式并信任开发者。签名有效期、设备限制和续签要求由自己的签名方式决定。当前没有 TestFlight / App Store 版本。安装与构建说明见 IOS_INSTALL.md。
已有独立的原生 iOS Xcode 工程:Apps/iOS/BilibiliNEXT.xcodeproj。当前实现、真机验证和待迁移功能见 IOS_STATUS.md;完整目标范围见 IOS_APP_PLAN.md。
请克隆整个仓库:iOS 工程直接引用 Sources/BiliGlass 的共享源码和 Vendor/BiliKitCore 本地依赖,单独下载 Apps/iOS 无法构建。当前源码已使用 iOS 27 SDK 的可用性声明,构建需 Xcode 27+,部署目标仍为 iOS 26。模拟器构建无需签名;真机使用你自己的 Apple 开发者团队。
Scripts/build-ios.sh
# 真机:填写自己的签名团队和连接设备 UDID
IOS_PLATFORM=device DEVELOPMENT_TEAM=YOUR_TEAM IOS_DEVICE_ID=YOUR_UDID Scripts/build-ios.sh也可在 Xcode 打开工程,选择 BilibiliNEXT Scheme。工程可通过 python3 Scripts/generate-ios-project.py 重新生成。两端安装包均需手动下载更新;源码更新不会自动替换已安装的应用。