In the spirit of POSSE, accessibility, and a general love of tinkering, when I started doing streaming I wanted to set things up to stream to peertube, youtube, twitch, and as many other places as I wanted. I had to setup three tools to do this, OBS, a plugin called obs-multi-rtmp, and a (optional but very, very useful and highly reccomended) server running nginx-rtmp

So the steps in a nutshell are:

1. Install/Build OBS: obsproject.com/wiki/install-instructions#linux
2. Add the multi-rtmp-plugin: github.com/sorayuki/obs-multi-rtmp
3. Optional: Setup Nginx to take some pressure off your streaming computer: github.com/arut/nginx-rtmp-module

Settings these tools up in a way that streamed to those three services was more of a project then I thought it would be (I setup ngnxrtmp first but a bug prevented it from multicasting to peertube, which is the place I wanted to stream to the most)

So for posterity here is a quick rundown of the process I used to stream to multiple places. Feel free to edit this if you find spelling errors or just generally hate it when somone copy pastes notes intented only for their personal use onto the internet without much additional editing

I am going to assume you are using a fresh uptaded and empty linux machine running either debian 10 or debian 11, since thats what these notes assume and I am just copy pasting right now till I clean up the notes.


install nvidia stuffz


sudo nano /etc/apt/sources.list

copy and paste and add:

contrib non-free
sudo apt update
sudo apt upgrade

update nvidia stuffz

sudo apt install nvidia-detect
sudo apt install nvidia-driver firmware-misc-nonfree


build obs


sudo apt install ffmpeg ffmpeg-doc
sudo apt install v4l2loopback-dkms v4l2loopback-utils
sudo apt install wget
sudo apt-get install build-essential cmake git libmbedtls-dev libasound2-dev libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libcurl4-openssl-dev libfdk-aac-dev libfontconfig-dev libfreetype6-dev libglvnd-dev libjack-jackd2-dev libjansson-dev libluajit-5.1-dev libpulse-dev libqt5x11extras5-dev libspeexdsp-dev libswresample-dev libswscale-dev libudev-dev libv4l-dev libvlc-dev libwayland-dev libx11-dev libx264-dev libxcb-shm0-dev libxcb-xinerama0-delibxcomposite-dev libxinerama-dev pkg-config python3-dev qtbase5-dev qtbase5-private-dev libqt5svg5-dev swig libxcb-randr0-dev libxcb-xfixes0-dev libx11-xcb-dev libxcb1-dev libxss-dev qtwayland5 libgles2-mesa libgles2-mesa-dev libpci-dev

wget cdn-fastly.obsproject.com/downloads/cef_binary_4638_linux64.tar.bz2
tar -xjf ./cef_binary_4638_linux64.tar.bz2
git clone --recursive github.com/obsproject/obs-studio.git
cd obs-studio
mkdir build && cd build
make -j$(nproc)
sudo make install

test OBS

obs --verbal

install plugin


sudo apt install -y mesa-common-dev qtbase5-dev qtdeclarative5-dev

git clone github.com/sorayuki/obs-multi-rtmp.git
cd obs-multi-rtmp
nano ./ci/install_ubuntu.sh

edit file so it looks right. remove the weird ubuntu stuffs

make it so it looks like below:



set -eux

: "${OBS_INCLUDE_DIR:=/usr/include/obs}"
: "${OBS_API_SRC_URL:=raw.githubusercontent.com/obsproject/obs-studio/#OBS_VER#/UI/obs-frontend-api/obs-frontend-api.h}"

#sudo add-apt-repository -y ppa:obsproject/obs-studio
#sudo apt-get update
#sudo apt-get install -y mesa-common-dev obs-studio qtbase5-dev qtdeclarative5-dev

obs_ver=$(obs -V)
obs_ver=${obs_ver-/ }

curl -fsSLo /tmp/obs-frontend-api.h "${OBS_API_SRC_URL#OBS_VER#/$obs_ver}"
sudo mkdir -p "$OBS_INCLUDE_DIR/UI/obs-frontend-api"
sudo mv /tmp/obs-frontend-api.h "$OBS_INCLUDE_DIR/UI/obs-frontend-api"


resume by running ubuntu scrip

INSTALL=1 ./build_linux.sh

open obs test


add notes on setting up nginx rtmp here