#13904·obs-studio

AV1 (NVENC) freezes in browser software decoding

Author: leporelCreated Sep 17, 2026Updated Sep 17, 2026

Operating System Info

Windows 11

OBS Studio Version

32.2.2

OBS Studio Version (Other)

32.1

Summary

Streams encoded with AV1 (NVENC) through OBS Studio 32.2 using Simple Output mode freeze in Chromium-based browsers (and Firefox) when hardware acceleration is disabled (software decoding). The first GOP may play, but then the reference chain breaks: video stalls, pliCount grows continuously, and the stream becomes unwatchable. The same NVENC AV1 encoder driven by FFmpeg v8 produces a stream that decodes cleanly in the exact same browser setup with hardware acceleration disabled.

This appears to be a bitstream-shape issue specific to OBS’s output path. The symptom matches a known AV1 WebRTC problem: the encoded bitstream lacks OBU_TEMPORAL_DELIMITER and/or contains problematic Padding OBUs, which software AV1 decoders (e.g., dav1d) in browsers cannot reassemble correctly.

Steps to Reproduce

  1. OBS Studio 32.2, Simple Output mode.
  2. Select NVIDIA NVENC AV1 as the encoder.
  3. Set a bitrate and stream to any WebRTC WHIP endpoint.
  4. In a browser (Chrome/Firefox), disable hardware acceleration (force software AV1 decoding).
  5. Open the stream.
  6. Observe: picture freezes within seconds; chrome://webrtc-internals shows pliCount climbing indefinitely.

Expected Behavior

The AV1 stream should decode continuously in software, as it does when the same NVENC AV1 encoder is driven by FFmpeg v8.

Actual Behavior

  • Video freezes shortly after playback starts.
  • pliCount grows monotonically.
  • The issue does not occur when hardware acceleration is enabled (hardware AV1 decode on GPUs that support it).
  • The issue does not occur with the same hardware and browser when the AV1 stream is produced by FFmpeg v8 instead of OBS.

Additional Encoder Options Tested

In Simple Output’s Custom Encoder Settings field, various combinations of AV1 NVENC options were tested (including enableBitstreamPadding, keyint, bframes, tune). None of these eliminated the problem. Some settings had a minor temporary effect (e.g., delaying the freeze by ~1 minute), but the stream always degraded and pliCount eventually began rising. No option combination restored full software-decode compatibility.

Working FFmpeg Configuration (for comparison)

The following FFmpeg v8 settings with the NVENC AV1 encoder produce a stream that decodes correctly in the same browser with hardware acceleration disabled:

av_dict_set(&opts, "preset", "p5", 0);
av_dict_set(&opts, "tune", "ull", 0);
av_dict_set(&opts, "rc", "cbr", 0);
av_dict_set(&opts, "maxrate", std::to_string(bitrate_).c_str(), 0);
av_dict_set(&opts, "minrate", std::to_string(bitrate_).c_str(), 0);
av_dict_set(&opts, "spatial_aq", "1", 0);
av_dict_set(&opts, "aq-strength", "8", 0);
av_dict_set(&opts, "multipass", "qres", 0);
av_dict_set(&opts, "repeat_headers", "1", 0);

This confirms that the NVENC hardware and the browser’s software decoder are capable of handling AV1. The failure is specific to how OBS processes or packages the AV1 bitstream.

Environment

  • OBS Studio: 32.2
  • FFmpeg: v8 (used for comparison)
  • Encoder: NVIDIA NVENC AV1 (GPU model: RTX 5070 Driver: 616.92 (WHQL))
  • Browser: Chrome latest / Firefox latest
  • Hardware acceleration: disabled (software decode)

Supporting Context

A closely related issue in the MediaMTX project (#5774) documents the same class of failure with AV1 streams over WebRTC. The root cause identified there is that some AV1 encoders omit OBU_TEMPORAL_DELIMITER (spec-permitted but poorly tolerated by libwebrtc) and/or emit large Padding OBUs that fragment across RTP packets and break reassembly. NVENC itself is known to insert Temporal Delimiters correctly, so the suspicion is that OBS’s AV1 output pipeline is stripping or not forwarding them when using Simple Output.

Impact

Users with GPUs lacking hardware AV1 decode (e.g., GTX 10-series, older iGPUs) or users who disable hardware acceleration for stability cannot watch AV1 streams from OBS at all. FFmpeg’s NVENC path works, so this is specific to OBS’s output handling.