现在在配置一般的服务器端搭建Emby会面临两个很现实的问题,一个是服务器(VPS)线路问题,有可能速度会很慢,根本播放不了视频。另一个是硬解码的问题,绝大多数服务器并没有独立的显卡或者核显,Emby被迫使用CPU进行解码,占用大量资源且基本达不到流畅播放的要求。为了应对这两个问题,一个很显而易见的方法就是绕过服务器端,使用者本地直接访问媒体资源的直链(假设你的资源放在网盘上,比如谷歌盘),这样速度就不受你的服务器限制,而取决于本地访问网盘/CDN的速度,并且由于是网盘直出,硬解码在本地通过播放器就可以实现。服务器仅仅作为emby前端的硬件支撑,加载个海报墙和元数据啥的,压力大大减少。
写个文章简单记录一下复现bpking大佬的项目。
准备工作
- 有一台linux服务器
- 有使用alist/rclone挂载网盘的能力
- 有使用cloudflare workers代理alist流量的能力
- 有优选cloudflare IP的能力(墙外用户可选)
- 有docker的基本使用经验
- 有emby的基本使用经验
工作原理
使用alist挂载谷歌网盘,并使用rclone挂载alist的webdav,并且在emby中使用挂载的谷歌盘webdav的媒体文件生成海报墙和管理元数据,并且使用cf workers代理alist流量(转换下载链接成直链且不走服务器)。在服务器中使用nginx及其njs模块将emby视频播放地址劫持到alist直链。
操作步骤
- 在服务器端配置好rlcone和emby
- 把bpking的配置文件克隆到本地
- 在emby2Alist 目录下执行
docker-compose up -d
- 这将分别开启三个容器:Alist, nginx及其njs模块, ali-webdav
- 因为我不准备挂载阿里云盘,所以可以停掉ali-webdav
- 防火墙放行 5244, 8095 和 8096端口
- 其中emby默认使用8096端口,nginx劫持后直链使用8095端口,5244是alist的端口
- alist 的初始用户名和密码在docker log里面可以看到
- 在alist挂载谷歌网盘,挂载举例为”data”,其中alist配置好cf worker代理流量,并为alist申请公网域名,这里举例为https://alist-proxy2.xxx.com.
- rclone用webdav的方式挂载alist代理的谷歌网盘,可以配置成service这样重启也没关系
- 确认rclone 挂载正常可以使用这个命令:
rclone lsf data
- 确认rclone 挂载正常可以使用这个命令:
- 按需求编辑配置文件:emby2Alist/nginx/conf.d/constant.js
- 其中emby/alist IP要填VPS公网IP
- emby/alist 的token在后台都可以分别查到
- 重启emby/nginx容器
- 如果要反代emby要用8095端口,8096端口还是默认走服务器
emby 配置
- 播放-视频-互联网质量 设置为最高
- 用户-编辑-播放中以下选项取消
- 如有必要,在媒体播放期间允许音频转码
- 如有必要,在媒体播放期间允许视频转码
- 如有必要,在媒体播放期间允许更改容器格式
测试
通过8095端口访问emby,播放视频,并查看emby-nginx的log:
docker logs -f -n 10 emby-nginx 2>&1 | grep js
看到播放链接被成功劫持到alist代理的链接即为成功!
冒昧打扰,请问公开网盘里的“知识”资源能够分享一下吗,谢谢
应该可以直接右键下载的吧,如果速度不好可以挂梯子试试
能出个详细教程吗大佬,或者能不能提供搭建服务啊
这还不够详细啊… 卡在哪里了?