# OBS GStreamer Source Plugin - Setup Guide ## Arch Linux (and variants) Install everything in one step: ```bash 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: ```powershell [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 `` 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 `` 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= ! matroskademux name=demux ! queue ! h265parse ! ! videorate ! videoconvert ! video. demux. ! queue ! audiorate ! audioconvert ! audio. ``` Replace `` with the element from the tables above (e.g. `nvh265dec`, `qsvh265dec`, `vah265dec`, `d3d11h265dec`, `avdec_h265`). **Webcam** (MJPEG over TCP): ``` tcpclientsrc port=5001 host= 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`).