Accelerated Video Playback: Difference between revisions

From NixOS Wiki
imported>Makefu
m (syntax highlight)
(→‎Intel: Explain Broadwell in terms of years)
 
(24 intermediate revisions by 11 users not shown)
Line 1: Line 1:
This page is meant to help with techniques for getting accelerated video playback working in NixOS. This is generally done via libva and vaapi (and sometimes vdpau).
Accelerated video playback in NixOS is generally done by adding relevant packages to {{nixos:option|hardware.opengl.extraPackages}}.


This is done by adding relevant <code>libva</code>-related packages to the <code>hardware.opengl.extraPackages</code> option.
== Installation ==
 
=== Intel ===
Additionally, the <code>vaapiIntel</code> package can be overriden to enable [https://github.com/01org/intel-hybrid-driver Intel's Hybrid Driver].
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
 
Intel users also can enable <code>intel-media-driver</code>. It can be used at runtime with <code>LIBVA_DRIVER_NAME=iHD mpv ...</code> for example, if you use Mic92's mpv settings below.
 
Sample configuration:
<syntaxHighlight lang=nix>
{
{
  ...
  nixpkgs.config.packageOverrides = pkgs: {
    vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; };
  };
   hardware.opengl = {
   hardware.opengl = {
     enable = true;
     enable = true;
     extraPackages = with pkgs; [
     extraPackages = with pkgs; [
       vaapiIntel
       intel-media-driver # For Broadwell (2015) or newer processors. LIBVA_DRIVER_NAME=iHD
      vaapiVdpau
       intel-vaapi-driver # For older processors. LIBVA_DRIVER_NAME=i965
      libvdpau-va-gl
       intel-media-driver # only available starting nixos-19.03 or the current nixos-unstable
     ];
     ];
   };
   };
   ...
   environment.sessionVariables = { LIBVA_DRIVER_NAME = "iHD"; }; # Optionally, set the environment variable
}
</nowiki>}}
For 32-bit support, use {{nixos:option|hardware.opengl.extraPackages32}}:
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{
  hardware.opengl.extraPackages32 = with pkgs.pkgsi686Linux; [ intel-vaapi-driver ];
}
</nowiki>}}
 
=== AMD ===
 
AMD configuration (at least for Ryzen 5 iGPUs) works out of the box:
 
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{
  hardware.opengl.enable = true;
}
}
</syntaxHighlight>
</nowiki>}}
== Testing your configuration ==


== Prepared Hardware configuration ==
You can test your configuration by running: <code>nix-shell -p libva-utils --run vainfo</code>
Sometimes different opengl packages are required to achieve full performance. You can check different configuration repositories for similar hardware configuration:
* [https://github.com/NixOS/nixos-hardware The NixOS-Hardware Repository]


See [https://wiki.archlinux.org/index.php/Hardware_video_acceleration#Verification Arch Linux wiki#Hardware video acceleration] for more information.


== Applications ==
== Applications ==


===Chromium===
=== Chromium ===
Needs a patch for VA-API support, see [https://github.com/NixOS/nixpkgs/issues/21481 nixpkgs#21481] for current status.
 
See [[Chromium#Accelerated_video_playback]].
 
=== Firefox ===
 
See [https://wiki.archlinux.org/index.php/Firefox#Hardware_video_acceleration Arch Linux wiki#Firefox].


===MPV===
=== MPV ===
@Mic92 needed the following configuration in <code>~/.mpv/config</code>
You can place the following configuration in {{ic|~/.config/mpv/mpv.conf}}:
for mpv to use hardware acceleration for VP9 on Intel Broadwell:


<syntaxHighlight lang=ini>
<syntaxHighlight lang=ini>
hwdec=vaapi
hwdec=auto-safe
vo=gpu
vo=gpu
hwdec-codecs=all
profile=gpu-hq
gpu-context=wayland ; On wayland only
</syntaxHighlight>
</syntaxHighlight>


This is based on the [https://wiki.archlinux.org/index.php/Mpv#Hardware_decoding archlinux MPV article].
See [https://wiki.archlinux.org/title/mpv#Hardware_video_acceleration Arch Linux wiki#mpv].
 
== Also see ==
* [https://wiki.archlinux.org/index.php/Hardware_video_acceleration Arch Linux wiki#Hardware video acceleration].
* [https://github.com/NixOS/nixos-hardware nixos-hardware] has example configurations for various types of hardware.


===Other===
[[Category:Video]]
See the [https://wiki.archlinux.org/index.php/Hardware_video_acceleration#Application_support Arch Linux wiki].

Latest revision as of 17:50, 23 April 2024

Accelerated video playback in NixOS is generally done by adding relevant packages to hardware.opengl.extraPackages.

Installation

Intel

/etc/nixos/configuration.nix
{
  hardware.opengl = {
    enable = true;
    extraPackages = with pkgs; [
      intel-media-driver # For Broadwell (2015) or newer processors. LIBVA_DRIVER_NAME=iHD
      intel-vaapi-driver # For older processors. LIBVA_DRIVER_NAME=i965
    ];
  };
  environment.sessionVariables = { LIBVA_DRIVER_NAME = "iHD"; }; # Optionally, set the environment variable
}

For 32-bit support, use hardware.opengl.extraPackages32:

/etc/nixos/configuration.nix
{
  hardware.opengl.extraPackages32 = with pkgs.pkgsi686Linux; [ intel-vaapi-driver ];
}

AMD

AMD configuration (at least for Ryzen 5 iGPUs) works out of the box:

/etc/nixos/configuration.nix
{
  hardware.opengl.enable = true;
}

Testing your configuration

You can test your configuration by running: nix-shell -p libva-utils --run vainfo

See Arch Linux wiki#Hardware video acceleration for more information.

Applications

Chromium

See Chromium#Accelerated_video_playback.

Firefox

See Arch Linux wiki#Firefox.

MPV

You can place the following configuration in ~/.config/mpv/mpv.conf:

hwdec=auto-safe
vo=gpu
profile=gpu-hq
gpu-context=wayland ; On wayland only

See Arch Linux wiki#mpv.

Also see