Jump to content

Accelerated Video Playback/ru: Difference between revisions

From NixOS Wiki
Unabomberlive (talk | contribs)
No edit summary
FuzzyBot (talk | contribs)
Updating to match new version of source page
 
(16 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
<div lang="en" dir="ltr" class="mw-content-ltr">
<div class="mw-translate-fuzzy">
Accelerated video playback in NixOS is generally done by adding relevant packages to {{nixos:option|hardware.opengl.extraPackages}}.
Ускорение воспроизведения видео в NixOS обычно осуществляется путем добавления соответствующих пакетов в
{{nixos:option|hardware.opengl.extraPackages}}.
</div>
</div>


== Installation ==
<span id="Installation"></span>
== Установка ==
=== Intel ===
=== Intel ===
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{
{
   hardware.graphics = { # hardware.opengl in 24.05 and older
   hardware.graphics = {
     enable = true;
     enable = true;
     extraPackages = with pkgs; [
     extraPackages = with pkgs; [
Line 22: Line 24:
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Для поддержки 32-битной версии используйте {{nixos:option|hardware.graphics.extraPackages32}}:
For 32-bit support, use
</div> {{nixos:option|hardware.graphics.extraPackages32}}:
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{
{
  # hardware.opengl.extraPackages32 in 24.05
   hardware.graphics.extraPackages32 = with pkgs.pkgsi686Linux; [ intel-vaapi-driver ];
   hardware.graphics.extraPackages32 = with pkgs.pkgsi686Linux; [ intel-vaapi-driver ];
}
}
Line 33: Line 32:
=== AMD ===
=== AMD ===


<div lang="en" dir="ltr" class="mw-content-ltr">
Конфигурация AMD (по крайней мере, для iGPU Ryzen 5) работает из коробки:
AMD configuration (at least for Ryzen 5 iGPUs) works out of the box:
</div>
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{
{
   hardware.opengl.enable = true;
   hardware.graphics.enable = true;
}
}
</nowiki>}}
</nowiki>}}
<span id="Testing_your_configuration"></span>
== Проверьте вашу конфигурацию ==


Вы можете протестировать вашу конфигурацию выполнив:
<div lang="en" dir="ltr" class="mw-content-ltr">
<code>nix-shell -p libva-utils --run vainfo</code>
=== NVIDIA ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
See [https://wiki.archlinux.org/index.php/Hardware_video_acceleration#Verification Arch Linux wiki#Hardware video acceleration] for more information.
NVIDIA do not officially support accelerated video playback on Linux. A third-party implementation exists, but does not support Chrome<ref>https://github.com/elFarto/nvidia-vaapi-driver#chrome</ref>, and has significant limitations compared to the other implementations<ref>https://github.com/elFarto/nvidia-vaapi-driver#codec-support</ref>.
</div>
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
== Applications ==
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.
</div>
</div>
=== Chromium ===


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
See [[Chromium#Accelerated_video_playback]].
Users with only an NVIDIA GPU can attempt to use the third party implementation; the package is added to <code>hardware.graphics.extraPackages</code> by default, but it requires some additional setup to be useful<ref>https://github.com/elFarto/nvidia-vaapi-driver#configuration</ref>:
</div>
</div>


=== Firefox ===
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{ 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;
  };
}
</nowiki>}}
 
<span id="Testing_your_configuration"></span>
== Проверьте вашу конфигурацию ==


Вы можете протестировать вашу конфигурацию выполнив:
<code>nix-shell -p libva-utils --run vainfo</code>
<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
See [https://wiki.archlinux.org/index.php/Firefox#Hardware_video_acceleration Arch Linux wiki#Firefox].
See [https://wiki.archlinux.org/index.php/Hardware_video_acceleration#Verification Arch Linux wiki#Hardware video acceleration] for more information.
</div>
</div>
<span id="Applications"></span>
== Приложения ==
=== Chromium ===
См. [[Chromium#Accelerated_video_playback]].
=== Firefox ===


<div lang="en" dir="ltr" class="mw-content-ltr">
<div class="mw-translate-fuzzy">
=== Firefox ===
</div>
<!--T:13-->
=== MPV ===
=== MPV ===
You can place the following configuration in {{ic|~/.config/mpv/mpv.conf}}:
Вы можете разместить следующую конфигурацию в {{ic|~/.config/mpv/mpv.conf}}:
</div>
<!--T:14-->
 
<div lang="en" dir="ltr" class="mw-content-ltr">
<syntaxHighlight lang=ini>
<syntaxHighlight lang=ini>
hwdec=auto-safe
hwdec=auto
vo=gpu
profile=gpu-hq
gpu-context=wayland ; On wayland only
</syntaxHighlight>
</syntaxHighlight>
</div>


<!--T:15-->
<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
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].

Latest revision as of 17:10, 7 October 2025

Ускорение воспроизведения видео в NixOS обычно осуществляется путем добавления соответствующих пакетов в hardware.opengl.extraPackages.

Установка

Intel

❄︎ /etc/nixos/configuration.nix
{
  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]

Для поддержки 32-битной версии используйте hardware.graphics.extraPackages32:

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

AMD

Конфигурация AMD (по крайней мере, для iGPU Ryzen 5) работает из коробки:

❄︎ /etc/nixos/configuration.nix
{
  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]:

❄︎ /etc/nixos/configuration.nix
{ 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;
  };
}

Проверьте вашу конфигурацию

Вы можете протестировать вашу конфигурацию выполнив: nix-shell -p libva-utils --run vainfo

Приложения

Chromium

См. Chromium#Accelerated_video_playback.

Firefox

Firefox

MPV

Вы можете разместить следующую конфигурацию в ~/.config/mpv/mpv.conf:

hwdec=auto

Also see