DEV Community

Will
Will

Posted on

Build OBS Studio 32.x from Source on Debian Trixie (13)

This guide walks through building OBS Studio (v32.1.2+) from source on Debian Trixie. It includes compiling support for:

  • Browser Source (CEF)
  • WebSocket
  • WebRTC (libdatachannel)
  • NVENC (NVIDIA SDK 12.2)

1. Install Build Dependencies

Install all required build tools, Qt6, FFmpeg, Wayland, and plugin dependencies.

Check out the obs-studio-wiki to confirm.

Base Build Tools

sudo apt install cmake extra-cmake-modules ninja-build pkg-config clang clang-format build-essential curl ccache git zsh
Enter fullscreen mode Exit fullscreen mode

Core OBS Dependencies

sudo apt install \
libavcodec-dev \
libavdevice-dev \
libavfilter-dev \
libavformat-dev \
libavutil-dev \
libswresample-dev \
libswscale-dev \
libx264-dev \
libcurl4-openssl-dev \
libmbedtls-dev \
libgl1-mesa-dev \
libjansson-dev \
libluajit-5.1-dev \
python3-dev \
libx11-dev \
libxcb-randr0-dev \
libxcb-shm0-dev \
libxcb-xinerama0-dev \
libxcb-composite0-dev \
libxcomposite-dev \
libxinerama-dev \
libxcb1-dev \
libx11-xcb-dev \
libxcb-xfixes0-dev \
swig \
libcmocka-dev \
libxss-dev \
libglvnd-dev \
libgles2-mesa-dev \
libwayland-dev \
librist-dev \
libsrt-openssl-dev \
libpci-dev \
libpipewire-0.3-dev \
libqrcodegencpp-dev \
uthash-dev \
libsimde-dev
Enter fullscreen mode Exit fullscreen mode

Qt6 UI Dependencies

sudo apt install \
qt6-base-dev \
qt6-base-private-dev \
qt6-svg-dev \
qt6-wayland \
qt6-image-formats-plugins
Enter fullscreen mode Exit fullscreen mode

Plugin Dependencies

sudo apt install \
libasound2-dev \
libfdk-aac-dev \
libfontconfig-dev \
libfreetype6-dev \
libjack-jackd2-dev \
libpulse-dev \
libsndio-dev \
libspeexdsp-dev \
libudev-dev \
libv4l-dev \
libva-dev \
libvlc-dev \
libvpl-dev \
libdrm-dev \
nlohmann-json3-dev \
libwebsocketpp-dev \
libasio-dev
Enter fullscreen mode Exit fullscreen mode

Chromium / CEF Dependencies

Required for Browser Source.

sudo apt install \
libnss3-dev \
libatk1.0-dev \
libatk-bridge2.0-dev \
libcups2-dev \
libxkbcommon-dev \
libxdamage-dev \
libxrandr-dev \
libgbm-dev \
libpango1.0-dev \
libcairo2-dev
Enter fullscreen mode Exit fullscreen mode

libdatachannel Dependencies

sudo apt install \
libssl-dev \
libsrtp2-dev
Enter fullscreen mode Exit fullscreen mode

2. Build & Install NVENC Headers (NVIDIA GPUs)

OBS 32.x requires FFnvcodec.

If you're using the Debian 550.x NVIDIA driver branch, use the sdk/12.2 branch to avoid runtime crashes.

cd ~/tmp

git clone -b sdk/12.2 https://github.com/FFmpeg/nv-codec-headers.git

cd nv-codec-headers

make

sudo make install
Enter fullscreen mode Exit fullscreen mode

3. Build & Install libdatachannel (WebRTC)

Debian Trixie does not package the version required by OBS 32.x, so build v0.24.0 from source.

cd ~/tmp

git clone --branch v0.24.0 https://github.com/paullouisageneau/libdatachannel.git

cd libdatachannel

git submodule update --init --recursive

cmake -B build \
    -G Ninja \
    -DCMAKE_BUILD_TYPE=Release \
    -DBUILD_SHARED_LIBS=ON

cmake --build build --parallel $(nproc)

sudo cmake --install build

sudo ldconfig
Enter fullscreen mode Exit fullscreen mode

4. Download and Compile CEF (Browser Source)

OBS requires the Chromium Embedded Framework (CEF).

Download the vanilla CEF package and compile the libcef_dll_wrapper library that OBS links against.

cd ~/tmp

wget https://cdn-fastly.obsproject.com/downloads/cef_binary_6533_linux_x86_64_v6.tar.xz

tar -xf cef_binary_6533_linux_x86_64_v6.tar.xz

cd cef_binary_6533_linux_x86_64/libcef_dll_wrapper
Enter fullscreen mode Exit fullscreen mode

The CEF archive sometimes contains a polluted cache from the maintainer.

Remove it before configuring:

rm -rf build CMakeCache.txt
Enter fullscreen mode Exit fullscreen mode

Compile the wrapper:

cmake -B build \
    -G Ninja \
    -DCMAKE_BUILD_TYPE=RelWithDebInfo

cmake --build build --parallel $(nproc)
Enter fullscreen mode Exit fullscreen mode

5. Clone OBS Studio

Clone OBS, fetch tags, and check out the stable 32.1.2 release.

cd ~/tmp

git clone --recursive https://github.com/obsproject/obs-studio.git

cd obs-studio

git fetch --all --tags

git checkout tags/32.1.2

git submodule update --init --recursive
Enter fullscreen mode Exit fullscreen mode

6. Configure and Build OBS

Configure OBS using Ninja.

This configuration:

  • Enables Browser Source
  • Enables WebSocket
  • Disables the proprietary AJA plugin
  • Uses the locally-built CEF
  • Installs into the local build directory (no system-wide install)
cd ~/tmp/obs-studio

rm -rf build

cmake -B build \
    -G Ninja \
    -DCMAKE_BUILD_TYPE=RelWithDebInfo \
    -DCMAKE_INSTALL_PREFIX=$HOME/tmp/obs-studio/build \
    -DENABLE_BROWSER=ON \
    -DENABLE_WEBSOCKET=ON \
    -DENABLE_AJA=OFF \
    -DCEF_ROOT_DIR=$(pwd)/cef_binary_6533_linux_x86_64
Enter fullscreen mode Exit fullscreen mode

Compile OBS:

cmake --build build --parallel $(nproc)
Enter fullscreen mode Exit fullscreen mode

Stage locale files, plugins, and CEF binaries:

cmake --install build
Enter fullscreen mode Exit fullscreen mode

7. Run OBS

Launch OBS directly from the local build directory:

~/tmp/obs-studio/build/bin/obs
Enter fullscreen mode Exit fullscreen mode

Troubleshooting

frontend-tools failed to load

This is a known quirk in some source builds related to Python/Lua scripting paths.

If you don't use Python scripts inside OBS, it can safely be ignored.

Otherwise:

  • Ensure python3-dev is installed.
  • Or compile with:
-DENABLE_FRONTEND_TOOLS=OFF
Enter fullscreen mode Exit fullscreen mode

CEF Not Found

If CMake cannot locate CEF, verify that:

-DCEF_ROOT_DIR
Enter fullscreen mode Exit fullscreen mode

points exactly to the extracted CEF directory from Step 4.


Updating OBS

To upgrade later:

cd ~/tmp/obs-studio

git pull

git fetch --all --tags

git checkout <new-tag>

git submodule update --init --recursive
Enter fullscreen mode Exit fullscreen mode

Then repeat Step 6 to rebuild OBS.

Top comments (0)