Gpu-screen-recorder: Difference between revisions

From NixOS Wiki
I created this page as a documentation for one of the best Linux recording software. As a beginner, I encountered an issue with the `libvndiai-fbc.so` library being missing, so I provided some troubleshooting steps to fix it.
 
Klinger (talk | contribs)
m added to Category:Applications
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[https://git.dec05eba.com/gpu-screen-recorder/about/ gpu-screen-recorder] is a screen recorder that has minimal impact on system performance by recording your monitor using the GPU only, similar to shadowplay on windows. It is the fastest screen recording tool for Linux.
[https://git.dec05eba.com/gpu-screen-recorder/about/ gpu-screen-recorder] is a screen recorder that has minimal impact on system performance by recording your monitor using the GPU only, similar to [https://www.nvidia.com/de-de/geforce/geforce-experience/shadowplay/ ShadowPlay] on Windows.


==== Supported codecs ====
==== Supported codecs ====
Line 29: Line 29:


# Make sure your [[Nvidia|drivers]] are installed.
# Make sure your [[Nvidia|drivers]] are installed.
# Install missing the NVENC patch for your card.  [https://github.com/icewind1991/nvidia-patch-nixos nvidia-patch] is a great overlay which you can use  
# Install the missing the NVENC patch for your card.  [https://github.com/icewind1991/nvidia-patch-nixos nvidia-patch] is a great overlay which you can use  
# Override the package build inputs and add the library to the wrapper.<syntaxhighlight lang="nix">
# Override the package build inputs and add the library to the wrapper.
     (gpu-screen-recorder.overrideAttrs (oldAttrs: rec {
 
       buildInputs = with pkgs; [
<syntaxhighlight lang="nix">
        xorg.libXcomposite
{
        libpulseaudio
  environment.systemPackages = [
        ffmpeg
     (pkgs.runCommand "gpu-screen-recorder" {
        wayland
       nativeBuildInputs = [ pkgs.makeWrapper ];
        libdrm
    } ''
        libva
      mkdir -p $out/bin
        xorg.libXrandr
      makeWrapper ${pkgs.gpu-screen-recorder}/bin/gpu-screen-recorder $out/bin/gpu-screen-recorder \
        linuxKernel.packages.linux_xanmod_stable.nvidia_x11
      ];
      postInstall = ''
        install -Dt $out/bin gpu-screen-recorder gsr-kms-server
        mkdir $out/bin/.wrapped
        mv $out/bin/gpu-screen-recorder $out/bin/.wrapped/
        makeWrapper "$out/bin/.wrapped/gpu-screen-recorder" "$out/bin/gpu-screen-recorder" \
         --prefix LD_LIBRARY_PATH : ${pkgs.libglvnd}/lib \
         --prefix LD_LIBRARY_PATH : ${pkgs.libglvnd}/lib \
         --prefix LD_LIBRARY_PATH : ${pkgs.linuxKernel.packages.linux_xanmod_stable.nvidia_x11}/lib \
         --prefix LD_LIBRARY_PATH : ${config.boot.kernelPackages.nvidia_x11}/lib
        --prefix PATH : $out/bin
    '')
      '';
  ];
    }))
}
</syntaxhighlight>
</syntaxhighlight>
[[Category:Applications]]

Latest revision as of 15:59, 19 April 2024

gpu-screen-recorder is a screen recorder that has minimal impact on system performance by recording your monitor using the GPU only, similar to ShadowPlay on Windows.

Supported codecs

Video
  • H264 (default on Intel)
  • HEVC (default on AMD and NVIDIA)
  • AV1
Audio
  • Opus (default)
  • AAC
  • FLAC

Installation

  environment.systemPackages = with pkgs; [
    gpu-screen-recorder # CLI
    gpu-screen-recorder-gtk # GUI
  ];

Troubleshooting

libnvidia-fbc.so.1: cannot open shared object file: No such file or directory

The possibility of this error arising exists if you possess an NVIDIA graphics card, as the package does not include the NVIDIA X11 libraries in its wrapper by default.

  1. Make sure your drivers are installed.
  2. Install the missing the NVENC patch for your card. nvidia-patch is a great overlay which you can use
  3. Override the package build inputs and add the library to the wrapper.
{
  environment.systemPackages = [
    (pkgs.runCommand "gpu-screen-recorder" {
      nativeBuildInputs = [ pkgs.makeWrapper ];
    } ''
      mkdir -p $out/bin
      makeWrapper ${pkgs.gpu-screen-recorder}/bin/gpu-screen-recorder $out/bin/gpu-screen-recorder \
        --prefix LD_LIBRARY_PATH : ${pkgs.libglvnd}/lib \
        --prefix LD_LIBRARY_PATH : ${config.boot.kernelPackages.nvidia_x11}/lib
    '')
  ];
}