飞牛 NAS 接入夸克网盘流畅播放部署手册
本文介绍如何在飞牛 NAS 上,通过 OpenList + QuarkTV + SmartStrm + 飞牛影视,实现夸克网盘内容不下载到 NAS、本地只保存 STRM 文件、飞牛影视流畅播放电影和电视剧。
1. 方案目标
很多人把夸克网盘直接挂载到飞牛影视后,会遇到播放卡顿、加载慢、拖动进度条困难的问题。
本方案目标是:
不把几百 GB 视频下载到 NAS
不依赖飞牛原生网盘挂载播放
不通过 WebDAV / FUSE 直接读原文件
只在 NAS 本地保存 KB 级 STRM 文件
飞牛影视通过 STRM 播放夸克转码流
最终链路:
夸克网盘
→ OpenList QuarkTV streaming
→ SmartStrm 生成 STRM
→ 飞牛影视扫描 STRM
→ 大屏流畅播放
2. 方案原理
2.1 为什么飞牛原生挂载容易卡?
飞牛原生挂载、WebDAV、rclone FUSE 这类方式,本质上通常是在尝试读取网盘里的原始文件。
如果原文件是 4K REMUX 或高码率视频,可能几十 GB,一个视频码率动辄几十 Mbps。
这种情况下,网盘下载速度、FUSE 中间层、播放器读取方式都会影响播放体验。
2.2 STRM 是什么?
STRM 文件本质上就是一个普通文本文件,里面通常只有一行 URL,例如:
http://NAS_IP:5244/d/quark-tv/xxx/xxx.mp4?sign=xxxx
飞牛影视扫描到 STRM 文件后,会把它当成一个视频入口。播放时,播放器会去请求 STRM 里面的 URL。
所以 NAS 本地不需要保存真实视频文件,只保存很小的 .strm 文件。
2.3 为什么要用 QuarkTV streaming?
QuarkTV 的 streaming 模式可以调用夸克的转码播放流。
它不是直接拉原始几十 GB 文件,而是获取夸克服务端处理后的流式视频。
优点:
播放更流畅
拖动进度条更快
带宽压力小
NAS 不需要下载原视频
缺点:
不是原盘画质
通常是服务端转码后的 H.264 / AAC 视频流
码率低于原始文件
如果追求极致原盘画质,本方案不一定适合。
如果日常大屏观看,本方案体验很好。
3. 准备条件
需要准备:
一台飞牛 NAS
Docker 和 Docker Compose
一个可用的夸克网盘账号
飞牛影视
OpenList
SmartStrm
本文示例假设:
NAS 局域网 IP:192.168.x.x
Docker 项目目录:/path/to/docker/quark-fntv
STRM 本地目录:/path/to/docker/quark-fntv/strm/library
OpenList 端口:5244
SmartStrm 端口:8024
实际部署时,请替换成自己的路径和 IP。
4. 推荐目录结构
/path/to/docker/quark-fntv
**── docker-compose.yml
**── openlist
**── smartstrm
** **── config
** **── logs
**── strm
**── library
**── quark-movie
**── quark-tv
说明:
openlist:OpenList 配置
smartstrm/config:SmartStrm 配置
smartstrm/logs:SmartStrm 日志
strm/library:最终给飞牛影视扫描的 STRM 文件目录
5. 先确认 NAS 环境
SSH 登录 NAS 后执行:
hostname -I
docker --version
docker compose version
确认能看到:
NAS 局域网 IP
Docker version
Docker Compose version
6. 创建目录
把下面的 /path/to/docker/quark-fntv 替换成你自己的 Docker 持久化目录。
mkdir -p /path/to/docker/quark-fntv/openlist
mkdir -p /path/to/docker/quark-fntv/smartstrm/config
mkdir -p /path/to/docker/quark-fntv/smartstrm/logs
mkdir -p /path/to/docker/quark-fntv/strm/library
7. 确认用户 UID / GID
执行:
id 当前用户名
例如可能得到:
uid=1000(nasuser) gid=1001(users)
记下:
UID=1000
GID=1001
后面 SmartStrm 建议用这个用户运行,避免生成的 STRM 文件变成 root:root 导致飞牛影视读不到。
8. docker-compose.yml 示例
进入项目目录:
cd /path/to/docker/quark-fntv
创建 docker-compose.yml:
services:
openlist:
image: openlistteam/openlist:latest-lite
container_name: openlist-quark
restart: unless-stopped
user: "0:0"
ports:
- "5244:5244"
environment:
- UMASK=022
- TZ=Asia/Shanghai
volumes:
- /path/to/docker/quark-fntv/openlist:/opt/openlist/data
- /path/to/docker/quark-fntv/strm:/opt/openlist/strm
smartstrm:
user: "1000:1001"
image: cp0204/smartstrm:latest
container_name: smartstrm-quark
restart: unless-stopped
ports:
- "8024:8024"
environment:
- PORT=8024
- ADMIN_USERNAME=admin
- ADMIN_PASSWORD=请自行修改
- TZ=Asia/Shanghai
volumes:
- /path/to/docker/quark-fntv/smartstrm/config:/app/config
- /path/to/docker/quark-fntv/smartstrm/logs:/app/logs
- /path/to/docker/quark-fntv/strm/library:/strm
注意把:
user: "1000:1001"
替换成你的 NAS 用户 UID/GID。
例如你的用户是:
uid=1000
gid=1001
那就写:
user: "1000:1001"
9. 启动容器
cd /path/to/docker/quark-fntv
docker compose up -d
查看状态:
docker compose ps
正常应该看到:
openlist-quark Up
smartstrm-quark Up
10. 登录 OpenList
查看 OpenList 初始密码:
docker logs --tail=100 openlist-quark
找到类似:
Successfully created the admin user and the initial password is:
登录:
http://NAS_IP:5244
用户名:
admin
密码:
日志中的初始密码
建议登录后修改管理员密码。
11. 添加 OpenList QuarkTV 存储
进入:
OpenList 后台 → 管理 → 存储 → 添加
填写:
驱动:Quark TV / QuarkTV / 夸克TV
挂载路径:/quark-tv
链接方法:流式 / streaming
关键配置:
link_method = streaming
不要选普通下载模式。
本方案的流畅播放依赖 QuarkTV 的 streaming 流式播放。
12. QuarkTV 扫码授权
添加 QuarkTV 时,可能会出现:
Failed init storage: 用户未确认授权
或者:
need verify: <body> <img src="data:image/jpeg;base64,..."/>
解决方法:
- 从报错中复制
data:image/jpeg;base64,...;
- 粘贴到浏览器地址栏;
- 浏览器会显示二维码;
- 用手机夸克 App 扫码;
- 确认授权;
- 回到 OpenList 保存。
如果提示二维码过期,删除 /quark-tv 后重新添加,再快速扫码。
13. 确认 QuarkTV 可用
OpenList 前台进入:
/quark-tv
如果能看到夸克网盘文件,就说明 QuarkTV 挂载成功。
14. 关闭签名限制
在 OpenList 存储设置里,确认类似下面的选项是关闭状态:
启用签名
Sign
如果强制签名开启,飞牛影视播放 STRM 时可能 401,因为播放端不会带 OpenList 登录态。
15. 登录 SmartStrm
访问:
http://NAS_IP:8024
使用 docker-compose 中设置的用户名和密码登录。
如果使用上面的示例:
用户名:admin
密码:自行设置的密码
16. SmartStrm 添加 OpenList 存储
SmartStrm 中进入:
存储管理 → 添加存储
填写:
存储名称:quarktv
驱动:OpenList / AList
OpenList 地址:http://NAS_IP:5244
Token:OpenList 后台获取
OpenList Token 位置一般在:
OpenList → 管理 → 设置 → 其他 → 令牌 / Token
保存后,在 SmartStrm 文件浏览器中确认可以看到:
/quark-tv
17. 先生成一个测试 STRM
不要一开始扫整个网盘。
建议先选一个小目录测试。
例如:
/quark-tv/资源库/某个电影目录
创建测试任务:
任务名称:test
使用存储:quarktv
扫描路径:/quark-tv/资源库/某个电影目录
STRM 保存到:/strm/test
增量生成模式:开启
目录时间检查:开启
执行时间 Crontab:留空
运行任务后,NAS 本地应该生成:
/path/to/docker/quark-fntv/strm/library/test/xxx.strm
18. 检查 STRM 内容
执行:
FILE="$(find /path/to/docker/quark-fntv/strm/library/test -type f -name '*.strm' | head -n 1)"
head -c 300 "$FILE"
echo
正常应该看到:
http://NAS_IP:5244/d/quark-tv/...
不能出现:
127.0.0.1
localhost
如果出现 127.0.0.1 或 localhost,播放端会请求自己而不是 NAS,导致播放失败。
19. 测试 STRM 链接是否可用
执行:
FILE="$(find /path/to/docker/quark-fntv/strm/library/test -type f -name '*.strm' | head -n 1)"
URL="$(cat "$FILE")"
curl -L \
-H "Range: bytes=0-1048575" \
--connect-timeout 10 \
--max-time 30 \
-o /tmp/quark-test.bin \
-w "\nHTTP_CODE=%{http_code}\nSIZE=%{size_download}\nCONTENT_TYPE=%{content_type}\n" \
"$URL"
正常结果类似:
HTTP_CODE=206
SIZE=1048576
CONTENT_TYPE=video/mp4
这说明视频流可以正常访问。
20. 检查 SmartStrm 权限
检查 SmartStrm 当前运行用户:
docker exec smartstrm-quark sh -lc 'id && umask'
建议结果类似:
uid=1000 gid=1001
如果是:
uid=0(root)
并且新生成的 STRM 文件是:
-rw-rw---- root:root
飞牛影视可能无法读取。
建议:
- 把 SmartStrm 的
user 改成 NAS 普通用户的 UID/GID;
- 修改目录归属;
- 重建容器。
示例:
sudo chown -R 1000:1001 /path/to/docker/quark-fntv/smartstrm
sudo chown -R 1000:1001 /path/to/docker/quark-fntv/strm
cd /path/to/docker/quark-fntv
docker compose up -d --force-recreate smartstrm
21. 创建正式电影任务
SmartStrm 创建任务:
任务名称:quark-movie
任务类型:生成 STRM
使用存储:quarktv
扫描路径:/quark-tv/资源库/电影
STRM 保存到:/strm/quark-movie
增量生成模式:开启
目录时间检查:开启
执行时间 Crontab:0 */6 * * *
说明:
0 */6 * * * = 每 6 小时自动扫描一次
NAS 本地电影 STRM 目录:
/path/to/docker/quark-fntv/strm/library/quark-movie
22. 创建正式电视剧任务
SmartStrm 创建任务:
任务名称:quark-tv
任务类型:生成 STRM
使用存储:quarktv
扫描路径:/quark-tv/资源库/电视剧
STRM 保存到:/strm/quark-tv
增量生成模式:开启
目录时间检查:开启
执行时间 Crontab:0 */6 * * *
NAS 本地电视剧 STRM 目录:
/path/to/docker/quark-fntv/strm/library/quark-tv
23. 飞牛影视添加媒体库
23.1 添加电影库
飞牛影视中添加:
类型:电影
目录:/path/to/docker/quark-fntv/strm/library/quark-movie
23.2 添加电视剧库
飞牛影视中添加:
类型:电视剧
目录:/path/to/docker/quark-fntv/strm/library/quark-tv
添加后扫描媒体库,测试播放。
如果可以播放,并且拖进度条响应快,说明部署成功。
24. 开启飞牛影视自动扫描
进入飞牛影视设置,找到类似:
定时任务
自动扫描
扫描媒体库文件
建议开启:
定时扫描媒体库
这样完整自动流程是:
夸克网盘新增资源
→ SmartStrm 每 6 小时自动生成 STRM
→ 飞牛影视定时扫描媒体库
→ 新内容自动出现在飞牛影视
如果想马上看到新内容:
1. SmartStrm 手动运行对应任务
2. 飞牛影视手动扫描对应媒体库
25. 日常维护
25.1 查看容器状态
cd /path/to/docker/quark-fntv
docker compose ps
正常:
openlist-quark Up
smartstrm-quark Up
25.2 重启服务
cd /path/to/docker/quark-fntv
docker compose restart
只重启 OpenList:
docker compose restart openlist
只重启 SmartStrm:
docker compose restart smartstrm
25.3 更新镜像
cd /path/to/docker/quark-fntv
docker compose pull
docker compose up -d
更新前建议备份配置目录。
26. 常见问题排查
26.1 飞牛影视扫不到文件
检查 STRM 是否生成:
find /path/to/docker/quark-fntv/strm/library/quark-movie -type f -name '*.strm' | wc -l
find /path/to/docker/quark-fntv/strm/library/quark-tv -type f -name '*.strm' | wc -l
如果数量没变化:
去 SmartStrm 手动运行任务
如果数量已经变化:
去飞牛影视手动扫描媒体库
26.2 能扫到,但播放失败
检查 STRM 内容:
FILE="$(find /path/to/docker/quark-fntv/strm/library/quark-movie -type f -name '*.strm' | head -n 1)"
cat "$FILE"
正常:
http://NAS_IP:5244/d/quark-tv/...
错误:
http://127.0.0.1:xxxx
http://localhost:xxxx
如果是 127.0.0.1 或 localhost,需要检查 SmartStrm / OpenList 地址配置。
26.3 播放报 401 / 403
可能原因:
OpenList 签名限制开启
guest / 匿名访问权限不足
QuarkTV 授权失效
处理方法:
检查 OpenList 存储是否关闭“启用签名”
检查 QuarkTV 是否还能浏览网盘文件
必要时重新扫码授权
26.4 STRM 权限不对
检查权限:
find /path/to/docker/quark-fntv/strm/library/quark-movie -type f -name '*.strm' -exec stat -c '%A %U:%G %n' {} \;
如果是:
root:root
建议让 SmartStrm 使用 NAS 普通用户 UID/GID 运行。
检查 SmartStrm 用户:
docker exec smartstrm-quark sh -lc 'id'
26.5 QuarkTV 二维码过期
重新添加或编辑 QuarkTV 存储,快速扫码。
如果页面没有显示二维码,而是显示:
data:image/jpeg;base64,...
可以复制这一整段到浏览器地址栏打开,浏览器会显示二维码。
26.6 画质不如原盘
这是正常现象。
QuarkTV streaming 走的是夸克转码流,不是原始文件。
优点是流畅,缺点是画质低于原盘。
27. 备份建议
建议备份整个项目目录:
/path/to/docker/quark-fntv
重点备份:
docker-compose.yml
openlist 配置
smartstrm 配置
STRM 文件本身可以重新生成,不是最关键。
28. 恢复方法
迁移或重装后,把项目目录放回原位置,执行:
cd /path/to/docker/quark-fntv
docker compose up -d
然后检查:
docker compose ps
如果容器正常运行,OpenList 和 SmartStrm 配置还在,一般就可以恢复。
29. 总结
这个方案适合:
夸克网盘里有很多影视资源
不想下载到 NAS
希望飞牛影视能展示和播放
希望大屏播放流畅
能接受转码流画质
不适合:
必须播放原盘画质
必须使用蓝光原始码率
不能接受服务端转码
最终推荐链路:
OpenList 只负责连接夸克 QuarkTV
SmartStrm 只负责生成 STRM
飞牛影视只扫描本地 STRM 目录
不要让飞牛影视直接扫网盘挂载目录
这样稳定性和播放流畅度会好很多。