很早之前就想把自己的家庭媒体库方案整理一下,技术变化太快了,快到每天都在折腾的路上,总想最完美的解决办法,到头来却失了最初的观影需求.到目前为止,我的家庭媒体库方案基本没啥问题了,后面会把部分工具打包出来,方便需要的朋友使用,尽量傻瓜式,方便小白使用.
0x00 前言
本文不是技术科普文章,我不会去一个个介绍每个工具/软件的详细配置和用法,我只会基于媒体库的使用逻辑,关注核心配置,因为本身是一个整合方案,我希望你能利用你现在已经部署好的各类程序,而不是一味的推倒重来,所以不管你是nas套件版,还是docker版本,我想你都能很快完成配置.如果你是从零开始的选手,我后续也会考虑给大家准备一个整合的docker-compose配置.
0x01 准备开始
开始折腾家里媒体库(或者说是进化)之前,我先梳理一下我手里已有的资源:
- 威联通4盘位nas
- emby授权(非必需)
- plex授权(非必需)
- 宽带公网IP(非必需,有了方便在外使用)
- 部分PT站点账号(非必需)
- 115会员
- 阿里云盘会员
基于这些杂七杂八的东西,我希望自建媒体库,毕竟B爱优腾几个大会员一个月已经是100+开支了,而且随着使用AppleTV替代了安卓盒子,爱优腾官方基本上就没得玩了,所以我的想法是,利用nas(或者网盘)存储资源,然后用emby来刮削和整理媒体库,在AppleTV上用infuse、VidHub、Fileball等客户端观看.当然,安卓端也有一些可用的客户端.
0x02 媒体库1.0
如果NAS作为媒体库的存储介质,那么受限于nas硬盘的空间,这个需要经常清理,我是个懒人,直接pass;那么就需要利用我现有的网盘资源来完成操作了.如何把nas的资源像本地资源一样使用?我选择CloudDrive2,它可以支持把我网盘(115、阿里云盘、甚至是天翼云盘等)资源挂载到本地,我就可以在emby里面创建媒体库,并识别刮削这些资源.
这里的操作难度基本为零,不做介绍,大家只要注意,CloudDrive2的挂载需要有一些依赖,参考官方指南可以轻易拿捏.
0x03 媒体库2.0
媒体库1.0其实我用了一周左右,资源量小的时候其实没啥事,但是随着资源增多(仓鼠行为,懂得都懂),emby扫库刮削的时间越来越长,也经常触发网盘的风控,加上在外基本不能用(家庭宽带的上行实在一言难尽),所以我想优化emby的扫库效率.
搜寻结果是strm,简单来说,strm是一个文本文档,里面存储的是媒体真实的访问路径(可以是本地绝对路径,也可以是日常见到的http/https的网络资源路径),strm资源在emby扫库的过程中不会解析文件,扫库效率提升很明显,基本上以前6小时的扫库,现在只需要2分钟搞定.
那如何生成strm文件呢,工具其实很多,这里我推荐AutoSymlink,它可以支持你快速生成strm、同步元数据等,更重要的是,生成的云端strm(就是strm里面是网络地址)还可以支持Alist,后面会讲为什么Alist很重要.
部署AutoSymlink的docker镜像,要注意把CloudDrive2的挂载路径、strm的生成路径确认好,参考脚本:
1 | Auto_Symlink for QNAP |
部署后通过访问8095端口,添加同步配置:
运行后会自动在我们设置的目录生成strm文件(会按照你网盘的目录结构生成),你可以用文本编辑器打开来看看strm文件里面的内容.为确保可用,可以把strm的内容,用浏览器或者视频播放器打开看看能不能播放,如果提示401等错误,可能是你的Alist开启了签名,可以在Alist里面的对应存储里面关闭.
strm文件都生成后,可以把你的emby媒体库的路径,指向strm的路径,其它不变,手动扫一下媒体库,是不是飞快?播放的时候,emby会解析并作为代理去获取strm里面的真实文件,所以对目前的使用来说,这部分是无感的.
当然,增加AutoSymlink还不止这个能力,我们可以把emby的媒体更新通知设置在AutoSymlink,实现生成strm后立即/延时通知emby更新局部媒体库,因为AutoSymlink是实时监控文件变化的,所以效率极高,可以把emby的实时监控和定时扫码都关了.
完成这些,媒体库2.0也算是可用来,而且扫库和入库都很快,再也不用担心老婆催你怎么还看不到最新的剧集而烦恼了.
0x04 媒体库3.0 – to be continued
完成了2.0,在家日常观影已经没啥问题了,下一篇我会介绍网上很多人提到的302方案,我会介绍GitHub上大神整理的nginx配置,如何实现302,降低家里宽带上行的瓶颈,在外也能畅快观影,同时我还会提供我自己的302方案,更加简洁,已验证支持安卓下:emby客户端、Yamby客户端;iOS/AppleTV下:Infuse、VidHub、Fileball、官方客户端.(nginx方案通行高,稍微复杂一点).