You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3.8 KiB

OBS GStreamer Source Plugin - Setup Guide

Arch Linux (and variants)

Install everything in one step:

yay -S obs-gstreamer gst-plugins-bad-libs gst-plugin-va gst-plugin-qsv gst-libav

Skip to the OBS pipelines below.


Windows

1. Install GStreamer

Download the latest MinGW x86_64 runtime installer from the official GStreamer site:

https://gstreamer.freedesktop.org/download/#windows

The current stable version is 1.28.1. Make sure you pick the MinGW variant and the x86_64 architecture, not MSVC, and not x86.

Run the installer. When prompted, select the Complete installation to ensure all plugins (including libav, needed for software decoding) are included. It will install to C:\gstreamer\1.0\mingw_x86_64\ by default.

2. Add GStreamer to PATH

Open PowerShell and run:

[Environment]::SetEnvironmentVariable("PATH", "C:\gstreamer\1.0\mingw_x86_64\bin;" + [Environment]::GetEnvironmentVariable("PATH", "User"), "User")

This prepends the GStreamer binaries to your user PATH. You can also do this manually via System Properties > Environment Variables by adding C:\gstreamer\1.0\mingw_x86_64\bin to your user PATH.

3. Install obs-gstreamer

Download obs-gstreamer.zip from the latest release (currently v0.4.1):

https://github.com/fzwoch/obs-gstreamer/releases

Extract the zip and copy obs-gstreamer.dll from the windows folder to:

C:\Program Files\obs-studio\obs-plugins\64bit\

Restart OBS if it was running.


OBS Pipelines

Add a GStreamer Source in OBS and paste the appropriate pipeline. Replace <IP> with the server IP address, which will be provided during the event.

H.265 decoder reference

Use the tables below to find the right decoder element for your hardware. Replace <DECODER> in the game stream pipeline with your chosen element. Prefer vendor-specific over generic, and generic HW over software.

Linux

Hardware Type Vendor-Specific Generic HW Software Fallback
NVIDIA GPU (Maxwell+) dGPU nvh265dec - avdec_h265
Intel iGPU (Skylake+) iGPU qsvh265dec vah265dec avdec_h265
Intel Arc dGPU qsvh265dec vah265dec avdec_h265
AMD iGPU (Ryzen 2000G+) iGPU vah265dec - avdec_h265
AMD dGPU (Polaris+) dGPU vah265dec - avdec_h265
No GPU / F-series / non-G Ryzen CPU - - avdec_h265

Windows

Hardware Type Vendor-Specific Generic HW Software Fallback
NVIDIA GPU (Maxwell+) dGPU nvh265dec d3d11h265dec avdec_h265
Intel iGPU (Skylake+) iGPU qsvh265dec d3d11h265dec avdec_h265
Intel Arc dGPU qsvh265dec d3d11h265dec avdec_h265
AMD iGPU (Ryzen 2000G+) iGPU - d3d11h265dec avdec_h265
AMD dGPU (Polaris+) dGPU - d3d11h265dec avdec_h265
No GPU / F-series / non-G Ryzen CPU - - avdec_h265

Game stream pipeline

Game stream (H.265 over TCP with audio):

tcpclientsrc port=5000 host=<IP> ! matroskademux name=demux ! queue ! h265parse ! <DECODER> ! videorate ! videoconvert ! video.  demux. ! queue ! audiorate ! audioconvert ! audio.

Replace <DECODER> with the element from the tables above (e.g. nvh265dec, qsvh265dec, vah265dec, d3d11h265dec, avdec_h265).

Webcam (MJPEG over TCP):

tcpclientsrc port=5001 host=<IP> do-timestamp=true ! multipartdemux ! image/jpeg, framerate=30/1 ! jpegparse ! jpegdec ! queue ! video.

For additional webcams, duplicate the pipeline and increment the port number (5002, 5003, etc.).

TomorrowLAN stream layout

  • Quad stream: one player cam per IP (4 IPs total, one webcam each).
  • Main stream: two player cams per IP (2 IPs total, two webcams each, ports 5001 and 5002).