KVideo:基于 Next.js 16 的本地优先视频聚合平台

KVideo 是一个基于 Next.js 16React 19 和 Tailwind CSS v4 构建的现代化、自托管的视频聚合与播放平台,专注于本地数据控制、多源视频聚合极致视觉体验。所有用户数据(搜索历史、观看记录等)均存储在本地浏览器,不依赖任何远程服务,真正实现“你的数据,你做主”。

KVideo:基于 Next.js 16 的本地优先视频聚合平台插图

核心设计理念:Liquid Glass(液态玻璃)

KVideo 的 UI 基于自研的 “Liquid Glass” 设计系统,融合现代美学与物理直觉:

  • 玻璃拟态:通过 backdrop-filter: blur() 实现半透明磨砂效果,营造轻盈悬浮感
  • 统一圆角:全站仅使用 rounded-2xl 与 rounded-full,保持视觉一致性
  • 光影反馈:悬停/聚焦时触发内发光(box-shadow: inset),模拟光线被“捕获”的动态
  • 物理动画:采用 cubic-bezier(0.34, 1.56, 0.84, 1) 等曲线,实现自然缓动
  • 深度分层:清晰的 Z 轴层级,强化元素间的空间关系与交互反馈

✨ 核心功能

🎥 智能视频播放

  • HLS 原生支持:直接播放 .m3u8 流,无需转码
  • Service Worker 缓存:智能预加载与片段缓存,提升重复观看体验
  • 后台下载:基于观看历史,自动在后台缓存视频(需浏览器支持)
  • 完整控制:进度条、音量、倍速(0.5x–2.0x)、画中画、全屏
  • 移动端优化:手势滑动调节进度/音量,专为触屏设计的播放器 UI

🔍 多源并行搜索

  • 聚合搜索:同时查询多个视频源,结果合并展示
  • 自定义源管理:用户可添加、编辑或禁用视频源(支持 JSON/YAML 格式)
  • 统一解析器:抽象层自动适配不同源的数据结构
  • 搜索历史:本地保存,支持一键重搜
  • 多维排序:按评分、发布时间、相关性等排序结果

🎬 豆瓣深度集成

  • 自动拉取信息:影片评分、导演、演员、剧情简介、海报
  • 专业影评展示:整合豆瓣用户热评与媒体评价
  • 智能推荐:基于当前影片的相似作品推荐(需豆瓣 API)

注:豆瓣数据通过公开接口获取,不存储用户行为。

💾 观看历史管理

  • 自动记录进度:精确到秒的播放位置保存
  • 断点续播:返回视频时自动跳转至上次观看位置
  • 本地隐私:所有记录仅存于 localStorage,不上传、不追踪

🌙 动态主题系统

  • 深色/浅色模式:支持系统偏好同步或手动切换
  • CSS Variables 驱动:主题切换无需重载页面
  • 平滑过渡动画:颜色与背景渐变自然过渡

⌨️ 无障碍支持

  • 完整键盘导航:播放器、搜索、设置均可通过键盘操作
  • ARIA 标签:符合 WCAG 2.2 标准
  • 高对比度文本:确保文字与背景对比度 ≥ 4.5:1
  • 语义化 HTML:提升屏幕阅读器兼容性

🔐 隐私与访问控制

KVideo 严格遵循本地优先(Local-First) 原则:

  • 所有数据存储于浏览器 localStorage 或 IndexedDB
  • 无遥测、无分析脚本、无用户行为追踪
  • 视频源由用户自行配置,不内置任何第三方商业源

密码保护(可选)

支持两种密码访问模式,适合自托管场景:

方式一:本地密码(设备级)

  • 在设置页启用并添加密码
  • 仅对当前浏览器生效
  • 支持多密码、可随时管理

方式二:环境变量密码(部署级)

适用于 Docker 或 Vercel 部署:

# Docker
docker run -d -p 3000:3000 \
  -e ACCESS_PASSWORD=your_secret \
  --name kvideo kuekhaoyang/kvideo:latest
# Vercel 环境变量
ACCESS_PASSWORD = your_secret
  • 全局生效,所有访客需输入密码
  • 与本地密码兼容(任一正确即可解锁)
  • 更改需重启服务或重新部署

🛠 技术栈

  • 框架:Next.js 16(App Router + Server Components)
  • 前端:React 19 + TypeScript
  • 样式:Tailwind CSS v4(@layer 组织设计系统)
  • 状态:Zustand(轻量、TS 友好)
  • 缓存:Workbox + Custom Service Worker
  • 播放器:自研 HLS 播放器(基于 Media Source Extensions)
  • 部署:支持 Docker、Vercel、静态导出

评论