MPV: Difference between revisions

NobbZ (talk | contribs)
No edit summary
DoggoBit (talk | contribs)
m lowercase name
 
(18 intermediate revisions by 8 users not shown)
Line 1: Line 1:
There are 2 packages that provide an {{ic|mpv}} executable:
{{DISPLAYTITLE:mpv}}
{{Infobox application
| name = mpv
| type = CLI
| image = Unofficial_Mpv_logo_(with_gradients).svg
| website = [https://mpv.io/ mpv.io]
| documentation = [https://mpv.io/manual/ mpv Manual]
| bugTracker = [https://github.com/mpv-player/mpv/issues GitHub Issues]
| github = mpv-player/mpv
| latestRelease = 0.40.0; 11 June 2025
| os = Linux, macOS, Windows
| programmingLanguage = C
| initialRelease = 7 August 2023
}}


* <code>mpv</code>
'''mpv''' is an open-source command line media player.
* <code>mpv-unwrapped</code>


{{ic|mpv}} 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):
==== With nix-shell ====
<syntaxhighlight lang="bash" start="3">
nix-shell -p mpv
</syntaxhighlight>
 
==== With NixOS ====
<syntaxhighlight lang="text">
environment.systemPackages = [
  pkgs.mpv
];
</syntaxhighlight>
==== With Home Manager ====
<syntaxhighlight lang="text">
home.packages = [
  pkgs.mpv
];
</syntaxhighlight>
== Configuration ==
 
=== With Home Manager ===


==== Basic ====
<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">
programs.mpv.enable = true;
</syntaxhighlight>
==== Advanced ====
<syntaxhighlight lang="nix">
programs.mpv = {
  enable = true;
  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>
== 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].
==== Enabling additional features: where to find override options and using umpv ====
The package override options are defined in the following [https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/video/mpv/default.nix Nixpkgs directory]. This includes a commonly used first party script called [https://github.com/mpv-player/mpv/blob/master/TOOLS/umpv umpv] which allows additional files to be appended to the playlist of an open instance. In the nix derivation of mpv, the umpv script is bundled into the program and can be ran from the command line with `umpv foo.ogg`. Note that umpv can only be ran with the name of the file being opened and cannot be ran with additional arguments or flags.
For example, here is an overlay showing how to enable JACK audio support:
<syntaxhighlight>
nixpkgs.overlays = [
nixpkgs.overlays = [
   (self: super: {
   (final: prev: {
     mpv = super.mpv.override {
     mpv = prev.mpv.override {
       scripts = [ self.mpvScripts.<your choice> ];
       mpv = prev.mpv-unwrapped.override {
        jackaudioSupport = true;
      };
     };
     };
   })
   })
Line 18: Line 94:
</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 nixpkgs mpvScripts}}. The scripts are defined in the following Nixpkgs directory:
or alternatively, you can define the package inline:


[https://github.com/NixOS/nixpkgs/tree/master/pkgs/applications/video/mpv/scripts {{ic|pkgs/applications/video/mpv/scripts}}]
<syntaxhighlight>
 
(pkgs.mpv.override { mpv = pkgs.mpv-unwrapped.override { jackaudioSupport = true; }; })
So for example, for adding the MPRIS MPV script, use the following in your {{ic|~/.config/nixpkgs/config.nix}}:
</syntaxhighlight>


<syntaxhighlight lang="nix">
Also note that commands cannot be passed to mpv using socat when mpv is ran using the umpv python wrapper. For example, if you try to pause umpv with <code>echo '{"command": ["cycle", "pause"]}' | socat - /tmp/mpvsocket</code>, it will result in an error similar to the following:
{
<code>2025/05/07 22:49:15 socat[115919] E GOPEN: /tmp/mpvsocket: Connection refused</code>
  nixpkgs.overlays = [
    (self: super: {
      mpv = super.mpv.override {
        scripts = [ self.mpvScripts.mpris ];
      };
    })
  ];
}
</syntaxhighlight>


<h2>Error, unknown format</h2>
== 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 48: Line 116:
</syntaxhighlight>
</syntaxhighlight>


To address this problem, you can use the following overlay in your <code>nixpkgs.overlays</code>:
To address this problem, you can use the following package configuration for ffmpeg.


<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">
   nixpkgs.overlays = with pkgs; [
programs.mpv = {
     (self: super: {
   enable = true;
       mpv-unwrapped = super.mpv-unwrapped.override {
 
         ffmpeg_5 = ffmpeg_5-full;
  package = (
     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://search.nixos.org/packages?query=mpv
# https://home-manager-options.extranix.com/?query=mpv


[[Category:Applications]]
[[Category:Applications]]
[[Category:CLI Applications]]
[[Category:Media Player]]