Jump to content

MPV: Difference between revisions

542 bytes removed ,  24 June
m
Removed numbering
(shorten mpv override flags, merge "mpv scripts" section into configuration section)
m (Removed numbering)
 
(3 intermediate revisions by 3 users not shown)
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> ===
==== 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 ===
==== 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 ===
==== 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">
 
==== 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>
 
==== Advanced ====
<syntaxhighlight lang="nix">
programs.mpv = {
programs.mpv = {
   enable = true;
   enable = true;


  # Custom package configuration for MPV
   package = (
   package =
     pkgs.mpv-unwrapped.wrapper {
     (pkgs.mpv-unwrapped.wrapper {
      scripts = with pkgs.mpvScripts; [
        uosc
        sponsorblock
      ];
 
       mpv = pkgs.mpv-unwrapped.override {
       mpv = pkgs.mpv-unwrapped.override {
         waylandSupport = true;
         waylandSupport = true;
        # To find more scripts run this in a terminal: nix search nixpkgs mpvScripts
        # The scripts are defined in the following Nixpkgs directory: https://github.com/NixOS/nixpkgs/tree/master/pkgs/applications/video/mpv/scripts
        scripts = with pkgs.mpvScripts; [
          uosc
          sponsorblock
        ];
        # Find more override options in the expression:
        # https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/video/mpv/default.nix
       };
       };
     })
     }
  );


  # MPV configuration options
   config = {
   config = {
     profile = "high-quality";
     profile = "high-quality";
Line 62: Line 63:
</syntaxhighlight>
</syntaxhighlight>


== Error, unknown format ==
== Tips and Tricks ==
 
==== 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].
 
==== 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).  
==== 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 80: 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