emby挂载阿里盘转直链
2021-9-6|2023-8-7
bpking
type
status
date
slug
summary
tags
category
icon
password
文章更新记录
2023/2/2
升级到alist v3了,脚本github地址 bpking1/embyExternalUrl (github.com)
调用外部播放器的油猴脚本账号无法登陆了,换了个新地址:embyLaunchPotplayer (greasyfork.org)
2022/5/13
- 兼容jellyfin
- 解决infuse无法播放的问题,感谢@amwamw968
- 用nignx添加了字幕文件的缓存支持
2022/1/12
- 重写了js脚本,支持rclone union,不再需要挂载名和alist盘名一致,不再需要设置emby api_key
- 修复了js脚本不能正确获取同一个视频不同清晰度版本的问题
2021/12/06
- alist项目作者最近的更新中加入了阿里云盘之外的网盘的支持,且不在需要刷新目录
- 换了另外一个用rust语言写的阿里盘webdav项目,内存占用很小
- 修改了njs脚本中的正则,来修复emby魔改客户端terminusPlayer没有走直链
- 修改nginx配置修复了阿里云盘直链无法在emby web中播放
- 修复了由于反代无法使用jellyfin-mpv-shim直链播放
- 用nignx添加了emby图片的缓存支持
这篇文章的受众:
写这篇文章默认读者是emby用户,使用rclone挂载网盘,会使用docker,因篇幅问题以上软件的使用方法不在文章范围之中,此项目不会对原有的emby和rclone配置造成影响或修改
原理:
使用aliyundrive-webdav 项目将阿里盘转为webdav, 再使用rclone挂载以供emby读取
使用alist项目 将阿里盘及别的网盘的文件转为直链,使用nginx及其njs模块将emby视频播放地址劫持到 alist直链 (暂时只测试了od,gd和阿里云盘可用,alist目前支持好几种网盘,感兴趣的可以测试一下)
步骤:
1.先将配置文件下载到本地
此时文件结构如下:
~/emby2Alist
├── docker-compose.yml
└── nginx
├── conf.d
│ ├── emby.conf
│ └── emby.js
└── nginx.conf
2.
看情况修改emby.js 中的设置项目,通常来说只需要改alist token
这里默认emby在同一台机器并且使用8096端口,否则要修改 emby.js和emby.conf中emby的地址
3 . 如果不挂载阿里云盘 可以跳过这一步
修改docker-compose.yml 中 service.ali-webdav 的 REFRESH_TOKEN
获取方法参考原项目地址: https://github.com/messense/aliyundrive-webdav
4.
启动服务: 在 ~/emby2Alist 目录下执行
查看启动log:
如果log有报错,请按照提示信息修改 ,常见错误可能为
- docker端口占用冲突: 修改docker-comopse映射端口
- webdav 的refresh token 填写错误 (如果不挂载阿里云盘则忽略)
5.
防火墙放行 5244, 8095 和 8080端口
8080端口为阿里盘 webdav地址 , 8095端口为emby转直链端口与默认的8096互不影响
访问5244端口,初始密码查看docker log能看到 ,根据项目文档 https://github.com/Xhofe/alist 在Alist项目后台添加网盘
注意:
- 添加od,gd盘可以直接复制rclone配置里面的 clientid , secret , refreshToken,不用再麻烦去重新搞一次了
- 不使用阿里云盘可以跳过这步 alist阿里盘的refreshToken与webdav那个token是不一样的,这里需要的是要不需要referrer请求头的token,详情请参考这个issue , 可以用这个网页来获取 阿里云盘 - RefreshToken (cooluc.com)
- 盘名建议一致,这样获取直链更快,不一致也可以
6. 如果不挂载阿里云盘 可以跳过这一步
配置rclone,挂载网盘,这里以阿里盘webdav为例
使用rclone 挂载 阿里盘webdav
第一步name 我这里为 ali
rclone config 选 webdav , 地址为http://localhost:8080 默认用户和密码都为admin
rclone lsf ali: 看一下能否获取到列表
创建文件夹:
mkdir -p /mnt/ali 注:此挂载文件夹的名字需要与 Alist 中的盘名相同
挂载:
也可以写成service
7.
访问 8095端口打开emby 测试直链是否生效,查看执行log
8095端口为走直链端口 , 原本的 8096端口 走 emby server 不变
直链播放不支持转码,转码的话只能走emby server
所以最好 在emby设置中将 播放 --> 视频 --> 互联网质量 设置为最高 ,并且将用户的转码权限关掉,确保走直链
web端各大浏览器对音频和视频编码支持情况不一,碰到不支持的情况emby会强制走转码而不会走直链
已知问题:
- emby web播放时如果需要使用内封的字幕,实际上是需要embyServer在后台用ffmpeg去提取的,ffmpeg要读取整个视频文件才能获取所有的字幕流,相当于几乎整个视频文件都要通过rclone下载,并且消耗cpu资源,对于比较大的视频文件是不现实的,所以web端建议使用外挂字幕
google Drive由于api的限制直链只能通过server中转,所以还是建议在cf上搭建goindex来获取直链 ,如何给到emby请参考 这篇文章结尾,另外一种方法是给alist添加cf worker中转gd的支持,有待研究alist新版已经支持cf worker代理gd下载了,详情参考alist文档
- 可能会有其他问题,请留言