作者在0.3.3.5版本中加入仅收费版可以启动,有需要的可以加作者TG群购买
前言
最近,使用网盘挂载进行观影的用户可能频繁遇到某网盘的“429”风控提示
。这种情况轻则导致短时间内无法正常观影,重则可能导致已经完成入库和刮削的媒体库被删除,引发了某些群组的广泛抱怨。
只要在短时间内大量访问网盘内容,就会触发网盘的风控机制,迫使用户重新更换 Cookie
并重新挂载网盘。虽然有用户通过将网盘的 MaxQueriesPerSecond
参数调整为 0.9
来有效缓解 429 问题
,但这也引发了新的问题。更改后,网盘的刮削和媒体库刷新等操作变得非常缓慢。原本不到1小时就能完成的 500 部电影的整理、刮削和入库,现在需要 2-3 小时才能完成。(CD2更新0.8.5后固定参数为1
,无需手动调整为0.9
,但相对于原来的3
,还是慢很多。)
为了解决这些问题,为大家带来了一种全新的方法——使用 STRM 文件
。
什么是STRM文件
用最简单能理解的话来说就是STRM文件就相当于生成一个网盘文件的快捷方式到本地。并且STRM 文件是一种简单的文本文件,可以用于在媒体播放器中播放网盘中的内容。它的作用类似于远程链接,指向实际的网盘位置/本地文件位置,而不是存储文件本身。通过这种方式,媒体服务器如 Emby
等媒体服务器可以直接读取 strm
文件中的链接(plex不支持strm)
,从而获取网盘上的媒体资源,而无需将整个媒体文件下载到本地服务器。
STRM类型
local(本地路径)
local类型
的strm
更像是软链接,指向本地路径,用过CloudDrive
的同学都知道,将网盘挂载到/mnt/addons/CloudDrive
下,而local
文件内容就去掉/mnt/addons/CloudDrive
,就是我115网盘
内的路径,这样Emby
就可以读取到路径,从而直接播放。
Cloud(云盘链接)
Cloud
类型的strm
文件则是直接指向网盘路径,可能大家看到这一串乱码会很头疼,但实际上它指向的也是网盘路径,不过用记事本等软件打开时不支持URL编码
,用支持的软件打开就会看到如下路径:
与上面内容一致,去掉CloudDrive2的IP地址
,则同样为115网盘的媒体路径。
为什么要生成strm文件
由于各类网盘的严苛风控规则,传统的大规模视频文件扫描与刮削已难以实现。而 strm 文件
的远程链接特性在此场景中提供了有效的解决方案。刮削软件能够将 strm 文件
视作实际的视频文件,通过文件名提取元数据信息,而无需直接访问或读取网盘中的视频文件,从而有效规避了因文件读取带来的风控限制。同时,即便文件名经过修改,链接仍可保持准确指向目标的远程地址。此外,网盘文件列表的获取仅需读取目录信息,而非实际访问文件内容,因此更准确地说,这一过程是对目录的扫描,而非文件的读取。
整理、生成思路
所有媒体资源通过不同下载器下载到本地
MP
使用目录监控整理本地目录,自动整理通过CloudDrive2
上传到网盘(可以选择整理+削刮,但大量上传容易造成网盘风控)Cloud-Media-Sync通过全量/增量任务生成strm到本地目录
通过MP进行削刮,生成图片、NFO等媒体元数据,供Emby读取
通过
Cloud-Media-Sync
容器中nginx
进行302直链
获取播放
自动整理上传网盘思路、Emby部署可以参考
部署容器(任选一种方式部署即可)
创建文件夹
Cloud-Media-Sync
配置文件夹
Nginx
配置文件夹
Strm
文件存放文件夹
下载Docker镜像失败的可以看一下篇文章
客户端部署
需要修改的地方均用红色的方框标出
EMBY图片缓存策略,包括主页、详情页、图片库的原图→环境变量:
IMAGE_CACHE_POLICY
(按需填写):
0: 不同尺寸设备共用一份缓存,先访问先缓存,空间占用最小但存在小屏先缓存大屏看的图片模糊问题
1: 不同尺寸设备分开缓存,空间占用适中,命中率低下,但契合 emby 的图片缩放处理
2: 不同尺寸设备共用一份缓存,空间占用最大,移除 emby 的缩放参数,直接原图高清显示
3: 关闭 nginx 缓存功能,已缓存文件不做处理
Docker Compose部署
创建Yaml文件夹
查看文件夹真实路径
我的真实路径为:/volume1/docker/AppData/sync/config
、/volume1/docker/AppData/sync/nginx/logs
、/volume1/docker/AppData/sync/nginx/cache
、/volume1/library
,稍后要填入yaml
文件,注意保存。
services:
emby: # Emby 服务
image: amilys/embyserver:latest # 指定 Emby 服务器 Docker 镜像
container_name: emby # 容器名称,方便管理和识别
network_mode: host # 使用主机网络模式,方便访问,但存在安全风险!强烈建议使用命名网络。
environment:
- PUID=0 # 设置容器内用户ID为0 (root)
- PGID=0 # 设置容器内组ID为0 (root)
- TZ=Asia/Shanghai # 设置时区为上海
- NO_PROXY=172.17.0.1,127.0.0.1,localhost # 指定不使用代理的地址,如果不需要emby削刮可以不加
- ALL_PROXY=http://192.168.1.2:7893 # 设置全局代理,用于访问外部网络,如果不需要emby削刮可以不加
- HTTP_PROXY=http://192.168.1.2:7893 # 设置 HTTP 代理,与 ALL_PROXY 保持一致,如果不需要emby削刮可以不加
volumes:
- /volume1/docker/AppData/embyserver:/config # 映射 Emby 配置文件目录
- /volume1/library:/library # 映射媒体文件库目录
ports:
- "8096:8096" # 映射 Emby Web 界面的端口
- "8920:8920" # 映射 Emby 安全 Web 界面的端口 (可选)
devices:
- /dev/dri:/dev/dri # 映射图形加速设备,用于硬件加速解码 (如果需要)
privileged: true # 赋予容器特权。
restart: unless-stopped # 容器在主机重启后自动启动,除非手动停止
cloud-media-sync: # cloud-media-sync 服务
privileged: true # 赋予容器特权。
container_name: cloud-media-sync # 容器名称
image: imaliang/cloud-media-sync:latest # 指定 cloud-media-sync 镜像
restart: always # 容器总是重启
network_mode: host # 使用主机网络模式,方便访问,但存在安全风险!强烈建议使用命名网络。
volumes:
- /volume1/docker/AppData/sync/config:/config # 映射 cloud-media-sync 配置文件目录
- /volume1/docker/AppData/sync/nginx/logs:/logs # 映射 nginx 日志目录
- /volume1/docker/AppData/sync/nginx/cache:/var/cache/nginx/emby # 映射 nginx 缓存目录
- /volume1/library:/library # 映射媒体文件库目录,与 Emby 共享
ports:
- "9527:9527" # 映射 核心配置端口
- "9096:9096" # 映射 Nginx直链302端口
environment:
- PUID=0 # 设置容器内用户ID为0 (root)
- PGID=0 # 设置容器内组ID为0 (root)
- UMASK=022 # 设置文件掩码
- TZ=Asia/Shanghai # 设置时区为上海
- RUN_ENV=online # 设置运行环境为线上
- ADMIN_USERNAME=xxxxx # 设置管理员用户名
- ADMIN_PASSWORD=xxxxxx # 设置管理员密码
- EMBY_HOST_PORT=http://127.0.0.1:8096 # 指定 Emby 服务的地址和端口
- EMBY_API_KEY=xxxxxx # 指定 Emby API 密钥
- IMAGE_CACHE_POLICY=2 # 设置镜像缓存策略
EMBY图片缓存策略,包括主页、详情页、图片库的原图→环境变量:
IMAGE_CACHE_POLICY
(按需填写):
0: 不同尺寸设备共用一份缓存,先访问先缓存,空间占用最小但存在小屏先缓存大屏看的图片模糊问题
1: 不同尺寸设备分开缓存,空间占用适中,命中率低下,但契合 emby 的图片缩放处理
2: 不同尺寸设备共用一份缓存,空间占用最大,移除 emby 的缩放参数,直接原图高清显示
3: 关闭 nginx 缓存功能,已缓存文件不做处理
在最下面提示参数配置错误,需要在文件管理器中查看Nas是否创建了这个文件夹。
食用方法
进入Emby后台,创建API
返回Compose界面,填入API
浏览器访问http://设备ip:9527
进入容器后台
核心配置
扫码登录115账号,获取cookie
STRM配置
企业微信通知配置
参考MP企微内容
TMDB配置
自动整理(也可以不需要配置)
文件夹cid获取
MP默认命名规则:
电影文件夹命名规则:
{title} ({year})
电影文件命名规则:
{title} ({year})
剧集文件夹命名规则:
{title} ({year})
剧集命名规则:
{title}.{year}.{season_episode}
也可以编辑自己想要的规则,查看变量说明/语法说明
全量同步
选择你需要的视频格式尾缀
选择你需要的视频元数据格式尾缀
如果没有你需要的,你也可以自己打字,然后选择即可
测试访问反代后Emby
浏览器输入http://NasIP:9096
测试访问,正常访问Emby容器即表示部署成功。
只需要映射9096端口到外网,即可实现302直链播放
推荐大家用lucky反代9096端口,实现https访问
增量同步
在完成全量同步后,会根据自定义cron表达式,进行增量同步。(由于增量同步依赖115生活事件,所以无法同步文件重命名,不过文件重命名后并不影响直连的获取,所以影响不大。)
Emby添加媒体库设置
监控上传
题外话(神医助手-一款强大的Emby插件)
提高首次播放的起播速度
解决可能的无进度条问题
视频截图预览缩略图增强
片头片尾探测增强
自动合并同目录视频为多版本
独占模式提取媒体信息
独立的外挂字幕扫描
自定义
TMDB
备选语言
使用替代
TMDB
配置演职人员增强
TMDB
获取原语言海报
中文搜索增强
拼音首字母排序
媒体信息持久化
支持代理服务器
支持
TMDB
剧集组刮削
感谢大佬的开源项目
下载最新的文件:下载困难点→StrmAssistant.dll
安装插件
查看emby
的配置文件存放本地目录
将下载好的插件放入emby插件
文件夹,然后重启Emby
根据提示按需配置插件
手动运行插件
由于我的技术有限,文章可能有不足。希望大家理解,欢迎提出意见。
如果这篇文章对您有帮助,可以考虑打赏支持。您的支持是我创作的动力。谢谢阅读!
评论