No description
  • TypeScript 96.8%
  • JavaScript 2.7%
  • PowerShell 0.5%
Find a file
2026-03-26 04:16:16 +00:00
.claude init 2026-03-26 12:15:40 +08:00
.github init 2026-03-26 12:15:40 +08:00
.kiro/steering init 2026-03-26 12:15:40 +08:00
.vscode init 2026-03-26 12:15:40 +08:00
app init 2026-03-26 12:15:40 +08:00
assets init 2026-03-26 12:15:40 +08:00
components init 2026-03-26 12:15:40 +08:00
hooks init 2026-03-26 12:15:40 +08:00
public init 2026-03-26 12:15:40 +08:00
scripts init 2026-03-26 12:15:40 +08:00
services init 2026-03-26 12:15:40 +08:00
shims init 2026-03-26 12:15:40 +08:00
store init 2026-03-26 12:15:40 +08:00
utils init 2026-03-26 12:15:40 +08:00
.env init 2026-03-26 12:15:40 +08:00
.gitignore init 2026-03-26 12:15:40 +08:00
app.json chore: bump version to v1.0.18 [skip ci] 2026-03-26 04:16:16 +00:00
App.tsx init 2026-03-26 12:15:40 +08:00
build-apk.ps1 init 2026-03-26 12:15:40 +08:00
CHANGELOG.md init 2026-03-26 12:15:40 +08:00
CONTRIBUTING.md init 2026-03-26 12:15:40 +08:00
dev-proxy.js init 2026-03-26 12:15:40 +08:00
eas.json init 2026-03-26 12:15:40 +08:00
index.ts init 2026-03-26 12:15:40 +08:00
LICENSE init 2026-03-26 12:15:40 +08:00
metro.config.js init 2026-03-26 12:15:40 +08:00
package-lock.json init 2026-03-26 12:15:40 +08:00
package.json chore: bump version to v1.0.18 [skip ci] 2026-03-26 04:16:16 +00:00
README.en.md init 2026-03-26 12:15:40 +08:00
README.md init 2026-03-26 12:15:40 +08:00
test-cmd.ps1 init 2026-03-26 12:15:40 +08:00
tsconfig.json init 2026-03-26 12:15:40 +08:00

JKVideo

JKVideo

A feature-rich React Native video client

DASH playback · Real-time danmaku · WBI signing · Live streaming · Cross-platform


React Native Expo TypeScript License: MIT Platform

中文 · Quick Start · Features · Contributing


Screenshots


Home · Inline Video · Live Cards

Video Detail · Info · Recommendations

Player · 4K HDR · Quality Switch

Downloads · LAN Share QR Code

Live Tab · Followed Streamers · Categories

Live Room · Real-time Danmaku · Guard Marks

Features

🎬 Full DASH Playback DASH stream → buildDashMpdUri() local MPD → ExoPlayer native decode, supports 1080P+ & 4K HDR

💬 Complete Danmaku System Video danmaku with XML timeline sync + 5-lane floating overlay; Live danmaku via WebSocket with guard marks & gift counting

🔐 WBI Signing Pure TypeScript MD5 implementation, zero external crypto dependencies, 12h auto-cached nav interface

🏠 Smart Home Layout BigVideoCard inline DASH muted autoplay + swipe-to-seek gesture + live card interleaving + dual-column grid

📺 Global Mini Player Persistent bottom overlay player survives navigation, VideoStore cross-component state sync

🔑 QR Code Login QR code generation + 2s polling + automatic SESSDATA extraction from response headers

📥 Download + LAN Sharing Multi-quality background download, built-in HTTP server generates LAN QR code for same-Wi-Fi playback

🌐 Cross-Platform Android · iOS · Web, Expo Go scan-to-run in 5 minutes, Dev Build unlocks full DASH playback


Tech Stack

Layer Technology
Framework React Native 0.83 + Expo SDK 55
Navigation expo-router v4 (file-based, Stack)
State Zustand
HTTP Axios
Storage @react-native-async-storage/async-storage
Video react-native-video (DASH MPD / HLS / MP4)
Fallback react-native-webview (HTML5 video injection)
Pager react-native-pager-view
Icons @expo/vector-icons (Ionicons)

Quick Start

Option 1: Expo Go (5 minutes, no build required)

Some quality options limited; video falls back to WebView

git clone https://github.com/tiajinsha/JKVideo.git
cd JKVideo
npm install
npx expo start

Scan the QR code with Expo Go on Android or iOS.

Supports DASH 1080P+ native playback, full danmaku system

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

Option 3: Web

npm install
npx expo start --web

Web requires a local proxy server for image anti-hotlinking: node scripts/proxy.js (port 3001)

Direct Install (Android)

Download the latest APK from Releases — no build needed.

Enable "Install from unknown sources" in Android settings


Project Structure

app/
  index.tsx            # Home (PagerView Hot/Live tabs)
  video/[bvid].tsx     # Video detail (player + info/comments/danmaku)
  live/[roomId].tsx    # Live room (HLS player + real-time danmaku)
  search.tsx           # Search page
  downloads.tsx        # Download manager
  settings.tsx         # Settings (quality + logout)

components/            # UI components (player, danmaku, cards, etc.)
hooks/                 # Data hooks (video list, stream URLs, danmaku, etc.)
services/              # Video platform API wrapper (axios + cookie interceptor)
store/                 # Zustand stores (auth, download, playback, settings)
utils/                 # Utilities (format, image proxy, MPD builder)

Known Limitations

Limitation Reason
4K / 1080P+ requires premium account API restriction
FLV live streams not supported Neither HTML5 nor ExoPlayer support FLV; HLS auto-selected
Web requires local proxy Image CDN Referer anti-hotlinking
Feed / like / collect features Requires bili_jct CSRF token, not yet implemented
QR code expires after 10 minutes Close and reopen the login modal to refresh

Contributing

Issues and PRs are welcome! Please read CONTRIBUTING.md first.


Disclaimer

This project is for personal learning and research purposes only. Not for commercial use. All video content copyright belongs to the original authors and the respective platforms.


License

MIT © 2026 JKVideo Contributors


If this project helps you, please give it a Star!