返回列表
docker

容器项目&媒体类

摘要

采用 Docker 搭建个人媒体服务

5 分钟阅读
#docker#yaml#媒体库#Emby

媒体服务

说起个人媒体服务,大家肯定都熟悉群晖的 NAS 媒体功能,但好不好用因人而异。当然,免费的飞牛 NAS 媒体功能也不错。容器类媒体项目现在主要有三个:第三方客户端做得比较好的 Emby、官方和第三方都不太愿意开发客户端的 Jellyfin,以及好用但分享门槛较高的 Plex。Emby 是付费软件,也有社区维护版本;Jellyfin 是免费软件。我先把我的 Docker 目录结构放出来,方便你修改路径。

text
root(根目录)
├── docker(分支层级:docker目录)
│ ├── apps(具体目录:docker app目录)
│ │ ├── Jellyfin路径
│ │ ├── Emby路径
│ │ └── Plex路径
│ └── docker-compose(具体目录:docker-compose.yaml目录)
│ │ ├── Jellyfin
│ │ │ └── docker-compose.yaml
│ │ ├── Emby
│ │ │ └── docker-compose.yaml
│ │ ├── Plex
│ │ └──── docker-compose.yaml
│ ├── media
│ │ ├── Tv
│ │ └── Movie
...
  • 随着移动智能设备的普及,移动端流媒体需求越来越常见。如果想更主动地管理自己的媒体文件,可以本地自建一个私人媒体平台。
  • 除了在局域网使用各种设备观看,也可以使用反向代理工具,让本地自建的私人媒体平台在公网环境中远程访问。
  • 搭建媒体服务器,很多人需要转码,如果你是 intel 6代以上的处理器带核显的话基本上解码 4K 码率视频是没问题的,想检验有没有正确安装核显驱动的话可以在 ssh 输入以下代码,通常安装 debian 12 这样的系统是自带驱动的不用担心。如果没有正确安装驱动的话,请自行解决。
  • 如果输出了 card0 和 renderD128,说明显卡驱动安装正常,可以进行硬件解码。
text
ls /dev/dri

1 Jellyfin

Jellyfin 是一个相对知名的媒体服务器,在 NAS 平台上比较受欢迎。笔者没有 NAS 这样的专业设备,只有一台淘汰下来的台式机,好在这台台式机配置不算太低,并且 Jellyfin 有 Windows、Linux 和 Docker 版本的服务端,可以比较简单地搭建 Jellyfin 服务器。

这个是 Jellyfin 的官方文档。

如果是 x86 处理器解码有核显基本没问题的,如果是 arm 搭建的 docker,解码目前只有 rk3566,rk3588(可以10bit SDR)以上能够解码。并且只有 Jellyfin 有驱动,Emby 是没有驱动的。折腾 ARM 不如直流用第三方 APP,最后我会介绍第三方的 APP。

YAML
# 官方文档
# https://hub.docker.com/r/nyanmisaka/jellyfin
# 媒体库规范化命名手册
# https://emby.media/support/articles/Home.html

# ---

name: jellyfin
# 最后编辑时间:2025-02-12
services:
  jellyfin:
    # 镜像地址
    image: nyanmisaka/jellyfin:latest
    # 容器名
    container_name: jellyfin
    # 主机名
    hostname: jellyfin
    # 特权模式,赋予容器几乎与主机相同的权限,给 root 即可
    privileged: true
    environment:
      # 时区
      - TZ=Asia/Shanghai
      # 最高权限,和上面特权模式重复,开一个就行
      #- UID=0
      #- GID=0
      #- GIDLIST=0
      # 更换为自己的http代理
      # - ALL_PROXY=http://【IP:PORT】
      # 更换为自己的http代理
      # - HTTP_PROXY=http://【IP:PORT】
    volumes:
      # 媒体库路径
      - /mnt/media:/mnt/media
      # amilys-emby配置文件
      - /docker/apps/jellyfin:/config
    # 驱动
    devices:
      # 开启硬件转码
      - /dev/dri:/dev/dri
    # 网络模式  
    network_mode: bridge
    # 端口
    ports:
      # http webUI端口:8096,https webUI端口:8920
      - 8096:8096
      - 8920:8920
    # 重启策略,总是重启
    restart: always

2 Emby

