MPV: Difference between revisions

From NixOS Wiki
imported>Samuelgrf
Edit examples to use overlays, since packageOverrides are deprecated.
Dander (talk | contribs)
m remove unnecessary description (see MoS), clean up headings (TODO: scripts, NixOS configuration)
 
(13 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.


* <code>mpv</code>
== Installation ==
* <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.
==== 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 ===


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):
==== 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 ==
 
==== 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 ==
 
==== 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.


[https://github.com/NixOS/nixpkgs/tree/master/pkgs/applications/video/mpv/scripts {{ic|pkgs/applications/video/mpv/scripts}}]
Exiting... (Errors when loading file)
</syntaxhighlight>


So for example, for adding the MPRIS MPV script, use the following in your {{ic|~/.config/nixpkgs/config.nix}}:
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]]

Latest revision as of 19:50, 3 November 2024

MPV is an open-source command line media player.

Installation

With nix-shell

nix-shell -p mpv

With NixOS

environment.systemPackages = [
  pkgs.mpv
];

With Home Manager

home.packages = [ 
  pkgs.mpv 
];

Configuration

With Home Manager

Basic

programs.mpv.enable = true;

Advanced

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;
  };
};

Tips and Tricks

Where to get scripts

To find more scripts run this in a terminal:

nix search nixpkgs mpvScripts

The scripts are also defined in the following Nixpkgs directory.

Where to find override options

The package override options are defined in the following 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).

$ mpv --log-file=foo.log av://v4l2:/dev/video5
[lavf] Unknown lavf format v4l2
Failed to recognize file format.

Exiting... (Errors when loading file)

To address this problem, you can use the following package configuration for ffmpeg.

programs.mpv = {
  enable = true;

  package = (
    pkgs.mpv-unwrapped.wrapper {
      mpv = pkgs.mpv-unwrapped.override {
        ffmpeg = pkgs.ffmpeg-full;
      };
    }
  );
};

References

  1. https://github.com/mpv-player/mpv/wiki
  2. https://en.wikipedia.org/wiki/Mpv_(media_player)
  3. https://mynixos.com/search?q=mpv