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:
- A CPU and/or GPU that supports hardware transcoding.
- A Plex Pass.
- Enabling hardware transcoding in Plex.
- 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
-
Open the Plex Web app.
-
Navigate to Settings > Server > Transcoder to access the server settings.
-
Click on Show Advanced in the upper-right corner to expose advanced settings.
-
Check off Use hardware acceleration when available and Use hardware-accelerated video encoding.
-
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
-
Play a video on the Plex app.
-
Open the Settings in the Plex app.
-
Under Playback Settings > Quality, select Show All and select Convert to 480p.
-
Open the Plex Web App, and click on Activity in the upper right hand corner, then select Dashboard.
-
Click the Show Details icon.
-
If hardware acceleration is being used, you should see (hw) in the Video format.
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