收起左侧

夸克网盘挂飞牛影视,从卡成狗到丝滑播放的折腾记录

0
回复
67
查看
[ 复制链接 ]

2

主题

0

回帖

0

牛值

江湖小虾

前阵子在折腾怎么把夸克网盘的内容接到飞牛影视上播放,中间踩了不少坑,前后搞了好几天。这里把过程和遇到的问题都记录一下。

背景

有个夸克网盘会员,88VIP 带的,闲鱼买的 88VIP,几块钱一年。网盘里存了些电影和剧,之前都是手机或网页上看,现在有了飞牛 NAS,想在飞牛影视上看,大屏体验好一些。

但不想把几百 G 的东西全下载到 NAS 硬盘上,空间也不够。目标是直接挂载云端播放,NAS 本地不存视频文件。

从 144 kB/s 到 11 MB/s 的摸索过程

飞牛自带的远程挂载

飞牛 NAS 本身支持挂载夸克网盘,系统设置里可以直接添加远程挂载,挂上之后在飞牛影视里指定这个挂载路径作为媒体库。这是最简单的方案,不需要额外装任何东西。

结果测速只有 144 kB/s,视频完全加载不出来。飞牛的远程挂载底层走的是 rclone 的 FUSE,中间层开销太大。

部署 OpenList + WebDAV

飞牛自带挂载不行,就自己搭了 OpenList(AList 的一个分支),Docker 部署,在里面添加夸克网盘驱动。OpenList 提供 WebDAV 接口,然后在飞牛系统里用远程挂载把这个 WebDAV 挂到本地路径,飞牛影视再去扫描。

测速 521 kB/s,比原来快了几倍,但还是远远不够播放视频。这条路也走不通。

STRM 直链方案

后来了解到 STRM 这个方案。STRM 文件本质就是一个文本文件,里面只有一行内容:视频的直链 URL。把 STRM 文件放到飞牛影视的媒体库路径下,飞牛影视播放的时候会直接去请求这个 URL 拿视频流,完全绕开了 WebDAV 和 FUSE 中间层。

OpenList 本身就带 STRM 驱动,可以把已有的存储路径自动生成对应的 STRM 文件到本地目录。配置好之后测速到了 4.2 MB/s,1080p 的内容可以正常播放了。

但 4K 原盘码率通常在 60 Mbps 以上,4.2 MB/s(约 33 Mbps)还是不够用,播放过程中会频繁缓冲。而且中间还碰到个别视频播放没有声音的问题。

速度对比

方案 测速 结果
飞牛原生挂载 144 kB/s 无法加载
OpenList WebDAV 521 kB/s 无法播放
STRM 直链 4.2 MB/s 1080p 可看,4K 缓冲
QuarkTV 流式 11+ MB/s 4K 流畅

发现夸克网页播放流畅的原因

用 STRM 方案的时候一直有个疑问:同一个文件,夸克自己的网页播放器放起来非常流畅,通过 OpenList 就卡。一开始以为是夸克 CDN 速度快,或者有什么 302 重定向加速。

后来用浏览器 F12 开发者工具抓了夸克网页播放器的网络请求,对比发现了关键区别:夸克网页播放器请求的根本不是原始文件,而是调了一个 /1/clouddrive/file/v2/play 接口,返回的是服务端转码后的视频流

这个 play 接口会返回多个画质档位供选择:

画质 分辨率 码率 转码后大小(原文件 49.4 GB)
4K 3840x2160 ~4000 kbps 3.1 GB
super 1440x810 ~1500 kbps 1.16 GB
high 960x540 ~1200 kbps 916 MB

一个 49.4 GB 的 4K REMUX 原盘,经过夸克的服务端转码后,最高画质也只有 3.1 GB,码率从原盘的 60+ Mbps 压到了 4 Mbps 左右。带宽需求降低了一个数量级,自然就不卡了。

所以问题不在下载速度,而在于请求的是原始文件还是转码流。

