Accelerated Video Playback: Difference between revisions
Format an clean up the nix code |
Adjust the position of translation tag |
||
| Line 7: | Line 7: | ||
<translate> | <translate> | ||
== Installation == <!--T:18--> | == Installation == <!--T:18--> | ||
=== Intel === <!--T:19--> | === Intel === <!--T:19--> | ||
</translate> | </translate> | ||
{{file|/etc/nixos/configuration.nix|nix|<nowiki> | {{file|/etc/nixos/configuration.nix|nix|<nowiki> | ||
{ | { | ||
| Line 30: | Line 30: | ||
} | } | ||
</nowiki>}} | </nowiki>}} | ||
<translate> | <translate> | ||
<!--T:2--> | <!--T:2--> | ||
Note, <code>intel-vaapi-driver</code> still performs better for browsers (gecko/chromium based) on newer Skylake (2015) processors.<ref>https://github.com/intel/media-driver/issues/1024</ref> | Note, <code>intel-vaapi-driver</code> still performs better for browsers (gecko/chromium based) on newer Skylake (2015) processors.<ref>https://github.com/intel/media-driver/issues/1024</ref> | ||
<!--T:3--> | <!--T:3--> | ||
For 32-bit support, use | For 32-bit support, use | ||
</translate> {{nixos:option|hardware.graphics.extraPackages32}}: | </translate> {{nixos:option|hardware.graphics.extraPackages32}}: | ||
{{file|/etc/nixos/configuration.nix|nix|<nowiki> | {{file|/etc/nixos/configuration.nix|nix|<nowiki> | ||
{ | { | ||
| Line 48: | Line 48: | ||
} | } | ||
</nowiki>}} | </nowiki>}} | ||
<translate> | <translate> | ||
=== AMD === <!--T:4--> | === AMD === <!--T:4--> | ||
| Line 54: | Line 55: | ||
AMD configuration (at least for Ryzen 5 iGPUs) works out of the box: | AMD configuration (at least for Ryzen 5 iGPUs) works out of the box: | ||
</translate> | </translate> | ||
{{file|/etc/nixos/configuration.nix|nix|<nowiki> | {{file|/etc/nixos/configuration.nix|nix|<nowiki> | ||
{ | { | ||
| Line 107: | Line 109: | ||
} | } | ||
</nowiki>|name=/etc/nixos/configuration.nix|lang=nix}} | </nowiki>|name=/etc/nixos/configuration.nix|lang=nix}} | ||
<translate> | <translate> | ||
== Testing your configuration == <!--T:6--> | == Testing your configuration == <!--T:6--> | ||
<!--T:7--> | <!--T:7--> | ||
You can test your configuration by running: <code>nix-shell -p libva-utils --run vainfo</code> | You can test your configuration by running: <code>nix-shell -p libva-utils --run vainfo</code> | ||
<!--T:8--> | <!--T:8--> | ||
See [https://wiki.archlinux.org/index.php/Hardware_video_acceleration#Verification Arch Linux wiki#Hardware video acceleration] for more information. | See [https://wiki.archlinux.org/index.php/Hardware_video_acceleration#Verification Arch Linux wiki#Hardware video acceleration] for more information. | ||
== Applications == <!--T:9--> | == Applications == <!--T:9--> | ||
<!--T:10--> | <!--T:10--> | ||
=== Chromium === | === Chromium === | ||
See [[Chromium#Accelerated_video_playback]]. | See [[Chromium#Accelerated_video_playback]]. | ||
=== Firefox === <!--T:11--> | === Firefox === <!--T:11--> | ||
<!--T:12--> | <!--T:12--> | ||
See [https://wiki.archlinux.org/index.php/Firefox#Hardware_video_acceleration Arch Linux wiki#Firefox]. | See [https://wiki.archlinux.org/index.php/Firefox#Hardware_video_acceleration Arch Linux wiki#Firefox]. | ||
=== MPV === <!--T:20--> | === MPV === <!--T:20--> | ||
<!--T:21--> | <!--T:21--> | ||
You can place the following configuration in {{ic|~/.config/mpv/mpv.conf}}: | You can place the following configuration in {{ic|~/.config/mpv/mpv.conf}}: | ||
</translate> | </translate> | ||
<syntaxHighlight lang=ini> | <syntaxHighlight lang=ini> | ||
hwdec=auto | hwdec=auto | ||
</syntaxHighlight> | </syntaxHighlight> | ||
<translate> | <translate> | ||
<!--T:22--> | <!--T:22--> | ||
See [https://wiki.archlinux.org/title/mpv#Hardware_video_acceleration Arch Linux wiki#mpv]. | See [https://wiki.archlinux.org/title/mpv#Hardware_video_acceleration Arch Linux wiki#mpv]. | ||
<!--T:16--> | <!--T:16--> | ||
== Also see == | == Also see == | ||
* [https://wiki.archlinux.org/index.php/Hardware_video_acceleration Arch Linux wiki#Hardware video acceleration]. | * [https://wiki.archlinux.org/index.php/Hardware_video_acceleration Arch Linux wiki#Hardware video acceleration]. | ||
* [https://wiki.gentoo.org/wiki/VAAPI Gentoo Wiki#VAAPI.] | * [https://wiki.gentoo.org/wiki/VAAPI Gentoo Wiki#VAAPI.] | ||
Revision as of 18:48, 15 August 2026
Accelerated video playback in NixOS is generally done by adding relevant packages to hardware.graphics.extraPackages.
Installation
Intel
{
pkgs,
...
}:
{
hardware.graphics = {
enable = true;
extraPackages = with pkgs; [
intel-media-driver # For Broadwell (2014) 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
}
Note, intel-vaapi-driver still performs better for browsers (gecko/chromium based) on newer Skylake (2015) processors.[1]
For 32-bit support, use hardware.graphics.extraPackages32:
{
pkgs,
...
}:
{
hardware.graphics.extraPackages32 = with pkgs.pkgsi686Linux; [ intel-vaapi-driver ];
}
AMD
AMD configuration (at least for Ryzen 5 iGPUs) works out of the box:
{
hardware.graphics.enable = true;
}
NVIDIA
NVIDIA do not officially support accelerated video playback on Linux. A third-party implementation exists, but does not support Chrome[2], and has significant limitations compared to the other implementations[3].
NVIDIA users with a separate iGPU should generally prefer to use their iGPU for this, and therefore look to the above Intel and AMD sections instead.
Users with only an NVIDIA GPU can attempt to use the third party implementation; the package is added to hardware.graphics.extraPackages by default, but it requires some additional setup to be useful[4]:
{
config,
lib,
...
}:
{
environment.variables.LIBVA_DRIVER_NAME = "nvidia";
# If used with Firefox
environment.variables.MOZ_DISABLE_RDD_SANDBOX = "1";
programs.firefox.preferences =
let
ffVersion = config.programs.firefox.package.version;
in
{
"media.ffmpeg.vaapi.enabled" = lib.versionOlder ffVersion "137.0.0";
"media.hardware-video-decoding.force-enabled" = lib.versionAtLeast ffVersion "137.0.0";
"media.rdd-ffmpeg.enabled" = lib.versionOlder ffVersion "97.0.0";
"gfx.x11-egl.force-enabled" = true;
"widget.dmabuf.force-enabled" = true;
# Set this to true if your GPU supports AV1.
#
# This can be determined by reading the output of the
# `vainfo` command, after the driver is enabled with
# the environment variable.
"media.av1.enabled" = false;
};
}
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
MPV
You can place the following configuration in ~/.config/mpv/mpv.conf:
hwdec=auto
See Arch Linux wiki#mpv.
Also see
- Arch Linux wiki#Hardware video acceleration.
- Gentoo Wiki#VAAPI.
- nixos-hardware has example configurations for various types of hardware.