Alist+emby打造在线影音库

Alist+emby打造在线影音库

简介

身处数字化时代,个人的文件资料越来越多,不便于管理,而且有时也有共享文件资料的需求,各路网盘工具诞生后,在各种网盘工具间切换更是麻烦,因此诞生了Alist工具。Alist是一个开源的文件列表和 WebDAV 程序,旨在为用户提供一个简单、高效的方式来管理和访问存储在不同云服务和本地服务器上的文件。它支持多种存储方式,包括阿里云盘、OneDrive、Google Drive、百度网盘等。

有了一个Alist,就相当于支持了数十种文件存储方式。

有了Alist,可以实现以下功能:

  • 挂载各类网盘工具到一个文件目录中

  • 不同网盘之间可以直接相互拷贝传输

  • 挂载网络上各路大神分享的影音资源,制作影音媒体库

  • 支持本地存储,支持WebDav,支持S3存储

我使用Alist主要就是为了解决分享视频资源的问题。但是Alist自带的媒体播放体验不好,因此还需要用到emby。

Emby是一款优秀的媒体服务器软件,致力于为用户提供丰富的多媒体体验。通过Emby,您可以方便地在家庭内的各种设备上观看您喜爱的电影、电视剧和其他视频内容。而且,Emby还具备强大的媒体管理功能,让您的影视资源井然有序,随时随地畅享观影乐趣。

思路:首先用alist将网盘媒体资源库挂载到本地,然后使用emby播放挂载的媒体资源。

安装Alist

参考:一键脚本 | AList文档

我这里是用docker安装的Alist,安装完成后,通过admin登录。

添加存储

参考:阿里云盘 Open | AList文档

在存储页面中,添加阿里云盘Open的文件存储:

需要填写3个东西:

填好后启用,可以看到挂载成功:

修改样式

在设置中可以修改站点标题、logo等:

注意事项

24年阿里云盘挂载到第三方工具上要收费了,需要开通第三方权益包才能用:

因此,在alist上下载文件,限速到500kB左右,基本上没法使用了。

参考:https://m.hybase.com/zhide/530.html

考虑百度云盘,115网盘等。

挂载云盘到本地

下面需要将云盘的文件放到本地目录可直接读取,下面有几种方法:

方式1:使用rclone挂载alist 的 webdav接口

参考:rclone config

也可以使用CloudDrive2(CD2)代替:CloudDrive - 帮助

emby是通过目录加载媒体库的,首先要将alist通过webdav挂载到本地:

通过rclone 配置:

root@RainYun-hFO5tAfZ:~# rclone config
Current remotes:

Name                 Type
====                 ====
alist                webdav

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> e

Select remote.
Choose a number from below, or type in an existing value.
 1 > alist
remote> 1

Editing existing "alist" remote with options:
- type: webdav
- url: http:127.0.0.1:5244/dav
- vendor: other
- user: admin
- pass: *** ENCRYPTED ***

Option url.
URL of http host to connect to.
E.g. https://example.com.
Enter a value of type string. Press Enter for the default (http:127.0.0.1:5244/dav).
url> http://localhost:5244/dav

Option vendor.
Name of the WebDAV site/service/software you are using.
Choose a number from below, or type in your own value of type string.
Press Enter for the default (other).
 1 / Fastmail Files
   \ (fastmail)
 2 / Nextcloud
   \ (nextcloud)
 3 / Owncloud
   \ (owncloud)
 4 / Sharepoint Online, authenticated by Microsoft account
   \ (sharepoint)
 5 / Sharepoint with NTLM authentication, usually self-hosted or on-premises
   \ (sharepoint-ntlm)
 6 / rclone WebDAV server to serve a remote over HTTP via the WebDAV protocol
   \ (rclone)
 7 / Other site/service or software
   \ (other)
vendor>

Option user.
User name.
In case NTLM authentication is used, the username should be in the format 'Domain\User'.
Enter a value of type string. Press Enter for the default (admin).
user>

Option pass.
Password.
Choose an alternative below. Press Enter for the default (n).
y) Yes, type in my own password
g) Generate random password
n) No, keep existing (default)
y/g/n>

Option bearer_token.
Bearer token instead of user/pass (e.g. a Macaroon).
Enter a value. Press Enter to leave empty.
bearer_token>

Edit advanced config?
y) Yes
n) No (default)
y/n>

Configuration complete.
Options:
- type: webdav
- url: http://localhost:5244/dav
- vendor: other
- user: admin
- pass: *** ENCRYPTED ***

然后通过rclone ls alist: 指令就可以查看挂载目录中的文件了。

挂载目录到本地:

rclone mount alist: /home/pyf/alist-root/ --vfs-cache-mode full --copy-links --allow-other --allow-non-empty --umask 000 --daemon

但是还是如之前说的,由于阿里云盘的新规则,第三方应用限制播放流量。

方式2:使用emby2alist,通过网盘直链播放

上面那种方式貌似失败了,因为观看云盘视频经过了服务器中转,阿里云貌似封禁了我的服务器IP,因此尝试直链播放。

参考:AmbitiousJun/go-emby2alist: Go 语言编写的网盘直链反向代理服务,深度适配阿里云盘,为 Emby + Alist 组合提供更好的使用体验,配置简单,DockerCompose 一键部署

主要是修改config.yml:

