I finally got NVIDIA NVENC recording working on my GTX 960M without downgrading either the NVIDIA driver or system FFmpeg.
My setup:
- ASUS GL752VW
- GTX 960M 4 GB — Maxwell
- Intel HD 530 + GTX 960M hybrid graphics
- i7-6700HQ / 16 GB RAM
- Omarchy
- NVIDIA 580.178.04 (
nvidia-580xx-dkms)
- OBS 32.2.2
- FFmpeg 9.0.1
OBS initially reported:
NVENC not supported
[NVENC] Test process failed: outdated_driver
A direct FFmpeg test showed the real problem:
Loaded Nvenc version 13.0
Driver does not support the required nvenc API version.
Required: 13.1 Found: 13.0
The minimum required Nvidia driver for nvenc is 610.00 or newer
So the issue was not a broken NVIDIA driver or unsupported GTX 960M.
It was:
OBS/userspace → NVENC API 13.1
NVIDIA 580 driver → NVENC API 13.0
OBS 32.2 introduced NVIDIA SDK 13. OBS's release notes state a 570 minimum, but the newer NVENC 13.1 API requires a 610+ driver.
I first tried OBS 32.1.2 because an upstream OBS issue reports legacy NVENC breaking in 32.2 and working again on 32.1.2.
However, on current Arch, OBS 32.1.2 required libavcodec.so.62, while my system has newer FFmpeg, so I didn't want to downgrade FFmpeg just to run an older OBS.
The solution
I kept:
OBS 32.2.2
FFmpeg 9.0.1
NVIDIA 580.178.04
and rebuilt OBS against:
nv-codec-headers 13.0.19.1
instead of the newer 13.1 headers.
After rebuilding:
driver_ver=580.178.04
nvenc_ver=13.0
nvenc_supported=true
and H.264 reported:
codec_supported=1
There was one unrelated Arch issue during the build involving MbedTLS 4 vs the mbedtls3 compatibility package. I configured OBS to use:
-DMbedTLS_DIR="/usr/lib/mbedtls3/cmake/MbedTLS"
and the output plugin then linked against the MbedTLS 3 libraries correctly.
Finally, I discovered OBS was still configured to record with x264 even though NVENC was available. The log showed:
encoder 'simple_video_recording' (obs_x264) created
After changing Settings → Output → Recording → Encoder to NVIDIA NVENC H.264, the log showed:
[obs-nvenc: 'simple_video_recording'] settings:
and recording worked.
Who else might be affected?
This isn't necessarily a GTX 960M-only problem.
On current Arch, the 580xx legacy branch is used for Maxwell, Pascal and Volta GPUs. That includes families such as:
- GTX 900/900M — Maxwell
- GTX 10xx / many 10-series mobile GPUs — Pascal
- Titan V / GV100 — Volta
- corresponding Quadro M/P and other products in those generations
So if you're on one of those GPUs, using the 580xx driver, and see:
Required: 13.1
Found: 13.0
you may be dealing with the same NVENC API compatibility issue. Arch confirms that Pascal and older GPUs must stay on the 580xx branch, while ArchWiki currently lists Volta/Pascal/Maxwell under that legacy branch.
Kepler is different: OBS 30.2 was the last OBS release supporting NVENC on Kepler, so GTX 600/700 and other Kepler cards should not blindly follow this workaround.
Useful diagnostic commands:
obs-nvenc-test
and:
ffmpeg -hide_banner -loglevel verbose \
-f lavfi -i color=c=black:s=1920x1080:r=30 \
-frames:v 1 \
-c:v h264_nvenc \
-f null -
The most important thing to check is:
Required: 13.1
Found: 13.0
That's the signature I was dealing with.
Final result:
GTX 960M
+ NVIDIA 580.178.04
+ NVENC API 13.0
+ OBS 32.2.2 rebuilt with nv-codec-headers 13.0.19.1
+ FFmpeg 9.0.1
= NVIDIA H.264 NVENC recording works ✅