MPV: Difference between revisions

From NixOS Wiki
Layer-09 (talk | contribs)
I changed the wiki entry by carefully dividing the information into more manageable sections, making it more accessible and easier to navigate for users.
Layer-09 (talk | contribs)
m Removed numbering
(One intermediate revision by one other user 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.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.  
[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 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.   
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.   
Line 5: Line 5:
== Installation ==
== Installation ==


==== 2.1 Using nix-shell ====
==== Using nix-shell ====
<syntaxhighlight lang="bash" start="3">
<syntaxhighlight lang="bash" start="3">
nix-shell -p mpv
nix-shell -p mpv
</syntaxhighlight>
</syntaxhighlight>


==== 2.2 System-Wide Installation on NixOS ====
==== System-Wide Installation on NixOS ====
<syntaxhighlight lang="text">
<syntaxhighlight lang="text">
environment.systemPackages = [
environment.systemPackages = [
Line 19: Line 19:
</syntaxhighlight>
</syntaxhighlight>


==== 2.3 User-Specific Installation with Home Manager ====
==== User-Specific Installation with Home Manager ====
<syntaxhighlight lang="text">
<syntaxhighlight lang="text">
home.packages = [  
home.packages = [  
Line 30: Line 30:
== Configuration ==
== Configuration ==


==== 3.1 Basic ====
==== Basic ====
<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">
programs.mpv = {
programs.mpv = {
Line 37: Line 37:
</syntaxhighlight>
</syntaxhighlight>


==== 3.2 Advanced ====
==== Advanced ====
<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">
programs.mpv = {
programs.mpv = {
Line 65: Line 65:
== Tips and Tricks ==
== Tips and Tricks ==


==== 4.1 Where to get scripts ====
==== Where to get scripts ====
To find more scripts run this in a terminal: <syntaxhighlight lang="bash">
To find more scripts run this in a terminal: <syntaxhighlight lang="bash">
nix search nixpkgs mpvScripts
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].
</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 ====
==== 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].
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 ==
== Troubleshooting ==


==== 5.1 Error, unknown format ====
==== 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).  
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).  



Revision as of 06:35, 24 June 2024

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

Using nix-shell

nix-shell -p mpv

System-Wide Installation on NixOS

environment.systemPackages = [
  pkgs.mpv
];

After modifying your configuration, apply the changes by running:

sudo nixos-rebuild switch

User-Specific Installation with Home Manager

home.packages = [ 
  pkgs.mpv 
];

After updating your configuration, apply the changes by running:

home-manager switch

Configuration

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