跳转到内容

Jellyfin:开源媒体服务器

和飞牛影视定位相同:扫描媒体库、刮削元数据、提供播放。选它的理由通常是客户端生态(电视、投影、各类播放器上的支持面广)和完全开源无付费功能。

要不要装

fnOS 自带的影视应用已经能满足多数需求,不要为了「多一个选择」而同时跑两套——两套都扫描同一批文件,会重复占用 CPU 和内存。

考虑 Jellyfin 的合理理由:某个播放设备只有 Jellyfin 客户端、需要特定插件、或者你希望媒体服务独立于 NAS 系统以便将来迁移。

部署

yaml
services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    restart: unless-stopped
    ports:
      - "8096:8096"
    volumes:
      - /vol1/docker/jellyfin/config:/config
      - /vol1/docker/jellyfin/cache:/cache
      - /vol1/media:/media:ro
    devices:
      - /dev/dri:/dev/dri
    group_add:
      - "video"

要点:

  • 媒体目录挂载为 :ro(只读),除非需要它写入 NFO 和字幕。
  • devices 映射 /dev/dri 是硬件转码的前提,没有这一项就只能软件转码
  • cache 目录会存放转码临时文件,可能占用较多空间,建议放在固态盘上。

硬件加速

映射了设备只是第一步,还要在管理后台的播放设置里启用对应的硬件加速方式,并勾选支持的编解码格式。设置完成后实际播放一个需要转码的文件,观察 CPU 占用——占用很低才说明生效了。原理见转码

数据与备份

config 目录包含数据库、用户、播放记录和元数据,值得备份。媒体文件本身按你的备份策略处理。cache 目录可以不备份。

已知坑

  • 媒体目录的命名规范和刮削逻辑与飞牛影视不完全一样,迁移时可能需要重新整理,见媒体库创建
  • 容器内的用户需要有权限读取媒体目录,权限不对时表现为「扫描不到文件」。
  • 使用 latest 标签会跟进大版本更新,需要可回滚时固定版本号。

参考资料

fnOS 非官方中文使用指南,与飞牛官方无隶属关系。