Jump to content

MPV: Difference between revisions

578 bytes removed ,  19 June
I changed the wiki entry by carefully dividing the information into more manageable sections, making it more accessible and easier to navigate for users.
(fix configuration example)
(I changed the wiki entry by carefully dividing the information into more manageable sections, making it more accessible and easier to navigate for users.)
Line 1: Line 1:
[https://mpv.io/ MPV] is an open-source command line media player known for its high performance, versatility, and minimalist design. It has only a very basic GUI. MPV can be used with a GUI front-end like [[SMPlayer]] (package: smplayer), to have a comparable user interface like other media players for the desktop environment.  
[https://mpv.io/ MPV] is an open-source command line media player known for its high performance, versatility, and minimalist design.While it has a basic GUI, MPV can be paired with a GUI front-end like SMPlayer (package: smplayer) to offer a user-friendly interface similar to other desktop media players.  


MPV supports a wide range of video and audio formats, ensuring extensive compatibility. It features advanced video rendering capabilities, including high-quality scaling algorithms, color management, and HDR support, which contribute to superior video playback quality. MPV utilizes hardware-accelerated video decoding through APIs such as VA-API, VDPAU, and DXVA2, enhancing performance and reducing CPU usage. The player’s design emphasizes minimalism and efficiency, offering a streamlined user interface with extensive configurability via command-line options and scripting interfaces.   
MPV supports a wide range of video and audio formats, ensuring extensive compatibility. It features advanced video rendering capabilities, including high-quality scaling algorithms, color management, and HDR support, which contribute to superior video playback quality. MPV leverages hardware-accelerated video decoding through APIs such as VA-API, VDPAU, and DXVA2, improving performance and reducing CPU usage. The player’s minimalist design emphasizes efficiency, offering a streamlined user experience with extensive configurability through command-line options and scripting interfaces.   


== Installation ==
== Installation ==


=== Using <code>nix-shell</code> ===
==== 2.1 Using nix-shell ====
To use MPV in a temporary environment with <code>nix-shell</code>, run:<syntaxhighlight lang="nix">
<syntaxhighlight lang="bash" start="3">
nix-shell -p mpv
nix-shell -p mpv
</syntaxhighlight>
</syntaxhighlight>


=== System-Wide Installation on NixOS ===
==== 2.2 System-Wide Installation on NixOS ====
To install MPV system-wide, add it to your system configuration. Edit your <code>/etc/nixos/configuration.nix</code> and include MPV in the <code>environment.systemPackages</code> list:<syntaxhighlight lang="nix">
<syntaxhighlight lang="text">
environment.systemPackages = [  
environment.systemPackages = [
  pkgs.mpv  
  pkgs.mpv
];
];
</syntaxhighlight>After modifying your configuration, apply the changes by running:<syntaxhighlight lang="nix">
</syntaxhighlight>After modifying your configuration, apply the changes by running:<syntaxhighlight lang="bash">
sudo nixos-rebuild switch
sudo nixos-rebuild switch
</syntaxhighlight>
</syntaxhighlight>


=== User-Specific Installation with Home Manager ===
==== 2.3 User-Specific Installation with Home Manager ====
If you use Home Manager, you can add MPV to your home configuration. Edit your Home Manager configuration file (usually <code>~/.config/nixpkgs/home.nix</code>) and include MPV in the <code>home.packages</code> list:<syntaxhighlight lang="nix">
<syntaxhighlight lang="text">
home.packages = [  
home.packages = [  
   pkgs.mpv  
   pkgs.mpv  
];
];
</syntaxhighlight>After updating your configuration, apply the changes by running:<syntaxhighlight lang="nix">
</syntaxhighlight>After updating your configuration, apply the changes by running:<syntaxhighlight lang="bash">
home-manager switch
home-manager switch
</syntaxhighlight>
</syntaxhighlight>


== Configuration ==
== Configuration ==
The recommended way to enable and configure MPV on NixOS is through the <code>programs</code> attribute in your NixOS home configuration.<syntaxhighlight lang="nix">
 
==== 3.1 Basic ====
<syntaxhighlight lang="nix">
programs.mpv = {
programs.mpv = {
     enable = true;
     enable = true;
};
};
</syntaxhighlight>A more comprehensive configuration of MPV would look like this.<syntaxhighlight lang="nix">
</syntaxhighlight>
{ pkgs, ... }:
{
  programs.mpv = {
    enable = true;


    # Custom package configuration for MPV
==== 3.2 Advanced ====
    package = (
<syntaxhighlight lang="nix">
      pkgs.mpv-unwrapped.wrapper {
programs.mpv = {
  enable = true;


        # To find more scripts run this in a terminal: nix search nixpkgs mpvScripts
  package = (
        # The scripts are defined in the following Nixpkgs directory: https://github.com/NixOS/nixpkgs/tree/master/pkgs/applications/video/mpv/scripts
    pkgs.mpv-unwrapped.wrapper {
        scripts = with pkgs.mpvScripts; [
      scripts = with pkgs.mpvScripts; [
          uosc
        uosc
          sponsorblock
        sponsorblock
        ];
      ];


        mpv = pkgs.mpv-unwrapped.override {
      mpv = pkgs.mpv-unwrapped.override {
          # Find more override options in the expression:
        waylandSupport = true;
          # https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/video/mpv/default.nix
      };
          waylandSupport = true;
    }
        };
  );
      }
    );


    # MPV configuration options
  config = {
    config = {
    profile = "high-quality";
      profile = "high-quality";
    ytdl-format = "bestvideo+bestaudio";
      ytdl-format = "bestvideo+bestaudio";
    cache-default = 4000000;
      cache-default = 4000000;
    };
   };
   };
}
};
</syntaxhighlight>
</syntaxhighlight>


== Error, unknown format ==
== Tips and Tricks ==
 
==== 4.1 Where to get scripts ====
To find more scripts run this in a terminal: <syntaxhighlight lang="bash">
nix search nixpkgs mpvScripts
</syntaxhighlight>The scripts are also defined in the following [https://github.com/NixOS/nixpkgs/tree/master/pkgs/applications/video/mpv/scripts Nixpkgs directory].
 
==== 4.2 Where to find override options ====
The package override options are defined in the following [https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/video/mpv/default.nix Nixpkgs directory].
 
== Troubleshooting ==


If you get the following sort of error, note that mpv currently uses the small ffmpeg version (ffmpeg_5) instead of the full version (ffmpeg_5-full).  
==== 5.1 Error, unknown format ====
If you get the following sort of error, note that MPV currently uses the small ffmpeg version (ffmpeg_5) instead of the full version (ffmpeg_5-full).  


<syntaxhighlight lang="shell">
<syntaxhighlight lang="shell">
Line 86: Line 92:
   enable = true;
   enable = true;


   package =
   package = (
     (pkgs.mpv-unwrapped.wrapper {
     pkgs.mpv-unwrapped.wrapper {
       mpv = pkgs.mpv-unwrapped.override {
       mpv = pkgs.mpv-unwrapped.override {
         ffmpeg = pkgs.ffmpeg-full;
         ffmpeg = pkgs.ffmpeg-full;
       };
       };
     });
     }
  );
};
};
</syntaxhighlight>
</syntaxhighlight>
48

edits