原帖地址:NAS/群晖 Emby使用115直链播放视频 (onii.cn)
1、更新emby2Alist套件,外网访问4-10秒可加载(具体看网速,原来的需要20秒左右)
如为了安全,emby可以反代,但是alist不能反代,反代后起播时间倍数增长,可以把5244换成其他端口
2、Nginx使用host模式,默认为8091端口,如需更改,自行设置映射端口
3、emby2Alist项目的地址,作者持续更新,后续可以根据需求自行替换文件更新
https://github.com/bpking1/embyExternalUrl/tree/main/emby2Alist
原理介绍
简单点来说,emby上面的所有视频文件的播放链接会被 nginx 动态修改为 alist 302 的 115 直链。
但是为了让 emby 中有「视频文件」,你得给 emby 添加影视库,但是 emby 添加影视库需要「文件」, alist 本身没办法把网盘文件挂载到本地硬盘,所以需要通过 rclone 将网盘文件挂载到本地硬盘。
也就是说,除了 rclone,只要能有工具将网盘文件挂载到本地,让 emby 顺利加载「影视库」,都是不影响最终的直链播放效果的。
理论上来讲,你搞一堆虚假的文件,重命名为视频文件,只要目录结构和名称和网盘一致,骗过 emby 能够顺利入库的方案都是可以的。

采用 cd2 的原因是因为,cd2 挂载的效果比 rclone 要好,能够显著的加速 emby 入库时间,新版本的入库流程如下。

操作步骤
安装emby、alist、cd2,重点是用Nginx反代。
安装 alist
docker run -d \ --restart=always \ -v /home/alist:/opt/alist/data \ -p 5244:5244 \ -e PUID=0 \ -e PGID=0 \ -e LMASK=022 \ --name=alist \ xhofe/alist:latest
设置密码
docker exec -it alist ./alist admin set password
访问 http://外网ip:5244,登录管理后台,添加 115 网盘,按需配置


记录 alist token 值,示例: alist-56aed914-dc75-4exxxxx

记录 alist 内网 IP 地址,示例: 172.17.0.2
安装 clouddrive2
安装前检查一下 是否安装了
fuse find /dev/fuse
显示/dev/fuse就是已安装,如果没有的话
apt install fuse3
安装cd2(自行修改路径)
建立路径
mkdir -p /mnt/alist && chmod -R 777 /mnt/alist docker run -d \ --name clouddrive \ --restart=always \ --env CLOUDDRIVE_HOME=/Config \ -v /mnt/alist:/CloudNAS:shared \ -v /home/cd2:/Config \ --network host \ --pid host \ --privileged \ --device /dev/fuse:/dev/fuse \ cloudnas/clouddrive2-unstable
安装成功后,打开 http://外网ip:19798 进入后台地址,登录 cd2,扫码添加硬盘。

扫码添加完毕后,你的 cd2 根目录会出现一个网盘(名称随意),双击进入 **网盘根路径,**点击左上角挂载按钮


选择挂载路径(这里十分关键跟后面的 constant.js 中的路径直接相关,如果不一致会导致直链播放失败,建议按照我的配置来)

选择好 alist 文件夹,点击确定后,会显示如下路径,建议修改权限为 777。

点击挂载后,查看挂载是否成功,若「失败原因」处显示空白,则证明一切正常。

安装 embyserver
自行修改路径(不允许写入刮削文件到网盘,新增媒体库时候,不勾选“将媒体图像保存到媒体文件夹中”)
docker run -d \ --name=emby \ -e PUID=0 \ -e PGID=0 \ -e TZ=Asia/Shanghai \ -p 8096:8096 \ -v /docker/emby:/config \ -v /mnt/alist:/mnt/alist:rslave \ --restart=always \ --network=host \ amilys/embyserver:latest
记录 embyserver 的内网地址,示例: 172.17.0.3
docker inspect --format=<span class="hljs-string">"{{.NetworkSettings.Networks.bridge.IPAddress}}"</span> emby

创建 & 记录 embyserver 的 APIKEY,示例: a159ebxxxxxx
访问 http://外网ip:8096,初始化 emby,生成并记录 embyserver 的 API KEY
其他配置
关闭转码等

关于刮削文件建议
如果刮削文件放在网盘,反复通过网盘读取小文件,可能会影响速度,从而导致卡顿,建议重新用emby刮削(emby怎么实现刮削,后期专门出个教程),建立媒体库时候勾选刮削,并不勾选,具体可以自行研究测试

安装 nginx
上传到服务器,解压emby2Alist
unzip emby2Alist.zip
cd emby2Alist/nginx/conf.d
或者修改好再上传按照下图修改constant.js

【重点】
挂载路径:const embyMountPathArr = [“/mnt/alist”],需匹配alist的地址,例如alist显示的网盘路径是/115/电影/xx.mp4,这个地址需要保证跟alist一致,如下图出现2个/115,那个这个地址就改成
const embyMountPathArr = [“/media/115”] ““这个删除的意思””
随便找一部电影,看地址:
【emby 的地址】/media/115/115/Emby媒体库/电影/华语电影/97家有喜事 (1997)/97家有喜事 (1997) – 1080p.mkv
【alist 的地址】/115/Emby媒体库/电影/华语电影/97家有喜事(1997)/97家有喜事 (1997) – 1080p.mkv
需要把 emby 的地址,变成跟 alist 一样,这样就实现反代
按照上面的例子,就是只要“/media/115”删掉,就能保持跟 alist 一致,所以const embyMountPathArr = [“/media/115″] 就是删掉[” “]的内容
以上只是一个例子,大家理解一下意思
emby

alist

最终查看网盘的文件路径是/volume2/115emby/media/115,这里填的是/media
但是如果像我一样,cd2挂载后文件夹是/volume2/115emby/media/115/115,这里填的是/media/115)


完成上方配置后输入
docker-compose up -d
或者(自行修改路径)
ocker run -d \ --name=emby-nginx \ -e PUID=0 \ -e PGID=0 \ -e TZ=Etc/UTC \ -v /home/emby2Alist/nginx/nginx.conf:/etc/nginx/nginx.conf \ -v /home/emby2Alist/nginx/conf.d:/etc/nginx/conf.d \ -v /home/emby2Alist/nginx/embyCache:/var/cache/nginx/emby \ -v /home/emby2Alist/nginx/log:/var/log/nginx \ --restart=always \ --network=host \ nginx:alpine
测试和使用
不能网页端播放,地址为:外网ip/域名:8091(放行端口);只能通过软件,如emby、infuse、Vidhub、fileball(会提示错误,点击播放可继续播放)等之类,请查看上传是否占用,如占用上传或出现错误,请仔细检查constant.js的路径(docker映射后的路径)
发布者:木木,转载请注明出处:https://blog.mmcool.site/4748.html