Yes, one GPU can often handle video transcoding and local AI together when video engines, compute capacity, VRAM, power, and drivers retain enough headroom.
Media transcoding may use dedicated decode and encode blocks, while an AI model relies mainly on matrix or general compute and holds model weights plus context in VRAM. That separation makes concurrency possible, but it is not isolation: filters, tone mapping, model loading, memory pressure, clocks, thermals, and shared driver contexts can still make one workload interrupt the other. The answer must come from a staged concurrent test on the actual card.
Confirm Which GPU Engines Each Workload Uses
Run one hardware transcode and record decode, encode, compute, memory-controller, VRAM, and power activity. Then stop it and run one representative AI request with the same measurements.
A media server can use fixed-function video engines while an AI runtime uses CUDA, ROCm, oneAPI, or another compute path. This often allows overlap, but subtitle burn-in, scaling, and tone mapping may move part of the video pipeline onto general compute.
If the media session shows only CPU use, repair hardware transcoding before testing coexistence. If the AI model runs mostly on CPU because it does not fit in VRAM, the shared-GPU question has already become a broader system-memory and CPU-capacity problem.
Establish Stable Single-Workload Baselines
Measure the media stream alone through startup, a peak scene, seeking, and resume. Record transcode speed, buffer health, GPU-engine load, VRAM, CPU use, and power.
Run the AI model alone with the intended quantization, context size, batch, and concurrency. Record model-load time, tokens per second, time to first token, VRAM after loading, and peak memory as the context grows. Ollama users have documented partial GPU offload, which must be distinguished from a fully GPU-resident baseline.
The ZimaSpace guide to checking a GPU for a home NAS provides the surrounding hardware and power checks needed before concurrent testing.
Reserve VRAM for Both the Model and Video Pipeline
Record idle VRAM, model-resident VRAM, context growth, and the additional memory allocated when video decode, filters, and encode start. Keep a deliberate margin instead of planning from the card’s printed capacity.
AI models can remain resident after a request and block other GPU work. An Ollama issue describes a model staying in VRAM until the service was restarted when another application needed the GPU.
Use a smaller quantization, shorter context, lower parallelism, shorter keep-alive, or a smaller model when the combined peak approaches the VRAM limit. Do not treat system-memory spill as equal capacity; it can sharply increase latency and destabilize both services.
Run a Staged Concurrent Load Test
Start the AI model and allow it to become resident, then begin one ordinary hardware transcode. Add a long prompt or concurrent AI request during a high-bitrate scene and observe both services for several minutes.
Increase only one dimension at a time: another media stream, longer context, another AI request, subtitle burn-in, or HDR tone mapping. Record the first point where transcode speed falls below real time, playback buffers, AI latency spikes, or the GPU resets.
| Observed failure | Likely shared constraint | Next test |
|---|---|---|
| AI model will not load | VRAM reservation | Unload model or reduce model/context size |
| Video buffers only during generation | Compute, power, or filter contention | Test plain SDR transcode without GPU filters |
| AI slows but video remains stable | Compute scheduling | Limit AI concurrency or prioritize playback |
| Both containers lose GPU access | Driver or context failure | Inspect kernel and container-runtime logs |
The practical limit is the last combination that remains stable during startup and peak work, not the number of sessions that briefly appear in a dashboard.
Watch for Driver and Container Context Failures
Expose the same physical GPU intentionally to both containers and verify device identifiers, driver libraries, runtime versions, and permissions. Do not accidentally pass different render nodes or hide the GPU from one service.
Shared access can fail even after hours of normal operation. An Ollama Docker report described CUDA context errors and noted that Jellyfin then lost NVIDIA hardware transcoding until its container restarted, showing a cross-service GPU context failure.
Capture the AI, media-server, container-runtime, kernel, and GPU-driver logs from the same timestamp. Restarting one container may restore service, but the permanent fix belongs in the driver, runtime, model-memory, or concurrency boundary that triggered the shared failure.
Control Model Residency, Queueing, and Service Priority
Decide whether the model must remain loaded all day or can unload after an idle period. Persistent residency improves first-token latency but reserves VRAM even when the media server needs burst capacity.
Multiple GPU applications can technically share a device while still competing destructively when one consumes nearly all memory. NVIDIA container users have specifically raised the case where one container saturates GPU memory while another workload is expected to run.
Give playback the stricter service objective: cap AI parallelism, queue long generations, unload oversized models before family viewing hours, or route batch embeddings to a schedule. Do not rely on a generic container CPU priority to control GPU memory and execution behavior.
Know When to Split the Workloads
Keep one GPU when the intended model fits with margin, ordinary transcodes remain faster than real time, AI latency is acceptable, and failures do not propagate between containers. Document the tested model, context, stream count, and filter path.
Split the workloads when large models consume nearly all VRAM, several users transcode concurrently, HDR or subtitle filters need compute, AI requests are latency sensitive, or one service must remain available during driver maintenance.
The ZimaSpace checklist of local AI warning signs provides the stopping boundary when shared compute begins to weaken the server’s core storage and media reliability.
Support & Tips
More to Read

Why Does a Docker Volume Restore Recreate File Contents but Drop Extended Attributes?
A volume-restore diagnosis covering xattr inventory, tar and Rsync options, namespaces, destination support, privileges, labels, app metadata, and tests.

Why Does a Running Container Keep Its Old Memory Limit After the Compose File Changes?
A memory-limit diagnosis covering live cgroups, restart versus recreation, Compose fields, hard and soft limits, parent scopes, swap, and runtime heaps.

Why Does Restarting a Reverse Proxy Invalidate Every Session for One Self-Hosted App?
A session-loss diagnosis covering restart scope, cookie ownership, secret rotation, cache-backed sessions, sticky routing, auth gateways, and recovery.

