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
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
Qt6 UI Dependencies
sudo apt install \
qt6-base-dev \
qt6-base-private-dev \
qt6-svg-dev \
qt6-wayland \
qt6-image-formats-plugins
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
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
libdatachannel Dependencies
sudo apt install \
libssl-dev \
libsrtp2-dev
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
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
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
The CEF archive sometimes contains a polluted cache from the maintainer.
Remove it before configuring:
rm -rf build CMakeCache.txt
Compile the wrapper:
cmake -B build \
-G Ninja \
-DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build --parallel $(nproc)
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
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
Compile OBS:
cmake --build build --parallel $(nproc)
Stage locale files, plugins, and CEF binaries:
cmake --install build
7. Run OBS
Launch OBS directly from the local build directory:
~/tmp/obs-studio/build/bin/obs
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-devis installed. - Or compile with:
-DENABLE_FRONTEND_TOOLS=OFF
CEF Not Found
If CMake cannot locate CEF, verify that:
-DCEF_ROOT_DIR
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
Then repeat Step 6 to rebuild OBS.
Top comments (0)