树莓派4安装Plex Docker并来一次简测

首先, 疫情时期, 愿大家都平安

今天到了一个树莓派4, 因为我自己本身放了一台迷你主机, 放着plex服务, 我在想树莓派4到底能不能流畅跑得动plex. 所以就试一下把, 哦, 我使用的是docker跑的, 文章包含安装docker, 拉取plex镜像, 配置, 播放全过程, 然后进行简测.

(English version translate by GPT-3.5)

说明

  1. 测试视频有以下几个, 应该可以覆盖到大部分了

    1. 名侦探柯南: 绀青之拳 BDMV Remux H.264, True HD Audio 18GB MKV
    2. 名侦探柯南 第993集 美食广场的阴谋 H.264, AAC 227MB MP4
    3. 名侦探柯南: 零的执行人 BDRip H.265(HEVC), Flac 5.6GB MKV
    4. 夏目友人帐S04 06 玻璃的另一端 H.264 10Bit(我下过来的时候写着10Bit) AAC 160MB MKV
    5. Love, Death and Robot H.265, Ec-3 650MB MP4
    6. 疯狂动物城 BDRip H.264 DTS 16GB MKV
  2. 树莓派4 我使用的是4GB版本的

Cat CPUInfo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
root@raspberrypi:~# cat /proc/cpuinfo 
processor : 0
model name : ARMv7 Processor rev 3 (v7l)
BogoMIPS : 144.00
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xd08
CPU revision : 3

processor : 1
...

processor : 2
...

processor : 3
...

Hardware : BCM2835
Revision : c03111
Serial : 10000000c1e9032e
Model : Raspberry Pi 4 Model B Rev 1.1

Free -m

1
2
3
              total        used        free      shared  buff/cache   available
Mem: 3906 167 3068 8 670 3606
Swap: 99 0 99

安装docker

一条命令搞定

其实安装docker非常简单, 直接一个命令, 至于等待时间么….(建议翻墙)

1
curl -fsSL get.docker.com -o get-docker.sh && sh get-docker.sh

Docker 加速器

在这之前, 我需要从阿里云中获得一个docker加速器, 不然从官网pull镜像, 又是一酸爽的等待.

  1. 登录 阿里云 - 容器镜像服务

    login-aliyun

  2. 然后直接把下面这段shell复制过来就成了, 下面的shell阿里云已经帮我们替换好了地址了(当然用DaoCloud镜像站加速也是可以的)

    copy-shell

    1
    2
    3
    4
    5
    6
    7
    8
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
    "registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker

拉plex镜像

这个镜像的详细使用可以从这里查看, 我选了1个下载量最高的linuxserver/plex - Docker Hub, 不要使用plexinc/pms-docker, 官方镜像没有ARM版本的.

1
docker pull linuxserver/plex

启动plex镜像

我使用如下的命令, 至于为什么要加一个1122:22SSH端口的原因, 只是为了以防万一(结果后面用上了).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
docker create \
--name=plex \
-e PUID=1000 \
-e PGID=1000 \
-p 32400:32400 \
-p 32400:32400/udp \
-p 32469:32469 \
-p 32469:32469/udp \
-p 1122:22/tcp \
-p 5355:5353/udp \
-p 1900:1900/udp \
-v /mnt/plex/config:/config \
-v /mnt/plex/tv:/transcode \
-v /mnt/movies:/data \
--restart unless-stopped \
linuxserver/plex

可以看到成功创建了一个docker plex

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
root@raspberrypi:~# docker create \
> --name=plex \
> -e PUID=1000 \
> -e PGID=1000 \
> -p 32400:32400 \
> -p 32400:32400/udp \
> -p 32469:32469 \
> -p 32469:32469/udp \
> -p 1122:22/tcp \
> -p 5355:5353/udp \
> -p 1900:1900/udp \
> -v /mnt/plex/config:/config \
> -v /mnt/plex/tv:/transcode \
> -v /mnt/movies:/data \
> --restart unless-stopped \
> linuxserver/plex
8a7741bfb60428bcc2a3caa66fafcae98d7596c579dcd65dc30b624efe3bede5

然后启动它, 这里不需要输入完整的hash值, 如果8a开头的hash只有一个, 可以直接用 docker start 8a 也行, docker start 8也成.

1
docker start 8a7741bfb60

成功启动

然后看到docker成功起来了

1
2
3
root@raspberrypi:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8a7741bfb604 linuxserver/plex "/init" 19 seconds ago Up 12 seconds 3005/tcp, 0.0.0.0:1900->1900/udp, 32410/udp, 0.0.0.0:32400->32400/tcp, 0.0.0.0:32400->32400/udp, 0.0.0.0:32469->32469/udp, 8324/tcp, 0.0.0.0:32469->32469/tcp, 32412-32414/udp, 0.0.0.0:1122->22/tcp, 0.0.0.0:5355->5353/udp plex

配置plex

访问页面

此时树莓派的32400端口就映射到了docker的32400端口, plex的网页配置地址是:

1
http://树莓派IP:32400/web

