OBS Studio: Difference between revisions

imported>Wackbyte
add a guide for installing plugins
Hey (talk | contribs)
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 wrapping the package with <code>wrapOBS</code>:
They can be installed by using either the [[NixOS]] or [[Home Manager]] module:
 
<syntaxhighlight lang="nix">
pkgs.wrapOBS.override { obs-studio = pkgs.obs-studio; } {
  plugins = with pkgs.obs-studio-plugins; [
    wlrobs
  ];
};
</syntaxhighlight>
 
or using [[Home Manager]]:


<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, like so:
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]]