🎬 nowen-video
私人家庭影音中心 · 轻量级 Go + React 媒体服务器
项目介绍
nowen-video 是一个基于 Go + React 构建的轻量级家庭媒体服务器,类似 Emby / Jellyfin,但专为 NAS 部署 深度优化:单二进制 + SQLite,Docker 一键启动,零配置即可使用。
🎯 设计目标:让家里的每部电影、每集番剧,都能像 Netflix 一样优雅呈现 —— 完全属于你自己。
🖥️ PC 桌面客户端 已上线!支持 MKV / HEVC / HDR / 杜比视界 / DTS / Atmos 零转码播放。
核心特性
🎬 媒体库管理
- 自动扫描 MKV / MP4 / AVI / MOV / WebM / TS / RMVB 等格式
- FFprobe 自动提取视频/音频完整元数据
- 完整 NFO 文件解析(兼容 Kodi / Emby / Jellyfin)
- fsnotify 实时监控,新增/修改/删除自动同步
- 重复媒体智能检测与标记
📺 智能播放
⚡
直接播放
MP4/WebM/M4V 浏览器原生播放 + Range 断点续传
🔁
HLS 自适应流
MKV/AVI 按需转码,360p~原画多码率切换
📊
ABR 自适应码率
根据网络带宽自动切换清晰度,无缝播放
🎮
全功能控制
快捷键 / 书签 / 画中画 / 倍速 / 全屏
⚡ 硬件加速转码
自动检测并启用最优硬件加速方案:
支持的硬件加速
# Intel 核显 — 群晖 Celeron/Pentium/Core qsv → h264_qsv # Linux 通用 — Intel/AMD GPU vaapi → h264_vaapi # NVIDIA 独显 nvenc → h264_nvenc # 兜底 — 纯软件编码 none → libx264
🎨 多数据源元数据刮削(Provider Chain)
按优先级自动调度 6 大数据源,失败自动回落:
Provider Chain
10 → TMDb # 主数据源,电影/剧集 20 → 豆瓣 # 补充源,中文友好 25 → TheTVDB # 剧集增强 30 → Bangumi # 动画专项 50 → Fanart.tv # 高清图片 100 → AI # 兜底生成
🧠 AI 智能功能
集成 LLM,支持 OpenAI / DeepSeek / 通义千问 / Ollama 等 OpenAI 兼容 API:
- AI 智能搜索 — 自然语言转结构化查询("找一部关于太空的科幻片")
- AI 推荐理由 — 为推荐结果生成个性化文案
- AI 文件重命名 — 智能规范化文件名
- AI 助手 — 管理后台对话式媒体库管理
- AI 场景识别(V3) — 自动章节、精彩片段、封面候选
- ASR 语音识别 — 自动生成字幕
📡 Emby / Jellyfin 兼容
完整实现 Emby Server API(15 个模块,140+ 接口),让 Infuse / Kodi / Emby 原生客户端 无缝接入:
- JWT 复用 —— Emby AccessToken 直接是 nowen JWT,单点登录
- 虚拟 Season —— 通过
SeasonNum聚合 + ID 编码uuid|season|N - UUID ↔ 数字 ID 稳定映射(SHA-1 派生)
- 视频流直通 + Remux + HLS,支持 Range / HEAD
- 外挂字幕 + 内嵌字幕提取
架构概览
分层架构
┌─────────────────────────────────────────────────┐
│ 浏览器:React 18 + TS + Tailwind + HLS.js │
└────────────────────┬────────────────────────────┘
│ HTTP / WebSocket
▼
┌─────────────────────────────────────────────────┐
│ Gin HTTP Server (:8080) │
│ ├─ Handler(33+ 文件) │
│ ├─ Service(67+ 文件,含 Provider Chain) │
│ ├─ Repository(14+ 文件,GORM 数据访问) │
│ └─ SQLite (WAL 模式, 30+ 张表) │
└─────────────────────────────────────────────────┘
技术栈
🐹
后端
Go 1.22 · Gin · GORM · SQLite (WAL) · Zap · FFmpeg
⚛️
前端
React 18 · TS 5.4 · Vite 5 · Tailwind · Zustand · HLS.js
🐳
部署
Docker (Alpine 3.19) · Compose · 多阶段构建
🌐
国际化
中文 / English / 日本語
快速开始
🐳 Docker 部署(推荐)
Terminal
# 1. 克隆项目 $ git clone https://github.com/cropflre/nowen-video.git $ cd nowen-video # 2. 修改 docker-compose.yml # - 媒体目录挂载路径(如 /volume1/Media) # - NOWEN_SECRETS_JWT_SECRET(必改!) # - PUID/PGID 匹配宿主机(通过 `id` 命令查看) # 3. 启动 $ docker-compose up -d # 访问 http://你的NAS地址:8080 # 默认管理员: admin / admin123
💻 本地开发
Makefile 命令
# 前置要求: Go 1.22+, Node.js 20+, FFmpeg $ make dev # 开发模式运行后端 $ make dev-web # 开发模式运行前端 $ make build # 一键构建前端 + 后端 $ make docker # Docker 构建并启动
🔧 硬件加速(可选)
docker-compose.yml
devices: # Intel QSV / VAAPI / AMD GPU - /dev/dri:/dev/dri
未来规划(v1.0 ~ v1.2)
对标 Emby 的三大核心演进方向:
- 无缝动态码率(ABR) — Master Playlist + hls.js 基于带宽在切片边界自动切换
- 节流策略(Throttling) — 转码超前播放 N× 时暂停 FFmpeg,降低 GPU 空载功耗 > 40%
- 分段按需转码 — 跳转时按需启动对应起点转码(
-ss N*6),秒开 Seek
🎯 v1.0 验收指标:首帧时间 < 3s · 码率切换 < 2s · 单 GPU 并发 ≥ 4 路 1080p · 缓存命中率 > 70%
相关链接
📂 源码仓库: github.com/cropflre/nowen-video
💬 QQ 交流群:1093473044
📜 开源协议: GPL-3.0