• 搭建一个家用的媒体服务器(支持电影、音乐和电子书)


    搭建家用的媒体服务器,用来在不同的设备上面方便得看电影,听音乐,甚至阅读电子书。

    可以选择使用 Plex, Emby, 或者 Jellyfin。 Plex 是商业软件,付费版本的功能更强大,免费版本也能用。 Emby 的早先版本是免费版本,后来商业化之后开源版本不再有更新。 Jellyfin 是基于 Emby 的后续社区开源版本,有持续的更新,且支持硬件解码。 对于我来说, Jellyfin 更重要的功能是除了电影和音乐的支持,还支持电子书。 支持 PDF,EPUB 格式的电子书。

    早先用的 Emby,在部署电子图书馆的时候,发现 Jellyfin 支持电子图书的。 媒体服务器用一个系统,电子图书馆再用一个系统维护起来比较麻烦。 这里有几个应用的功能对比: 

    Compare Media Servers · Protektor-Desura/Archon Wiki · GitHub

    对比几个媒体服务器方案之后, 决定使用 Jellyfin 来搭建家用的媒体服务。 以下是使用 docker 来搭建 Jellyfin 的过程。

    安装 jellyfin:

    用的这个版本的 Docker 镜像.  你也可以使用 linuxserver/jellyfin,或者 jellyfin/jellyfin 的 docker镜像。

    Docker Hub: https://hub.docker.com/r/nyanmisaka/jellyfin

    我用的 docker-compose 的方式启动应用。 不属于在家里的 Linux 小主机上。

    vim docker-compose.xml

    1. version: "3.5"
    2. services:
    3. jellyfin:
    4. image: nyanmisaka/jellyfin
    5. container_name: jellyfin
    6. user: nobody
    7. network_mode: "host"
    8. volumes:
    9. - //data/docker-app/jellyfin/config:/config
    10. - //data/docker-app/jellyfin/cache:/cache
    11. - /data/baidu:/media
    12. - /data/books:/books
    13. - /data/movie:/movie
    14. - /data/music:/music
    15. restart: "unless-stopped"
    16. # Optional - alternative address used for autodiscovery
    17. environment:
    18. - JELLYFIN_PublishedServerUrl=http://example.com

    启动应用: docker-compose up -d

    Linux 服务器的地址是 192.168.1.19

    之后通过 http://192.168.1.19:8090 来访问 Jellyfin, 第一次访问的时候,设置一个用户名和密码即可。 导入电影,音乐之后界面如下:

    如果你在运行 docker-compose 的时候下载不下来 docker 镜像,可以先 docker pull 下载下来镜像。 如果 pull 不下来, 多半是因为网络的缘由,需要设置代理服务器。 如何设置代理服务器,参考我另外的文章设置 Docker 服务器。

    以下几个需要注意的地方

    1.图书的支持
    Mobi, azw3 之类的文件, 可以先转换成 epub 文件,就可以在浏览器上阅读浏览。安装 calibre 之后,找到 calibre 安装目录下面的 ebook-convert  命令:
    ebook-convert  input output.epub
    在 Mac 下面运行这个命令,可以批量将当前目录下面的所有 azw3 文件转码为 epub:
    ls *.azw3 |xargs -n1 -I {} ebook-convert {} {}.epub
    2.播放音乐出现这个错误
    This client isn't compatible with the media and the server isn't sending a compatible media format.
    可能的原因是 Jellyfin 在更新的时候,连接不到网络引起的, 设置 docker 容器的代理之后。 可以正常播放 wma 的音乐。
    3.硬件加速解码
    Intel Quick Sync Video 选项只对 Windows 的版本有用。 Linux 都是统一用 VA API 这个选项,实际起硬件加速作用的主要是 /dev/dri(需要根权限)。操作步骤如下:
    查看系统是否支持显卡硬解转码
    使用 SSH 登录群晖系统(以 root 账号登录),运行命令 ls /dev/dri

    若输出 card0renderD128,则说明支持显卡硬解。

    搭建之后,就可以在笔记本上,手机上,或者小米投影仪上看电影了。 也可以导入电子图书,通过浏览器阅读图书。

    4.电影的图片、标题元数据不正确

    单个电影库处理:

    在添加电影目录到 资料库的时候,可以选择不下载 Metadata, 不从 MovieDB 获取数据。

    对于已经添加的资料库, 可以 Rescan 重新扫描生成 Metadata。 更新电影库的时候, 把 “TheMovieDB“, “The Open Movie Database” 禁掉,保留 “embedded Image Extractor”,“Screen Grabber” 的选项, 使得可以自动从电影的内容里面提取图片。

    对所有电影库默认不从 MovieDB, Open Movie Database 下载 Metadata:

    查遍了 Google ,没有发现可以禁用这两个库的方法。 试着改代码,因为网络的原因构建及其麻烦。 最终查代码和配置文件, 发现 config/system.xml 里面有配置 MetadataFetchers, ImageFetchers。

    如果希望所有的电影库,默认都不选择 “TheMovieDB“, “The Open Movie Database” 的选项。 则可以更新 config/config/system.xml 的内容,在 Movie 的 MetadataOptions 里面禁用掉这两个数据库,把这两个库添加到 DisabledMetadataFetchers,  DisabledImageFetchers 里面。 如下:

    1. <MetadataOptions>
    2. <ItemType>Movie</ItemType>
    3. <DisabledMetadataSavers />
    4. <LocalMetadataReaderOrder />
    5. <DisabledMetadataFetchers>
    6. <string>The Open Movie Database</string>
    7. <string>TheMovieDb</string>
    8. </DisabledMetadataFetchers>
    9. <MetadataFetcherOrder />
    10. <DisabledImageFetchers>
    11. <string>The Open Movie Database</string>
    12. <string>TheMovieDb</string>
    13. </DisabledImageFetchers>
    14. <ImageFetcherOrder />
    15. </MetadataOptions>
    16. <MetadataOptions>

    设置之后, 添加新的电影库时,页面如下:

    Jellyfin 比较傻的地方是没有全局的设置,可以在 UI 上禁用 TheMovieDb 和 The Open Movie Database,而且默认在匹配的时候还会匹配错内容。所以通过在添加库时,禁用掉这两个选项。或者更改 config/config/system.xml 来默认禁用掉这两个选项。

    另外,我出门在外的时候,也可以访问家里的服务器。这个是通过把家里的机器,跟云端的一台Linux 服务器通过 Open VPN 连接起来实现的。 就是说在云端 Linux 服务器上安装 Open VPN 的 Server,然后家里的 媒体服务器(Linux)上安装 Open VPN,配置客户端。 然后在我的 Mac 笔记本上也安装 Open VPN,用的 Tunnelblick ,这样家用的 媒体服务器、云端 Linux 服务器、Mac 笔记本组成一个网络,实现了从公网到家里内网的互联互通。 

  • 相关阅读:
    LVS-DR模式
    Linux回收内存的时候遇到PageWriteback和PageDirty脏页怎么处理?
    【教学类-35-03】学号+姓名+班级(小3班)学号字帖(A4竖版2份)
    java毕业设计城市交通海量数据管理系统Mybatis+系统+数据库+调试部署
    使用Docker部署Redis(单机部署)
    LeetCode-278(Python)—— 第一个错误的版本
    JavaSE成神之路 - 使用IDE开发Java程序
    2022亚太数学杯数学建模竞赛B题(思路、程序......)
    PIE Engine系列2 数据的上传、调用及下载(附源码超详细)
    系统启动其实就2个步骤BIOS和MBR(和之后的init/systemd的关系)
  • 原文地址:https://blog.csdn.net/davidullua/article/details/125475455