OBS Studio: Difference between revisions
imported>Wackbyte add a guide for installing plugins |
added disclaimer for missing hardware acceleration options |
||
(10 intermediate revisions by 9 users not shown) | |||
Line 1: | Line 1: | ||
[https://obsproject.com/ OBS Studio] is free and open source software for video recording and live streaming, licensed under the GNU GPLv2 license. | [https://obsproject.com/ OBS Studio] is free and open-source software for video recording and live streaming, licensed under the GNU GPLv2 license. | ||
=== Installing Plugins === | === Installing Plugins === | ||
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: | ||
or | |||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
Line 22: | Line 12: | ||
programs.obs-studio = { | programs.obs-studio = { | ||
enable = true; | enable = true; | ||
# optional Nvidia hardware acceleration | |||
package = ( | |||
pkgs.obs-studio.override { | |||
cudaSupport = true; | |||
} | |||
); | |||
plugins = with pkgs.obs-studio-plugins; [ | plugins = with pkgs.obs-studio-plugins; [ | ||
wlrobs | wlrobs | ||
obs-backgroundremoval | |||
obs-pipewire-audio-capture | |||
obs-vaapi #optional AMD hardware acceleration | |||
obs-gstreamer | |||
obs-vkcapture | |||
]; | ]; | ||
}; | }; | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
or by wrapping the package with <code>wrapOBS</code>: | |||
<syntaxhighlight lang="nix">environment.systemPackages = [ | |||
(pkgs.wrapOBS { | |||
plugins = with pkgs.obs-studio-plugins; [ | |||
wlrobs | |||
obs-backgroundremoval | |||
obs-pipewire-audio-capture | |||
obs-vaapi #optional AMD hardware acceleration | |||
obs-gstreamer | |||
obs-vkcapture | |||
]; | |||
}) | |||
];</syntaxhighlight>'''Package collision''': Including both <code>obs-studio</code> and <code>(pkgs.wrapOBS {...</code> in <code>environment.systemPackages</code> 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 [https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/video/obs-studio/wrapper.nix pkgs/applications/video/obs-studio/wrapper.nix]. | |||
'''Missing hardware acceleration''': Sometimes you need to set "Output Mode" to Advanced in settings Output tab to see the hardware accelerated Video Encoders options. | |||
=== 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, | 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, ... }: | ||
{ | { | ||
Line 39: | Line 61: | ||
v4l2loopback | v4l2loopback | ||
]; | ]; | ||
boot.kernelModules = [ "v4l2loopback" ]; | |||
boot.extraModprobeConfig = '' | |||
options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1 | |||
''; | |||
security.polkit.enable = true; | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
It is possible to use [[Droidcam]] as virtual camera. | |||
If you use a digital camera as a webcam via [http://gphoto.org/ 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:<syntaxhighlight lang="nix"> | |||
boot.extraModprobeConfig = '' | |||
options v4l2loopback devices=2 video_nr=1,2 card_label="OBS Cam, Virt Cam" exclusive_caps=1 | |||
''; | |||
</syntaxhighlight>For more the [https://wiki.archlinux.org/title/V4l2loopback#Loading_the_kernel_module arch wiki entry on v4l2loopback] is a good reference. | |||
In addition to <code>gphoto2</code> you will need the <code>v4l-utils</code> and <code>ffmpeg</code> 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<ref>https://austingil.com/dslr-webcam-linux/</ref>:<syntaxhighlight lang="bash"> | |||
gphoto2 --stdout autofocusdrive=1 --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video2 | |||
</syntaxhighlight> | |||
[[Category:Applications]] | [[Category:Applications]] |