Hi Everyone,
I have been on a bit of a journey in recent times around streaming on Fedora. I use Fedora 41 currently, and all instructions below were based on that distro.
I started streaming regularly about 5 months ago. As a Fedora user streaming is interesting, OBS Studio is available in the repos and as a flatpak, but a small subset of plugins are all that’s provided and the repo package is not always the latest version. Please note, the purpose of this article is not to negate or look down on the efforts of volunteers that work to provide the packages. Obviously not everything can be packaged and the repo package is not always updated at the same cadence as the project. The fact they are voluntarily providing the package in their own time is amazing in itself.
In terms of the Flatpak, one issue you will run into is that you only have the flatpak provided plugins when it comes to plugin options and many of the plugins I use haven’t been packaged as flatpak’s including the exeldro plugins. Once upon a time, the flatpak of OBS allowed external plugins, but in recent times that stopped working so you can only leverage the flatpak packaged options based on research I did around the latest OBS version (30.2.3 currently).
Now if you have done any streaming, and tried to get plugins working, you will have noticed that many plugins are either packaged for Ubuntu, or they are in tarballs, or you are told to get the flatpak. The quick overview here is that generally the release tarballs are ready to extract straight into (~/.config/obs-studio/plugins) whereas the Ubuntu packages require a little bit more work, such that you must extract the data.tar.gz file from the deb package, and then you copy the named (plugin name) folder from ‘Downloads/<extracted_plugin_folder>/usr/share/obs/obs-plugins’ into ‘~/.config/obs-studio/plugins’. Once the plugin folder is in the home config plugins location, you need to open this folder in a terminal, and run the following:
mkdir -p ~/.config/obs-studio/plugins/<plugin_folder>/{bin/64bit,data}
copy any extra folders or files in this folder from the original plugin into the data directory. Now you need to go back to the extracted plugin folder and grab the plugin library (<plugin_name>.so typically) out of the Downloads/<extracted_plugin_folder>/usr/lib/x86_64-linux-gnu/obs-plugins directory, and copy it to ‘~/.config/obs-studio/plugins/<plugin_folder>/bin/64bit’. Once you have done this, you can use the plugin. One hint around plugins is that some of them claim they’re only available for Windows or as a flatpak. Take a good look at the github page and you will often find a .deb hiding among the ‘releases’, which you can then extract as above and start utilising. Please ensure when installing external plugins you take the necessary precautions to ensure you are installing the plugin from the correct sources, which usually involves locating the plugin in the obs resources page first and then following the link to the project page.
A common issue people run into on Linux is when they are running Wayland they won’t have the custom browser dock available to them. This can be problematic for anyone wanting to monitor chat in OBS outside of the typical overlay scenario. The workaround is that you would need to have the following packages installed (if using the repo package) obs-cef
and obs-studio-plugin-browser
and then make sure you run obs in an X11 session or using XWayland. If you want to use OBS via XWayland for this very reason, you need to use an environment variable as follows:
$ QT_QPA_PLATFORM=xcb obs
This will ensure OBS runs via XWayland, note that you can make this your permanent launch option by updating the desktop file for OBS, or creating a new one (e.g. copy existing/make a shortcut on the desktop) and editing that. The caveat to this is you won’t be able to leverage pipewire for screen capture, but that’s not necessarily an issue as you can use XComposite instead.
Now all the above will allow you to get most things working. Note that if you are streaming games, the best option for capturing the game is obs-vkcapture plugin. If you are using obs via the native package and you use the steam flatpak (like myself), you will need to install obs-vkcapture for your OBS instance, and then inside flatpak you will need to install org.freedesktop.Platform.VulkanLayer.OBSVkCapture so that you can capture your game play inside flatpak and pass it through to OBS. If you are using the OBS flatpak, you will need to install com.obsproject.Studio.Plugin.OBSVkCapture as well.
Moving beyond the typical use case (and unless you are a developer or familiar with the workflow this is not the recommended path), I have actually taken it a step further recently in that I compiled OBS portable for myself so that I could have the latest features (twitch enhanced broadcast etc). This comes with it’s own challenges but also some pleasant surprises. Now in terms of building OBS portable, you need to be able to work out where to find dependency headers and know a little bit of the technical side of compiling from source. But I did it and I have a few pointers for anyone who would follow me on this journey:
- The easiest way to compile without messing up your existing Fedora install is to use toolbox, note that if you do this you will need to access the toolbox to launch obs portable
- Build Instructions For Linux · obsproject/obs-studio Wiki · GitHub (I added some missing headers to the build pre-reqs, so you will be able to build it following that), Install the pre-reqs from the ‘Fedora’ section, and then use the ‘portable installation instructions’ to finish installing the portable version (ensure you pick the ‘browser source’ option)
- A slight adjustment I would suggest to the build instructions is you probably want to check out the latest stable release once you have cloned the repo otherwise you will be building directly from Master which includes non-stable releases
- if you want to install the libfdk AAC lib, you will need to add the
fdk-aac-free-devel
package and then use the -DENABLE_LIBFDK cmake param - Building OBS Studio · obsproject/obs-studio Wiki · GitHub < other cmake params for the interested parties
- GitHub - nowrep/obs-vkcapture: OBS Linux Vulkan/OpenGL game capture < you will want to change the cmake install prefix to your portable directory but otherwise follow the build instructions here
- currently if you require obs-ndi (now called DistroAV), you will need to work out how to install the ndi-sdk version 6 which (according to their repo) officially supports Debian, I thought about seeing if I could make it work, but I don’t really need it atm and there’s always the obs-teleport plugin which is considered an alternative by some.
- You will need to link the obs libraries from your obs-studio-portable/lib64 directory to /usr/lib64/ for obs to launch from the portable location, and for plugins to work (e.g. .so.30, .so.0, and .so)
- if you don’t want to launch the obs binary using the full path, you will need to either link the obs binary in /usr/bin, or you will need to add your portable bin dir to your path.
- Note: all your existing plugins in your .config directory will work assuming you have created the necessary library links to /usr/lib64 as discussed above
Here is a list of external plugins I use regularly:
- Aitum Multistream
- Source Clone
- Pipewire Audio
- Advanced Masks
- Background Removal (this plugin can do the job, but not as well as the NVIDIA option for windows, results may vary)
- Stroke Glow Shadow
- WaveForm
- OBS-VKCapture
This is a list of plugins I have installed and plan to use but haven’t implemented yet:
- 3d-effect
- Aitum Vertical
- Gradient Source
- Move Transition
- Shader Filter
- Composite Blur
All of these are recommended by content creators and streamers other than myself for creating various effects on stream and all of these are plugins I plan to implement into my streams eventually.
I hope this is helpful for anyone considering streaming in Fedora, obviously we are at the mercy of game developers when it comes to supporting Linux in anticheat, but in general I have had a very decent time streaming games like Factorio and Middle Earth: Shadow of War as well as Battlebit, PlanetSide 2 and No Man’s Sky among others. If you want to know whether a game will run on Linux, see either ProtonDB, Lutris, or WineHQ. I would suggest that Fedora can be a very decent streaming platform as long as you are aware of the caveats of Linux gaming if you plan to stream gaming content.