‌Emby‌ 是一个功能强大的媒体服务器软件,主要用于组织、管理和共享个人的音乐、电影、电视节目和其他媒体文件。Emby 能够将个人视频、音乐和照片整合在一起,并通过服务器自动转换和流式传输,使得这些媒体可以在任何设备上播放‌。

  • 主要功能
    • 媒体转换和流式传输‌:Emby 服务器会自动转换媒体格式,确保在任何设备上都能流畅播放‌。
    • 多设备访问‌:用户可以通过 Emby Connect 轻松访问个人媒体,无论是在家还是在外‌。
    • 直播电视和 DVR 管理‌:支持直播电视的流式传输和管理 DVR 功能‌。
    • 家长控制‌:提供丰富的家长控制功能,可以轻松管理家庭成员对媒体内容的访问权限‌。
    • 云同步‌:支持云同步功能,用户可以流式传输云同步的媒体内容。
  • 用户评价和使用场景
    • Emby 的用户评价普遍较好,用户认为其功能全面且易于使用。用户可以将视频、音乐和图片等各种媒体整合在一起,随时进行数据传输,并且提供了电视直播功能。Emby 适合需要在家中或外出时访问个人媒体的用户,特别是那些希望在一个平台上管理所有媒体类型的用户‌。
    • 说了这么多,Emby 其实就是 Jeffyfin 的付费版本,优点就是 APP 有人发开,前提你得是 Android 用户,苹果 iOS 我建议你付费软件。Emby 小秘就是开发非常好的 Android 版本。
YAML
# 官方文档
# https://hub.docker.com/r/amilys/embyerver
# 媒体库规范化命名手册
# https://emby.media/support/articles/Home.html

# ---

name: amilys-emby
# 最后编辑时间:2025-02-12
services:
  amilys-emby:
    # 镜像地址,如需测试版追新,latest更改为beta
    # arm64v8设备使用 amilys/embyserver_arm64v8
    image: amilys/embyserver:beta
    # 容器名
    container_name: amilys-emby
    # 主机名
    hostname: amilys-emby
    # 特权模式,赋予容器几乎与主机相同的权限,给root即可,使用
    privileged: true
    environment:
      # 时区
      - TZ=Asia/Shanghai
      # 最高权限,和上面特权模式重复,开一个就行
      #- UID=0
      #- GID=0
      #- GIDLIST=0
      # 更换为自己的http代理
      # - ALL_PROXY=http://【IP:PORT】
      # 更换为自己的http代理
      # - HTTP_PROXY=http://【IP:PORT】
    volumes:
      # 媒体库路径
      - /mnt/Media:/mnt/Media
      # amilys-emby配置文件
      - /docker/apps/amilys-emby:/config
    # 驱动
    devices:
      # 开启硬件转码
      - /dev/dri:/dev/dri
    # 网络模式  
    network_mode: bridge
    # 端口
    ports:
      # http webUI端口:8096,https webUI端口:8920
      - 8096:8096
      - 8920:8920
    # 重启策略,总是重启
    restart: always

3 Plex

最后来介绍一款经典的 Plex 软件,是收费的,主要是解码收费。需要注意以下三点:

  • 网络选择 host 模式,不然要写很多端口,web 端口是 32400
  • Plex 访问地址是 http://IP:32400/manage
  • Plex 配置文件必须填写令牌,https://plex.tv/claim⁠ 获取令牌,4分钟令牌失效
YAML
# 官方文档
# https://plex.tv

# ---

name: plex
# 最后编辑时间:2025-02-12
services:
  plex:
    # 镜像地址
    image: jaymoulin/plex
    # 容器名
    container_name: plex
    # 主机名
    hostname: plex
    # 特权模式,赋予容器几乎与主机相同的权限,给root即可,使用
    privileged: true
    environment:
      # 时区
      - TZ=Asia/Shanghai
      # 最高权限,和上面特权模式重复,开一个就行
      #- UID=0
      #- GID=0
      #- GIDLIST=0
      # https://plex.tv/claim⁠ 获取令牌,4分钟令牌失效
      - PLEX_CLAIM=替换我,请在线获取令牌 
      # 版本docker
      - VERSION=docker
    volumes:
      # 媒体库路径
      - /mnt/media:/mnt/media
      # amilys-emby配置文件
      - /docker/apps/plex:/config
      # 转码缓存
      - /docker/apps/plex/transcode:/transcode
    # 驱动
    devices:
      # 开启硬件转码
      - /dev/dri:/dev/dri
    # 网络模式  
    # 32400是webUI访问端口 访问地址 http://IP:32400/manage
    network_mode: host
    # 重启策略,总是重启
    restart: always

容器项目&媒体类

https://blog.nw177.cn/blog/10-技术专栏/10-docker/04.容器项目-媒体类
作者
张萌萌
发布于
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。