访问后可以看到如下画面

its-web

注册并登录账号

自行注册后, 账号应该会自动登录.

错误: 无法找到服务器

然后, 出现了问题了…各种查后好像初次配置是要用127.0.0.1的方式连接, 然后才会弹出配置. 我就用ssh隧道来继续完成配置

error-found

错误: 使用xshell的ssh隧道功能, 进行配置

  1. 首先, 连接到plex的docker中, 安装openssh和vim

    1
    docker exec -it 8a /bin/bash
  2. 使用APT来安装openssh和vim

    1
    apt update && apt install openssh-server vim vim-common -y
  3. 安装好后, 编辑/etc/ssh/sshd_config, 并将 PermitRootLogin prohibit-password 改为 PermitRootLogin yes

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ......
    #LogLevel INFO

    # Authentication:

    #LoginGraceTime 2m
    # 修改这里
    # PermitRootLogin prohibit-password
    PermitRootLogin yes
    #StrictModes yes
    ........
  4. 修改root密码, 并启动ssh服务

    1
    2
    passwd root
    service ssh start
  5. 使用xshell的话, 新建一个连接, 地址是树莓派的IP, 端口是1122, 然后选择Properties - SSH - Tunneling add-ssh-tunnel

  6. 连接这个ssh就行了

连接到Docker配置

发现服务器

如果遇到了上面的问题, 就是出现No soup for you的情况, 那就要用ssh隧道, 然后打开浏览器访问下面的地址了

浏览器打开这个地址
1
2
3
http://127.0.0.1:32400/web

因为上面配了ssh隧道, 所以访问本机的32400端口的请求会全部通过树莓派1122端口(就是plex docker)并转发到localhost:32400的端口, 而plex会认为这个请求是localhost请求.
然后就看到了这个画面

find-server

添加库

add-library

创建的时候加了 -v /mnt/movies:/data, 所以树莓派的/mnt/movies就映射到了/data目录下

videos

电影列表

video-list

找不到编码

如果看到

1
Conversion failed. A required codec could not be found or failed to install.

这句话, 表示解码器下载失败, 解码器是下载到这个的这个目录的

1
2
3
4
/config/Library/Application Support/Plex Media Server/Codecs

因为创建的时候设了 -v /mnt/plex/config:/config
所以也存在树莓派的/mnt/plex/config中

可以通过日志来看plex正在下载哪个编码器, 也可以重新尝试播放, 它会自动再下载一次, 总有一次下载成功的.

日志目录

1
/config/Library/Application Support/Plex Media Server/Logs/Plex Media Server.log

可以看到哪个编码器下载失败了, 日志结构如下

1
2
3
4
5
6
......
Feb 08, 2020 13:13:27.728 [0xa77f2450] DEBUG - Downloading document http://127.0.0.1:32400/library/metadata/2?checkFiles=1&includeBandwidths=1&offset=-1&X-Plex-Incomplete-Segments=1&X-Plex-Session-Identifier=9y4kv4qpxsk5ajjc2xs8aznq
Feb 08, 2020 13:13:27.750 [0xa77f2450] DEBUG - HTTP requesting GET https://plex.tv/api/codecs/easyaudioencoder?build=linux-armv7hf_neon-standard&deviceId=d6abcef7-53e4-44a9-a050-c1ec7ce7dd5f&oldestPreviousVersion=1%2E18%2E4%2E2171-ac2afe5f8&version=436
Feb 08, 2020 13:13:30.262 [0xa77f2450] WARN - HTTP error requesting GET https://plex.tv/api/codecs/easyaudioencoder?build=linux-armv7hf_neon-standard&deviceId=d6abcef7-53e4-44a9-a050-c1ec7ce7dd5f&oldestPreviousVersion=1%2E18%2E4%2E2171-ac2afe5f8&version=436 (0, No error) (Could not resolve host: plex.tv)
-----这里可以看到下载失败了, 那就手动下载
.....

简测(树莓派4 CPU 超频至2.0G, 室温 9℃)

名侦探柯南: 绀青之拳 H.264 1:49:27

名侦探柯南: 绀青之拳 BDMV Remux H.264, True HD Audio 18GB MKV

原始画质(无法选择字幕) 42℃

TOP
1
2
PID   USER     PR  NI    VIRT    RES     SHR  S  %CPU  %MEM    TIME+    COMMAND
4418 pi 20 0 130724 69572 8632 R 53.5 1.7 0:15.99 Plex Transcoder
随机片段跳转耗时
  1. 点击进度条到出现画面 6秒
  2. 出现画面到跳转到对应时间轴并播放 2秒
播放状态

无卡顿, 但是播放的时候会出现严重的跳帧, 约每播放4秒会跳过1秒

转码成1080p 61℃

TOP
1
2
PID   USER      PR  NI    VIRT    RES     SHR  S  %CPU  %MEM    TIME+    COMMAND
2843 pi 20 0 585476 339720 9856 R 288.7 8.5 5:22.03 Plex Transcoder
随机片段跳转耗时
  1. 点击进度条到出现画面 25秒
  2. 出现画面到跳转到对应时间轴并播放 7秒
