站点介绍
JKVideo是一个功能丰富的第三方B站客户端,采用React Native框架开发,支持Android、iOS和Web三大平台。这个项目以其高颜值的界面设计和完整的功能实现而著称,提供了DASH播放、实时弹幕、WBI签名以及直播流媒体等核心功能。
项目采用现代化的技术栈,包括React Native 0.83、Expo SDK 55、TypeScript等,确保了代码的可维护性和跨平台兼容性。无论你是想要一个功能完整的B站客户端,还是想要学习React Native的实际应用,JKVideo都是一个很好的参考项目。
功能介绍
DASH完整播放
你可以体验完整的DASH播放能力,项目通过buildDashMpdUri()函数生成本地MPD文件,由ExoPlayer进行原生解码,支持1080P及4K HDR杜比视界等高清格式。这意味着你能够享受到接近官方客户端的播放体验。
完整弹幕系统
项目实现了完整的弹幕功能,包括视频弹幕和直播弹幕两个部分。视频弹幕采用XML时间轴同步机制,支持5车道飘屏覆盖;直播弹幕通过WebSocket实时接收,并支持舰长标记和礼物计数等互动功能。
WBI签名实现
你可以获得纯TypeScript手写的MD5加密实现,无需任何外部加密依赖。项目的nav接口支持12小时自动缓存,确保了API调用的效率和稳定性。
智能首页排布
首页采用BigVideoCard内联DASH静音自动播放,支持水平手势快进。直播卡片与普通视频卡片混排显示,提供了双列混排的智能布局方案。
全局迷你播放器
你可以在切换页面后继续在底部浮层中观看视频,VideoStore跨组件状态同步确保了播放进度的无缝衔接。
扫码登录
项目支持二维码生成和2秒轮询机制,响应头中的Cookie会自动提取SESSDATA,让登录过程变得简单便捷。
下载与局域网分享
你可以进行多清晰度的后台下载,内置HTTP服务器可以生成局域网QR码,同一Wi-Fi网络中的设备扫码即可直接播放下载的视频。
跨平台支持
项目支持Android、iOS和Web三个平台,使用ExpoGo扫码仅需5分钟即可运行,DevBuild则可以解锁完整的DASH播放功能。
使用方法
快速启动方案一:ExpoGo(无需编译)
这是最快速的体验方式,只需5分钟即可运行项目。请注意部分清晰度会受到限制,视频播放会降级为WebView方案。
git clone https://github.com/tiajinsha/JKVideo.git cd JKVideo npm install npx expo start
使用ExpoGoApp(Android或iOS)扫描终端显示的二维码即可运行。
完整功能方案二:DevBuild(推荐)
这个方案支持DASH1080P+原生播放和完整的弹幕系统,是获得最佳体验的方式。
npm install npx expo run:android # Android平台 npx expo run:ios # iOS平台(需要macOS和Xcode)
Web端运行
你也可以在Web浏览器中运行项目。
npm install npx expo start --web
Web端需要本地代理服务器来绕过图片防盗链限制,运行node scripts/proxy.js即可启动代理服务器,监听端口3001。
直接安装(Android)
前往项目的Releases页面下载最新的APK文件,无需编译即可直接安装使用。安装前需要在Android设置中开启"安装未知来源应用"的权限。
已知限制
4K和1080P+清晰度需要大会员账号登录,这是B站API的策略限制。FLV直播流暂不支持,因为HTML5和ExoPlayer都不支持该格式,项目会自动选择HLS方案。
Web端需要本地代理来处理B站图片的防盗链限制。动态流、投稿和点赞等功能需要bili_jct CSRF Token,目前还未实现。二维码有10分钟的过期时间,关闭登录弹窗重新打开即可刷新。
界面截图
安卓设备可以直接下载apk文件进行安装,我这类以模拟器界面为准,在未登录的情况下,软件主界面如下:

切换到直播tab页面界面如下:

直播界面如下:

弹幕列表如下:

除了常规的直接观看之外,你可以通过扫码进行登录:

我这边没有进行登录测试,下面是截图子Github官方项目作者提供的演示图:

额外补充
重要公告
需要特别说明的是,该项目已收到哔哩哔哩律师函,要求停止对B站API的调用及相关仿制行为。所以后续也不会有更新了,如果你觉得当前版本已经够用了,可以下载自行使用

