Jump to content

MPV: Difference between revisions

2,283 bytes added ,  24 June
m
Removed numbering
imported>Samuelgrf
(Edit examples to use overlays, since packageOverrides are deprecated.)
m (Removed numbering)
 
(12 intermediate revisions by 7 users not shown)
Line 1: Line 1:
There are 2 packages that provide an {{ic|mpv}} executable:
[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.


* <code>mpv</code>
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. 
* <code>mpv-with-scripts</code>


{{ic|mpv-with-scripts}} is a wrapper for the {{ic|mpv}} binary which adds {{ic|--script<nowiki>=</nowiki>}} arguments according to the scripts the wrapper was built with.
== Installation ==


If you'd like to add scripts to your {{ic|mpv}} wrapper, you'll need to create an overlay in {{ic|~/.config/nixpkgs/config.nix}} or {{ic|/etc/nixos/configuration.nix}} (if you are using NixOS):
==== Using nix-shell ====
<syntaxhighlight lang="bash" start="3">
nix-shell -p mpv
</syntaxhighlight>
 
==== System-Wide Installation on NixOS ====
<syntaxhighlight lang="text">
environment.systemPackages = [
  pkgs.mpv
];
</syntaxhighlight>After modifying your configuration, apply the changes by running:<syntaxhighlight lang="bash">
sudo nixos-rebuild switch
</syntaxhighlight>


==== User-Specific Installation with Home Manager ====
<syntaxhighlight lang="text">
home.packages = [
  pkgs.mpv
];
</syntaxhighlight>After updating your configuration, apply the changes by running:<syntaxhighlight lang="bash">
home-manager switch
</syntaxhighlight>
== Configuration ==
==== Basic ====
<syntaxhighlight lang="nix">
programs.mpv = {
    enable = true;
};
</syntaxhighlight>
==== Advanced ====
<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">
nixpkgs.overlays = [
programs.mpv = {
   (self: super: {
  enable = true;
     mpv = super.mpv-with-scripts.override {
 
       scripts = [ self.mpvScripts.<your choice> ];
   package = (
     };
     pkgs.mpv-unwrapped.wrapper {
   })
       scripts = with pkgs.mpvScripts; [
];
        uosc
        sponsorblock
      ];
 
      mpv = pkgs.mpv-unwrapped.override {
        waylandSupport = true;
      };
     }
  );
 
  config = {
    profile = "high-quality";
    ytdl-format = "bestvideo+bestaudio";
    cache-default = 4000000;
   };
};
</syntaxhighlight>
</syntaxhighlight>


All of the scripts for MPV can be found under the {{ic|mpvScripts}} attribute. You can search for them by running {{ic|nix search mpvScripts}}. The scripts are defined in the following Nixpkgs directory:
== Tips and Tricks ==


[https://github.com/NixOS/nixpkgs/tree/master/pkgs/applications/video/mpv/scripts {{ic|pkgs/applications/video/mpv/scripts}}]
==== 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].


So for example, for adding the MPRIS MPV script, use the following in your {{ic|~/.config/nixpkgs/config.nix}}:
==== 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 ==
 
==== 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">
$ mpv --log-file=foo.log av://v4l2:/dev/video5
[lavf] Unknown lavf format v4l2
Failed to recognize file format.
 
Exiting... (Errors when loading file)
</syntaxhighlight>
 
To address this problem, you can use the following package configuration for ffmpeg.


<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">
{
programs.mpv = {
   nixpkgs.overlays = [
   enable = true;
     (self: super: {
 
       mpv = super.mpv-with-scripts.override {
  package = (
         scripts = [ self.mpvScripts.mpris ];
     pkgs.mpv-unwrapped.wrapper {
       mpv = pkgs.mpv-unwrapped.override {
         ffmpeg = pkgs.ffmpeg-full;
       };
       };
     })
     }
   ];
   );
}
};
</syntaxhighlight>
</syntaxhighlight>
== References ==
# https://github.com/mpv-player/mpv/wiki
# https://en.wikipedia.org/wiki/Mpv_(media_player)
# https://mynixos.com/search?q=mpv
[[Category:Applications]]
[[Category:Media Player]]
48

edits