播放状态

有, 约20秒/卡顿1次, 卡顿3秒, 卡顿频繁

名侦探柯南 第993集 美食广场的阴谋 H.264 24:44

名侦探柯南 第993集 美食广场的阴谋 H.264, AAC 227MB MP4

原始画质 36℃

TOP
1
2
PID   USER      PR  NI    VIRT    RES     SHR  S  %CPU  %MEM    TIME+    COMMAND
1816 pi 20 0 407508 57204 29780 S 14.9 1.4 1:58.82 Plex Media Serv
随机片段跳转耗时
  1. 点击进度条到出现画面 小于1秒, 近乎即时播放
  2. 出现画面到跳转到对应时间轴并播放 小于1秒, 近乎即时播放
播放状态

1分钟内无任何卡顿, 播放流畅

转码成328p 51℃

TOP
1
2
PID   USER      PR  NI    VIRT    RES     SHR  S  %CPU  %MEM    TIME+    COMMAND
8031 pi 20 0 305676 96348 9528 R 317.9 2.4 0:45.67 Plex Transcoder
随机片段跳转耗时
  1. 点击进度条到出现画面 11秒
  2. 出现画面到跳转到对应时间轴并播放 无跳转到画面卡顿
播放状态

1分钟内无任何卡顿, 播放流畅

名侦探柯南: 零的执行人 HEVC 1:51:20

名侦探柯南: 零的执行人 BDRip H.265(HEVC), Flac 5.6GB MKV

原始画质转码(无法选择原始输出) 73℃

TOP
1
2
PID   USER     PR  NI    VIRT    RES     SHR  S  %CPU  %MEM    TIME+    COMMAND
10115 pi 20 0 626908 341284 9448 R 341.2 8.5 1:16.10 Plex Transcoder
随机片段跳转耗时
  1. 点击进度条到出现画面 21秒
  2. 出现画面到跳转到对应时间轴并播放 10秒
播放状态

无卡顿, 但是播放的时候会出现严重的跳帧, 约每播放10秒会跳过1秒

夏目友人帐Season 4 06 玻璃的另一端 H.264 24:17

夏目友人帐Season 4 06 玻璃的另一端 H.264 10Bit AAC 160MB MKV

原始画质转码(无法选择原始输出) 71℃

TOP
1
2
PID   USER      PR  NI    VIRT    RES     SHR  S  %CPU  %MEM    TIME+    COMMAND
11568 pi 20 0 546356 332752 10668 S 375.5 8.3 0:25.80 Plex Transcoder
随机片段跳转耗时
  1. 点击进度条到出现画面 14秒
  2. 出现画面到跳转到对应时间轴并播放 2秒
播放状态

1分钟内无任何卡顿, 播放流畅

Love, Death and Robot H.265 12:06

Love, Death and Robot H.265, Ec-3 650MB MP4

原始画质转码(无法选择原始输出) 76℃

TOP
1
2
PID   USER      PR  NI   VIRT    RES     SHR  S  %CPU  %MEM    TIME+    COMMAND
12998 pi 20 0 505908 266772 9036 S 352.9 6.7 0:51.67 Plex Transcoder
随机片段跳转耗时
  1. 点击进度条到出现画面 32秒
  2. 出现画面到跳转到对应时间轴并播放 10秒
播放状态

1分钟内无任何卡顿, 播放流畅

疯狂动物城 H.264 1:48:44

疯狂动物城 BDRip H.264 DTS 16GB MKV

原始画质转码(无法选择原始输出) 73℃

TOP
1
2
PID   USER    PR  NI   VIRT    RES     SHR  S  %CPU   %MEM    TIME+    COMMAND
14271 pi 20 0 631596 392168 10296 R 393.8 9.8 0:17.84 Plex Transcoder
随机片段跳转耗时
  1. 点击进度条到出现画面 26秒
  2. 出现画面到跳转到对应时间轴并播放 9秒
播放状态

1分钟内无任何卡顿, 播放流畅

简测汇总(表格)

片名 文件大小 转码 编码 时长 CPU使用 温度 流畅度评估
名侦探柯南: 绀青之拳 17.61GB H.264 1:49:27 53.5% 42℃ 不卡, 有跳帧
名侦探柯南: 绀青之拳 17.61GB H.264 1:49:27 288.7% 61℃ 很卡
名侦探柯南: 美食广场的阴谋 226.04MB H.264 24:44 14.9% 36℃ 完美
名侦探柯南: 美食广场的阴谋 226.04MB H.264 24:44 317.9% 51℃ 完美
名侦探柯南: 零的执行人 5.63GB H.265 1:51:20 341.2% 73℃ 不卡, 有跳帧
夏目友人帐: 玻璃的另一端 160.3GB H.264 10Bit 24:17 375.5% 71℃ 不卡
Love, Death and Robot 656.66MB H.265 12:06 352.9% 76℃ 不卡
疯狂动物城 13.89GB H.264 1:48:44 393.8% 73℃ 不卡