另外也验证了一下 302 重定向的问题——在同一个局域网内,飞牛影视和 NAS 走的是同一条出口带宽,302 只是改变了请求路径,不改变实际带宽,所以对速度没有提升。真正有意义的是选择转码流还是原始文件。

QuarkTV 驱动的配置

搞清楚原理之后,在 OpenList 里找到了 Quark TV 驱动。这个驱动走的是夸克电视端 API,和网页播放器底层用的是同一套转码服务。

核心配置就一个:link_method 设为 streaming(流式)。设成流式后,OpenList 返回的不再是原始文件的下载地址,而是转码后的视频流地址。

中间走了个弯路:先试了标准夸克驱动里的 use_transcoding_address 选项,想通过标准驱动实现转码播放。结果测试多个文件都返回了同样的错误:

failed get link: data invalid: [plf_invalid]

查了一下这是 OpenList 的已知问题,标准夸克驱动的转码地址功能目前不可用。后来才发现需要单独使用 QuarkTV 驱动。

QuarkTV 驱动配置步骤:

  1. OpenList 后台 → 存储 → 添加 → 驱动选 Quark TV
  2. 用夸克 App 扫码登录(走的是 TV 端的二维码认证流程,会生成 refresh_token)
  3. link_methodstreaming
  4. 保存

配置完成后实测下载速度 11+ MB/s,4K 内容完全流畅播放,拖进度条秒加载。

需要注意的是,流式模式返回的是 H.264 + AAC 编码的转码视频,码率约 4000 kbps,虽然分辨率是 4K 但画质和原盘有差距。如果对画质有极致要求,这个方案不太合适。个人觉得在线看完全够用,不仔细对比看不出区别。

STRM 文件生成和内容整理

播放速度解决后,还有一个问题:飞牛影视无法正确识别媒体内容。夸克网盘上的文件名比较混乱,类似 4K S01 EP 01.mkv 这种命名,飞牛影视的刮削器没法匹配到 TMDB 的影视信息,很多内容只显示为文件名,没有海报和简介。

这里需要解决两件事:

  1. 生成指向 QuarkTV 流式链接的 STRM 文件
  2. 把文件名整理成标准的 TMDB 命名格式,让飞牛影视能正确刮削

用了 SmartStrm(开发者 Cp0204)来处理。这个工具可以扫描 OpenList 的目录结构,自动生成对应的 STRM 文件。更重要的是它内置了 TMDB 影视识别功能,可以在文件浏览器里选择目录,自动查询 TMDB 获取正确的影视信息,然后批量将源文件重命名为标准格式(如 剧名.S01E01.集名.mkv)。

踩过的几个坑

1. STRM 文件权限

SmartStrm 生成的 STRM 文件默认权限是 drwx------(仅 owner 可读),飞牛影视的进程用其他用户运行,读不到这些文件。需要手动 chmod -R 755 修改权限。

2. OpenList 的 sign_all 和 guest 用户

OpenList 默认 sign_all=true,所有文件访问请求都需要携带签名认证。但 STRM 文件里存的是直链 URL,飞牛影视播放时是浏览器直接去请求这个 URL,不会带 OpenList 的认证信息,结果就是 401 被拒绝。

需要做两步修改:

  • 关闭 sign_all(设为 false)
  • 启用 guest 用户,权限设为 256(只读访问)

这样未认证的请求也能正常获取文件。

3. SmartStrm 的 network_mode: host 导致 STRM URL 错误

SmartStrm 用 Docker 的 network_mode: host 部署时,生成的 STRM 文件里的 URL 主机地址会是 127.0.0.1

飞牛影视有个「STRM 直连播放」模式,在这个模式下浏览器会直接请求 STRM 文件里的 URL。问题在于浏览器是在客户端机器上运行的,127.0.0.1 指向的是客户端自己而不是 NAS,所以请求会失败(ERR_CONNECTION_REFUSED)。

解决办法是把 SmartStrm 改为显式端口映射(ports: "8024:8024"),然后在 SmartStrm 的配置文件里把 storage URL 设为 NAS 的局域网 IP 地址。

4. QuarkTV 驱动不支持文件重命名

