Raspberry Pi Streaming: Is the Switch from Kodi to Plex Worth It?

Raspberry Pi Streaming: Is the Switch from Kodi to Plex Worth It?

For years I used Kodi to play media on my Raspberry Pi 4 (2GB version), but somehow it was never right. It only works on one device, has a slow interface, sometimes doesn't load subtitles and takes up a lot of resources even when I'm not using it.

I looked for an alternative, tried emby first, but that had bugs too.

So I finally ended up with Plex, which I had read a lot of good things about, so I installed it (first of all: I'm very happy with it).

The differences between Kodi and Plex are broadly in Plex's favour:

  • Content can be played on multiple devices at the same time
  • Separate users with their own history (everyone knows where they are with a particular movie/series)
  • Built-in subtitle download by default
  • Orders of magnitude less resource usage
  • Content can be viewed remotely, even over the Internet

Performance comparsion (Kodi vs. Plex)

Kodi

Idle:

Watching 720p movie:

Plex

Idle:

Watching 720p movie:

As you can see from the screenshots above, Kodi causes significantly more CPU load than Plex even when idle (I could barely get the latter to show up in the top output :D)

Less load, meaning less heat production and more resources for other tasks. This is one of the reasons why Plex is better.

In this article I'll show you how to configure this from start to finish.

Setup Docker Environment

Personally, I'm hooked on containerization lately, so it was a given to run this in a Docker container as well.

I recommend using Portainer to manage Docker containers.

  • Open a terminal
  • Being root with sudo su
  • Install Docker with the following command:
    apt update && apt upgrade -y && curl -sSL https://get.docker.com | sh
  • Create a new file called docker-compose.yml with the following content:

version: '3'

services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /docker/portainer/data:/data
    ports:
      - "9000:9000"

  • Create your own Portainer container by running the docker compose:
    docker compose up -d
  • When finished, open the portainer in your browser:
    http://<YOURIP>:9000
  • Create a user and configure it as you like. Personally, my first todo was to enable dark mode.
  • Create a new Stack (1). Type "plex" as a "Name" (2), then select "Web editor" (3), and put the following code (4) for create Plex container. But before you run it, change the paths to suit your system!

version: "2.1"
services:
  plex:
    image: ghcr.io/linuxserver/plex:arm32v7-1.32.4
    container_name: plex
    network_mode: host
    environment:
      - PUID=1001
      - PGID=1001
    volumes:
      - /docker/plex/config:/config
      - /mnt/Torrent:/mnt/Torrent
    restart: always

  • Hit "Deploy the stack" button at the bottom.
  • You should be able to open Plex in your browser:
    http://<YOURIP>:32400

Configure and tweak Plex

For best performance and playback speed, I have made the following settings. I have highlighted the ones that have the biggest impact on performance in bold.

Plex Web / Quality / Internet Streaming / Video Quality: 2 Mbps

Plex Web / Debug / Debug Level: Disabled

Plex Web / Debug / Direct Play: ON

Plex Web / Debug / Direct Stream: ON

Your Server / General / Send crash reports to Plex: OFF

Your Server / General / Enable Plex Media Server debug logging: OFF

Your Server / General / Enable Plex Media Server verbose logging: OFF

Your Server / Library / Scan my library automatically: ON

Your Server / Library / Run a partial scan when changes are detected: ON

Your Server / Library / Include music libraries in automatic updates: ON

Your Server / Library / Scan my library periodically: OFF

Your Server / Library / Run scanner tasks at a lower priority: ON

Your Server / Network / Enable server support for IPv6: OFF

Your Server / Transcoder / Transcoder quality: Prefer higher speed encoding

Your Server / Transcoder / Background transcoding x264 preset: Very fast

Your Server / Transcoder / Disable video stream transcoding: ON

Your Server / Languages / Automatically select audio and subtitle tracks: ON

Your Server / DLNA / Enable the DLNA server: OFF

 

If you have anything else to share other than the above, let me know in the comments!

One of the coolest things in Plex

Your Server / Transcoder / You can check who and what is watching with deep detail:

 

A frequently asked question is whether I have a Plex subscription. The answer is no, because I don't need one at all. I could do everything without it, as usual :)

If you found this article useful and would like to show your appreciation, please consider making a small donation via PayPal. Your support will help me continue to create valuable content and make my blog even better. Thank you for your contribution!

Comments