Accelerated Video Playback

From NixOS Wiki
Revision as of 10:58, 6 April 2024 by Maintenance script (talk | contribs) (rollback unauthorized mass edits)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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).

This is done by adding relevant libva-related packages to the hardware.opengl.extraPackages option.

Additionally, the intel-vaapi-driver (previously vaapiIntel) package can be overridden to enable Intel's Hybrid Driver.

Intel users also can enable intel-media-driver. It can be used at runtime with LIBVA_DRIVER_NAME=iHD mpv ... for example, if you use Mic92's mpv settings below.

Sample configuration:

  nixpkgs.config.packageOverrides = pkgs: {
    intel-vaapi-driver = { enableHybridCodec = true; };
  hardware.opengl = {
    enable = true;
    extraPackages = with pkgs; [
      intel-media-driver # LIBVA_DRIVER_NAME=iHD
      intel-vaapi-driver # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium)
  environment.sessionVariables = { LIBVA_DRIVER_NAME = "iHD"; }; # Force intel-media-driver

32 bit example:

hardware.opengl.extraPackages32 = with pkgs.pkgsi686Linux; [ intel-vaapi-driver ];

Prepared Hardware configuration

Sometimes different opengl packages are required to achieve full performance. You can check different configuration repositories for similar hardware configuration:

Testing your configuration

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

See Hardware video acceleration: Verification (Arch Wiki) for more information.



See Chromium.


See Firefox#Hardware_video_acceleration (ArchWiki).


You can place the following configuration in ~/.config/mpv/mpv.conf for mpv to use hardware acceleration for VP9 on Intel Broadwell (and probably later):


With Wayland, you need to nudge mpv to do the right thing:


This is based on the Arch Linux mpv article.


See the Arch Linux wiki.