The problem this solves
If your Emby server has a graphics card but playbacks keep pinning the CPU, you are usually looking at one of three things: the Emby user cannot open the card, the driver is not answering, or the card's codecs are not ticked in Emby. Guessing costs evenings. Transcode Doctor answers the question with evidence: it tests NVIDIA NVENC, Intel QuickSync and VA-API (Intel and AMD) using Emby's own ffmpeg, reports the measured speed, and tells you the exact fix when something blocks acceleration. It also explains, in plain words, why each recent playback was transcoded at all.
The plugin only reports. It never changes your Emby settings, so nothing in Emby depends on it.
Prerequisites
- Emby Server 4.10.1 or newer (Linux, Windows or Docker).
- An NVIDIA, Intel or AMD graphics card with its driver, reachable by Emby. For NVIDIA, the driver that provides
nvidia-smi; for Intel and AMD, a/dev/drirender device the Emby user can open, usually through therendergroup. In Docker, the device must be passed into the container. - Hardware transcoding in Emby itself needs Emby Premiere.
- A Transcode Doctor license: a free 30-day trial is enough for a first diagnosis. See the product page.
Step 1 — Install the plugin
- Sign in to your MediaLab Works account, open Licenses and download the plugin DLL.
- Copy the DLL into the Emby plugins folder and restart Emby Server:
- Linux (package):
/var/lib/emby/plugins/ - Docker: the
pluginsfolder inside your Emby config volume - Windows:
%AppData%\Emby-Server\programdata\plugins\
- Linux (package):
- Open Transcode Doctor in the Emby dashboard menu and click License. Paste your license key and activate it, or enter your e-mail to start the free 30-day trial. The plugin binds the key to this server and shows the license as Active.
The license is checked once a day and at every Emby start. Without internet the plugin keeps working for 7 days after the last successful check.
Step 2 — Run the hardware acceleration diagnosis
On the Transcode Doctor page, click Run the tests. The plugin:
- checks the NVIDIA card and the
/dev/dridevices, with the permissions of the Emby process; - generates a few short test clips with Emby's ffmpeg in Emby's cache folder (your media is not touched);
- tries each method at decoding H.264, HEVC, HEVC 10-bit, MPEG-2 (TV), VP9 and AV1 and at encoding H.264 and HEVC.
Each test takes at most a minute, and the table shows what works and how fast. AV1 encoding is not tested, because Emby's ffmpeg cannot test it.
Step 3 — Read the problems list and apply the fix
If something blocks acceleration, the page names it and gives the fix. The common cases:
- The Emby user is missing from the
rendergroup. The page shows the command to run. After adding the user, restart Emby and run the tests again. This is the usual reason every VA-API and QuickSync test fails. - An NVIDIA card whose driver does not respond. If
nvidia-smidoes not answer, every NVENC test fails; fix the driver first. - ffmpeg not found. The plugin tests with Emby's bundled ffmpeg, so this points at the Emby installation itself.
- Docker. The GPU device must be passed into the container; the plugin can see what the Emby process can see, no more.
If no hardware method passes the tests, transcoding stays on the CPU — that is the honest result, and the report tells you so.
Step 4 — Tick the recommended method in Emby
The Recommendation section gives you the method that works, the card's codecs, an estimate of how many 1080p transcodes can run at the same time, and where to tick them. The plugin does not change these settings: open Emby's Settings → Transcoding, set hardware acceleration to Advanced and tick the card's codecs. Emby picks the detected hardware codecs itself.
If the tests pass but playbacks still run on the CPU, this settings page is the first place to check.
Step 5 — Find out why each playback transcodes
The Why it transcodes view lists recent transcoded playbacks (up to 500 are kept): when, who, which app and device, the title, the reasons in plain words with what can be done, and whether the GPU or the CPU did the work. Typical reasons the documentation calls out:
- Burned-in PGS subtitles: the subtitle format forces a video transcode even when the video itself would direct play.
- HDR on an SDR screen: the tone mapping has to happen somewhere.
- Audio codecs: the client cannot decode the track, so the audio is converted.
- The app's bitrate limit: a remote client with a low limit asks for a lower bitrate.
Some of these are worth fixing (a different subtitle track, a client setting), some are simply what the client asked for. Either way you now know which one it is instead of guessing.
Step 6 — Watch the activity log for CPU fallbacks
When a video transcode runs on the processor although the last diagnosis found a working hardware method, the plugin writes an entry in Emby's activity log. The alert is on by default and only writes locally. If it fires while your tests pass, go back to Settings → Transcoding and check the ticked codecs.
Tips and troubleshooting
- Run the tests again after a driver, Emby or hardware change. A report from before an upgrade says nothing about the current state.
- Every VA-API / QuickSync test fails: check the problems list; usually it is the
rendergroup or the Docker device mapping. - Every NVENC test fails: the NVIDIA driver is missing or
nvidia-smidoes not respond. - No hardware method passed: transcoding stays on the CPU. The recommendation and the per-playback reasons still help you reduce how often it happens.
- Where things are stored: the last report and the history live in the plugin's
state/folder; the synthetic clips sit in the cache folder. Nothing leaves the server except the licensing check — see Licensing and privacy in our plugins. - Hardware coverage: NVIDIA (NVENC) was verified on a real Quadro M2000. Intel QSV and VA-API are detected and tested by the plugin but were not tested on real hardware. AMD AMF, Apple VideoToolbox and Rockchip are not supported. The checks are Linux-oriented; Windows was not tested.
- Client compatibility: watching and alerts are server-side and work with any client that triggers a transcode. The admin UI is Emby Web.
- Updates: from the License page you can install an update or roll back to the previous version; restart Emby after either. See the changelog.
More background is in our knowledge base and FAQ; for anything else, contact us.
Conclusion
A GPU that Emby cannot use is worse than no GPU at all: you pay for it and still transcode on the CPU. Transcode Doctor turns that into a short, repeatable check — run the tests with Emby's own ffmpeg, apply the one fix the problems list names, tick the codecs in Emby, and then read the per-playback reasons to see what is actually worth changing. Start with the user guide and the product page.