Contact Us

首页 资讯正文

阿里云网盘媒体库海报墙加载卡顿解决办法

发布者:yu发布时间:2025-04-08访问量:188

阿里云网盘媒体库海报墙加载卡顿解决办法

由于阿里云网盘的不限速,以及其支持webdav挂载的优点,很多同学将阿里云盘作为自己的网络媒体库,通过infuse,Emby,plex,fileball等工具进行维护管理实现家庭媒体中心的功能。但是在今年大约4月左右,阿里云官方API对请求的QPS进行了限制,目前最新的QPS限制如下所示:

当时几乎所有的第三方阿里云webdav服务都出现了 “to many requests” 的问题,例如 xhofe/alist 和 messense/aliyundrive-webdav 都有 issue 提到这个问题。虽然各位作者大大都对此进行了适配和优化,但是在挂载后,仍然出现该问题,和媒体海报墙加载极其缓慢和卡顿的问题。

出现 “to many requests” 的问题,归根结底还是因为频繁请求导致的。这里以 Emby Server 为例(其余的多媒体管理服务虽然作者本人也有所使用,但 Emby 为主力服务,了解的相对比较详细,因此其余服务再次不作讨论,各位看官可以参考借鉴),在加载海报墙时,Emby 会读取媒体文件的图片和 nfo 文件( nfo 文件实质上是一个 xml 格式的媒体信息文件,其中包含了刮削后获取的影片详细信息),当进入某个媒体库时,需要预读这个库中所有影片的海报图片和 nfo 文件,可想而知这瞬时的QPS有多大了。

由于 Emby 加载海报墙需要预读图片和 nfo 文件,默认情况下图片和 nfo 文件被保存在媒体文件夹中,即网盘中,那只要将海报和 nfo 文件存储到本地硬盘中不就不需要像阿里云网盘请求就可以加载海报墙并显示影片信息了吗?但是我逛了逛 Emby 的官方论坛,发现官方并没有支持将海报和 nfo 文件存储到独立目录的功能,并且表示没有支持计划。

但是我在论坛中发现了另一个信息,Emby Server 会在搭建服务的本地维护一个媒体信息的数据库,如果在创建媒体库时,不设置海报和 nfo 文件的读取,就可以将数据存储在本地的数据库中,这样 Emby 在加载海报墙时会直接从本地数据库中获取图片和影片详情,这样就能极大提升海报墙的加载速度了。

操作非常简单,只需要修改媒体库的设置即可。(作者在这里为了尽可能减少请求数量,将网盘的媒体目录中所有海报和 nfo 文件都删除了,因为列出目录和获取每个文件的下载 url 都会触发 QPS 限制。如果删除海报和 nfo 文件,则需要重新扫库,如果库中影片数量巨大,可能耗时很久)

  1. 如果删除了原始的海报文件和 nfo 文件,那么重新执行以下扫描媒体库即可。

在解决思路一节中提到,这种方法是将海报和媒体详细信息保存在本地数据库中,因此当同一个网盘,在异地搭建媒体服务器时,两地的数据库并不是同一份。再加上 Emby 刮削存在错误的可能性,这就导致同一媒体库多次刮削,对于刮削错误需要多次进行手动修改。