Enabling hardware transcoding in Plex

I had wanted to enable hardware transcoding in Plex for a while, but was under the (incorrect) impression that the CPU in the Docker host didn't support Intel Quick Sync.

Enabling hardware transcoding in Plex

Requirements for using hardware transcoding in Plex:

  1. A CPU and/or GPU that supports hardware transcoding.
  2. A Plex Pass.
  3. Enabling hardware transcoding in Plex.
  4. If using Docker, appropriate Docker container configuration.

CPU support

I has searched the link provided by a lot of references for Plex hardware transcoding and didn't find my CPU listed.

However, I discovered my CPU is there, but you'd have to click the Show More at the bottom quite a bit to finally get to my older CPU.

I have a Xeon E3-1245 v5 CPU in my NAS:

lscpu | grep "^Model name"
Model name:                      Intel(R) Xeon(R) CPU E3-1245 v5 @ 3.50GHz

Looking at the CPU specs from Intel for my specific CPU clearly states that Intel Quick Sync is supported.

Plex Pass

Many years ago, probably more than a decade ago, I bought a lifetime Plex Pass subscription for myself for Christmas.

Money well spent!

Enable hardware transcoding in Plex

  1. Open the Plex Web app.

  2. Navigate to Settings > Server > Transcoder to access the server settings.

  3. Click on Show Advanced in the upper-right corner to expose advanced settings.

  4. Check off Use hardware acceleration when available and Use hardware-accelerated video encoding.

    Use hardware checkboxes

  5. Click Save Changes at the bottom.

Note: Plex does not need to be restarted.

Modify Docker yaml file

In the Plex Docker yaml file, we need to expose to the container.

Add this to the plex specification:

devices:
  - /dev/dri:dev/dri

The updated yaml file:

version: '2'
services:
  plex:
    container_name: plex
    image: plexinc/pms-docker:latest
    restart: unless-stopped
    environment:
      - TZ=America/Denver
      - PLEX_CLAIM=claim-randomstring
    networks:
      homenet:
        ipv4_address: 192.168.1.220
    hostname: PlexServer
    volumes:
      - /mnt/plex:/config
      - /dev/shm:/transcode # Use shared RAM disk for transcoding
      - /mnt/videos:/data
    devices:
      - /dev/dri:/dev/dri # Add hardware transcoding
      -
networks:
  homenet:
    external: true

Verifying hardware transcoding in Plex

  1. Play a video on the Plex app.

  2. Open the Settings in the Plex app.

  3. Under Playback Settings > Quality, select Show All and select Convert to 480p.

  4. Open the Plex Web App, and click on Activity in the upper right hand corner, then select Dashboard.

  5. Click the Show Details icon.

    Show details button

  6. If hardware acceleration is being used, you should see (hw) in the Video format.

Hardware transcoding being used

References

Plex.tv - Support - Using Hardware-Accelerated Streaming https://support.plex.tv/articles/115002178853-using-hardware-accelerated-streaming/

Github - pms/docker - Intel Quick Sync Hardware Transcoding Support https://github.com/plexinc/pms-docker#intel-quick-sync-hardware-transcoding-support

Intel - Products Home >> Product Specifications >> Feature Search https://ark.intel.com/content/www/us/en/ark/search/featurefilter.html?productType=873&0_QuickSyncVideo=True

Server Builds - [Guide] Plex Transcoding and RAM Disks https://forums.serverbuilds.net/t/guide-plex-transcoding-and-ram-disks/625