SmartStrm 的 TMDB 识别功能可以自动匹配影视信息并生成新文件名,但点「应用」的时候报错:批量重命名失败

原因是 QuarkTV 驱动是只读的,只支持列目录和获取播放链接两个操作,不支持 rename、move、delete 这些写操作。

解决办法是在 OpenList 里再加一个标准夸克驱动(用浏览器 cookie 认证),挂载同一个夸克账号。这样 OpenList 里就有两个驱动:

  • /quark-tv — QuarkTV 驱动(只读,用于生成流式播放链接)
  • /quark — 标准夸克驱动(可读写,用于重命名等文件管理操作)

在 SmartStrm 的文件浏览器里通过 /quark 路径浏览文件,执行 TMDB 识别和重命名,操作完成后再触发 SmartStrm 任务重新生成 STRM 文件。最终生成了 292 个 STRM 文件,飞牛影视刷新媒体库后全部正确识别,海报、评分、简介都有了。

5. 标准夸克驱动 cookie 的 HttpOnly 坑

标准夸克驱动需要浏览器 cookie 来认证。但 cookie 中有个关键字段 __pus 是 HttpOnly 属性的,在浏览器控制台用 document.cookie 读不到它。

获取完整 cookie 的方法:打开 F12 开发者工具的 Network 面板,在夸克网盘页面上触发任意操作(比如刷新文件列表),找到一个发往 drive-pc.quark.cn 的请求,从请求头(Request Headers)的 cookie 字段里复制完整内容。这样拿到的 cookie 包含 HttpOnly 字段。

6. OpenList 的 429 限流

调试过程中频繁测试,触发了 OpenList 的登录请求限流,返回 429 状态码。重启 OpenList 容器可以清除限流计数器。

自动化:新内容自动入库

手动整理完存量文件后,还需要解决后续新内容的自动入库问题。目标是新的分享资源转存到夸克网盘后,自动触发 STRM 文件生成,飞牛影视自动发现新内容。

部署了 quark-auto-save(同一作者 Cp0204 的工具),它可以监控分享链接并自动转存到指定目录。转存完成后通过 webhook 通知 SmartStrm,SmartStrm 增量扫描并生成新文件的 STRM。

整条链路:

分享链接 → quark-auto-save 自动转存 → webhook 通知 SmartStrm → 增量生成 STRM → 飞牛影视自动发现

三个服务放在同一个 docker-compose 里管理:

services:
  openlist:
    image: openlistteam/openlist:latest-lite
    ports:
      - "5244:5244"
    volumes:
      - ./data:/opt/openlist/data
      - /vol1/1000/strm:/opt/openlist/strm

  smartstrm:
    image: cp0204/smartstrm:latest
    ports:
      - "8024:8024"
    volumes:
      - ./smartstrm/config:/app/config
      - /vol1/1000/strm/library:/strm

  quark-auto-save:
    image: cp0204/quark-auto-save:latest
    ports:
      - "5005:5005"
    volumes:
      - ./quark-auto-save/config:/app/config

环境变量(用户名密码等)按各工具的文档自行配置。

webhook 联动的配置方式:在 quark-auto-save 的系统配置页面展开 smartstrm 插件,填入 SmartStrm 的 webhook 地址和对应的任务名。SmartStrm 这边可以把 crontab 定时任务去掉,不再定时全量扫描,改为纯 webhook 触发,只在有新内容转存时才运行增量生成。

其他注意事项

  • 夸克 cookie 有效期不长,过段时间会失效,需要重新从浏览器获取并更新到 OpenList 和 quark-auto-save 的配置里
  • SmartStrm 的 TMDB 影视识别接口在国内直连基本超时,需要配置代理
  • QuarkTV 流式模式返回的是 H.264 + AAC 编码的转码视频,4K 分辨率但码率约 4000 kbps,不是原盘画质
  • STRM 文件就是文本文件,本身只占几 KB 空间,整个方案不需要在 NAS 上存储视频文件
  • 飞牛原先自带的夸克远程挂载在 STRM 方案跑通后可以清理掉,避免冗余
收藏
送赞 3
分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则