CPU-based video transcoding is resource-intensive and slow at scale — GPU-accelerated transcoding dramatically improves throughput for media servers processing significant video content. This guide covers setup.
Why Hardware Acceleration Matters for Media Servers
See VPS Requirements for Media Streaming Servers for general context — transcoding (converting video to different formats/qualities on the fly, or for adaptive bitrate as in How to Set Up Adaptive Bitrate Streaming) is genuinely CPU-intensive; GPU acceleration can provide dramatically better throughput for the same hardware cost.
Prerequisites: A GPU-Equipped VPS
Requires a VPS plan specifically offering GPU access with hardware video encoding capability — verify your specific GPU supports hardware video encoding (not every GPU has dedicated video encode/decode silicon) before planning around this capability.
Step 1 — Install GPU Drivers
sudo apt install nvidia-driver-535 -y
See general GPU driver installation guides for your specific GPU vendor — correct driver installation is the prerequisite for any hardware acceleration to function.
Step 2 — Verify Hardware Encoding Support
ffmpeg -encoders | grep nvenc
Confirms FFmpeg was built with hardware encoding support for your specific GPU — some FFmpeg builds don't include this by default, potentially requiring a rebuild or alternative package with hardware acceleration support included.
Step 3 — Use Hardware Encoding in FFmpeg
ffmpeg -i input.mp4 -c:v h264_nvenc -b:v 5000k output.mp4
Replace the standard software encoder (libx264) with the hardware-accelerated equivalent (h264_nvenc for NVIDIA GPUs) — dramatically faster encoding for the same output, though with some potential quality trade-offs at identical bitrates compared to software encoding.
Configuring Jellyfin/Plex to Use Hardware Transcoding
Both major self-hosted media servers (see How to Install Jellyfin Media Server on a VPS and How to Install Plex Media Server on a VPS) support hardware transcoding configuration in their respective settings — enable and select your specific GPU in the transcoding settings.
Understanding the Quality vs Speed Trade-Off
Hardware encoding is significantly faster but historically has sometimes produced marginally lower quality at equivalent bitrate compared to software encoding — modern hardware encoders have narrowed this gap considerably; test and compare for your specific use case if quality is a genuine priority alongside speed.
Monitoring GPU Utilization During Transcoding
nvidia-smi -l 1
See How to Monitor GPU Usage on a VPS (nvidia-smi and Beyond) — verify hardware transcoding is genuinely being utilized (GPU utilization increasing during transcode operations) rather than silently falling back to CPU-based software encoding.
Handling Multiple Simultaneous Transcode Sessions
GPUs have a limited number of concurrent hardware encoding sessions they can handle — understand your specific GPU's concurrent session limits if supporting multiple simultaneous streaming users, since exceeding this limit means falling back to slower software encoding for excess sessions.
Cost Considerations
GPU-equipped VPS instances carry meaningfully higher cost than CPU-only instances — weigh this against your genuine transcoding needs; for a media server with modest concurrent user count, CPU-based transcoding might remain perfectly adequate without the additional GPU cost.
Common Errors
Hardware transcoding configured but still shows high CPU usage during playback — verify the specific codec/format combination being transcoded is actually supported by your GPU's hardware encoder; not every format combination has hardware acceleration support, silently falling back to CPU-based software encoding.
Continue Reading
- How to Monitor GPU Usage on a VPS (nvidia-smi and Beyond)
- VPS Requirements for Media Streaming Servers
- How to Set Up a Video Transcoding Pipeline with FFmpeg
Browse more articles in Media & Streaming Servers.