OBS Studio: Difference between revisions
→Using the Virtual Camera: Adding a note on how to modify your v4l2loopback module config to have additional virtual devices such as you might use to use a DSLR as a webcam with gphoto2 |
m Added information about the OBS module added to NixOS in 24.11. |
||
Line 5: | Line 5: | ||
Plugins are available from the <code>obs-studio-plugins</code> package set. | Plugins are available from the <code>obs-studio-plugins</code> package set. | ||
They can be installed by either | They can be installed by using either the [[NixOS]] or [[Home Manager]] module: | ||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
{ config, pkgs, ... }: | |||
{ | |||
programs.obs-studio = { | |||
enable = true; | |||
plugins = with pkgs.obs-studio-plugins; [ | plugins = with pkgs.obs-studio-plugins; [ | ||
wlrobs | wlrobs | ||
Line 15: | Line 17: | ||
obs-pipewire-audio-capture | obs-pipewire-audio-capture | ||
]; | ]; | ||
} | }; | ||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
or | or by wrapping the package with <code>wrapOBS</code>: | ||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
environment.systemPackages = [ | |||
(pkgs.wrapOBS { | |||
plugins = with pkgs.obs-studio-plugins; [ | plugins = with pkgs.obs-studio-plugins; [ | ||
wlrobs | wlrobs | ||
Line 31: | Line 31: | ||
obs-pipewire-audio-capture | obs-pipewire-audio-capture | ||
]; | ]; | ||
}; | }) | ||
]; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 39: | Line 39: | ||
=== Using the Virtual Camera === | === Using the Virtual Camera === | ||
The virtual camera requires the <code>v4l2loopback</code> [[Linux kernel#Custom kernel modules|kernel module]] to be installed, a loopback device configured, and polkit enabled so OBS can access the virtual device | The virtual camera requires the <code>v4l2loopback</code> [[Linux kernel#Custom kernel modules|kernel module]] to be installed, a loopback device configured, and polkit enabled so OBS can access the virtual device. | ||
<syntaxhighlight lang="nix"> | This can be done in NixOS with:<syntaxhighlight lang="nixos"> | ||
programs.obs-studio.enableVirtualCamera = true; | |||
</syntaxhighlight>Or by setting the kernel options manually, this is useful if you need to add an additional loopback device as shown below:<syntaxhighlight lang="nix"> | |||
{ config, ... }: | { config, ... }: | ||
{ | { |
Revision as of 07:41, 26 February 2025
OBS Studio is free and open-source software for video recording and live streaming, licensed under the GNU GPLv2 license.
Installing Plugins
Plugins are available from the obs-studio-plugins
package set.
They can be installed by using either the NixOS or Home Manager module:
{ config, pkgs, ... }:
{
programs.obs-studio = {
enable = true;
plugins = with pkgs.obs-studio-plugins; [
wlrobs
obs-backgroundremoval
obs-pipewire-audio-capture
];
};
}
or by wrapping the package with wrapOBS
:
environment.systemPackages = [
(pkgs.wrapOBS {
plugins = with pkgs.obs-studio-plugins; [
wlrobs
obs-backgroundremoval
obs-pipewire-audio-capture
];
})
];
Including both obs-studio
and (pkgs.wrapOBS {...
in environment.systemPackages
will result in a package collision; if plugins are needed, only include the "wrapped" version, which sets the plugins directory to include Nix-managed plugins (see pkgs/applications/video/obs-studio/wrapper.nix.
Using the Virtual Camera
The virtual camera requires the v4l2loopback
kernel module to be installed, a loopback device configured, and polkit enabled so OBS can access the virtual device.
This can be done in NixOS with:
programs.obs-studio.enableVirtualCamera = true;
Or by setting the kernel options manually, this is useful if you need to add an additional loopback device as shown below:
{ config, ... }:
{
boot.extraModulePackages = with config.boot.kernelPackages; [
v4l2loopback
];
boot.kernelModules = [ "v4l2loopback" ];
boot.extraModprobeConfig = ''
options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1
'';
security.polkit.enable = true;
}
It is possible to use Droidcam as virtual camera.
If you use a digital camera as a webcam via gphoto2 you will need an additional loopback device to use this camera as a virtual camera. For a setup like this you may wish to change the above v4l2loopback module config to something like this:
boot.extraModprobeConfig = ''
options v4l2loopback devices=2 video_nr=1,2 card_label="OBS Cam, Virt Cam" exclusive_caps=1
'';
For more the arch wiki entry on v4l2loopback is a good reference.
In addition to gphoto2
you will need the v4l-utils
and ffmpeg
packages so that you can use gphoto2 to send the raw feed from your camera to the virtual camera via ffmpeg for example using a command like this[1]:
gphoto2 --stdout autofocusdrive=1 --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video2