emby:
  host: http://110.42.41.189:8096            # emby 访问地址
  mount-path: /home/pyf/alist-root                          # rclone/cd2 挂载的本地磁盘路径, 如果 emby 是容器部署, 这里要配的就是容器内部的挂载路径
  episodes-unplay-prior: false                # 是否修改剧集排序, 让未播的剧集靠前排列; 启用该配置时, 会忽略原接口的分页机制
  resort-random-items: false                  # 是否重排序随机列表, 对 emby 的排序结果进行二次重排序, 使得列表足够随机
  # 代理异常处理策略
  # origin: 重定向回源服务器
  # reject: 拒绝处理
  proxy-error-strategy: origin
  # 图片质量, 默认请求原图
  # 配置范围: [1, 100]
  # 建议范围: [70, 90]
  # 具体数值根据自己的实际情况作调整
  images-quality: 100
  strm:                                      # 远程视频 strm 配置
    # 路径映射, 将 strm 文件内的路径片段替换成指定路径片段
    # 可配置多个映射, 每个映射需要有 2 个片段, 使用 [=>] 符号进行分割, 程序自上而下映射第一个匹配的结果
    # 这个配置的映射是比较灵活的, 不一定必须按照前缀映射, 可以直接将地址中间的片段给替换掉
    #
    # 举个栗子
    # strm 文件内容: https://test-res.com:8094/1.mp4, 替换结果: http://localhost:8095/1.mp4
    # strm 文件内容: https://test-res.com:12138/test-id-12138.mp4, 替换结果: https://test-res.com:10086/test-id-12138.mp4
    path-map:
      - https://110.42.41.189:8094 => http://localhost:8095
      - 12138 => 10086
  # emby 下载接口处理策略
  #    403: 禁用下载接口, 返回 403 响应
  # origin: 代理到源服务器
  # direct: 获取并重定向到直链地址
  download-strategy: 403

# 该配置仅针对通过磁盘挂载方式接入的网盘, 如果你使用的是 strm, 可忽略该配置
alist:
  host: http://110.42.41.189:5244            # alist 访问地址
  token: alist-1b35d7fa-ab47-46b6-b537-f7131686787bbsPGxcOE3vnwVsRP2YAZNogUaSWPls0XoswFcYEjdZmsXVpMxyhDAGkfbRCrHeru                         # alist api key 可以在 alist 管理后台查看

# 该配置项目前只对阿里云盘生效, 如果你使用的是其他网盘, 请直接将 enable 设置为 false
video-preview:
  enable: true                               # 是否开启 alist 转码资源信息获取
  containers:                                # 对哪些视频容器获取转码资源信息
    - mp4
    - mkv
  ignore-template-ids:                       # 忽略哪些转码清晰度
    - LD
    - SD

path:
  # emby 挂载路径和 alist 真实路径之间的前缀映射
  # 冒号左边表示本地挂载路径, 冒号右边表示 alist 的真实路径
  # 这个配置请再三确认配置正确, 可以减少很多不必要的网络请求
  emby2alist:
    - /alist:/alist
    #- /music:/音乐
    #- /show:/综艺
    #- /series:/电视剧
    #- /sport:/运动
    #- /animation:/动漫

cache:
  # 是否启用缓存中间件
  # 推荐启用, 既可以缓存 Emby 的大接口以及静态资源, 又可以缓存网盘直链, 避免频繁请求
  enable: true
  # 缓存过期时间
  #
  # 可配置单位: d(天), h(小时), m(分钟), s(秒)
  #
  # 该配置不会影响特殊接口的缓存时间
  # 比如直链获取接口的缓存时间固定为 10m, 字幕获取接口的缓存时间固定为 30d
  expired: 1d

ssl:
  enable: false       # 是否启用 https
  # 是否使用单一端口
  #
  # 启用: 程序会在 8094 端口上监听 https 连接, 不监听 http
  # 不启用: 程序会在 8094 端口上监听 https 连接, 在 8095 端口上监听 http 连接
  single-port: false
  key: testssl.cn.key # 私钥文件名
  crt: testssl.cn.crt # 证书文件名

log:
  # 是否禁用控制台彩色日志
  #
  # 程序默认是输出彩色日志的,
  # 如果你的终端不支持彩色输出, 并且多出来一些乱码字符
  # 可以将该项设置为 true
  disable-color: false

修改完成后启动docker,即可正常运行。

安装emby

参考:

EMBY入门全攻略:打造个人影视媒体库 - 知乎

emby/embyserver - Docker Image | Docker Hub

Emby Server for Linux - Emby

本地部署emby+cd2+alist+strm+302重定向-腾讯云开发者社区-腾讯云

Strm的妙用,后网盘时代的无奈选择 - 应用中心&Docker 飞牛私有云论坛 fnOS

下载安装emby

Ubuntu X64

  1. Download emby-server-deb_4.8.10.0_amd64.deb

  2. dpkg -i emby-server-deb_4.8.10.0_amd64.deb

  3. Open a web browser to http://localhost:8096

注册新用户然后登录。

添加媒体库

将挂载目录添加到emby:

然后应该就可以正常观看影片了。

总结

通过alist+emby,可以实现搭建个人影音库,但是要注意各大云盘厂商的限速情况,如果限速严重,体验会较差。

目前已经实测过阿里云,需要开通第三方权益包,才能在alsit中不限速观看影片。即便开了权益包,每月流量也会限制到1024G,超过的部分还会限速。

可以尝试115网盘,百度网盘等。

LICENSED UNDER CC BY-NC-SA 4.0