{ pkgs, lib, ... }: { programs.mpv = { enable = true; bindings = { # Volume normalization # See https://github.com/mpv-player/mpv/issues/3979 "Alt+a" = ''cycle-values af "loudnorm=I=-25:TP=-1.5:LRA=1:linear=false" "dynaudnorm=framelen=100:gausssize=10:coupling=1:peak=0.58" "speechnorm" ""''; "Alt+f" = "cycle video-unscaled"; # Show all chapters (like a right-clic on |<< or >>|) "c" = "show_text \${chapter-list}"; "=" = "show-text \${playlist}"; "!" = "show-text \${track-list}"; # q is easier to type than Q "q" = "quit-watch-later"; "ESC" = "quit-watch-later"; "Q" = "quit"; "ENTER" = "playlist-next force"; "Alt+BS" = "playlist-remove current"; }; config = { af = "loudnorm=I=-25:TP=-1.5:LRA=1:linear=false"; hwdec = "auto-safe"; profile = "gpu-hq"; vo = "gpu"; ytdl-format = "18/mp4-480p/hls-480p/http-360p/mp4"; # Don't wait ages for the window to finally show up. force-window = "immediate"; stop-screensaver = "yes"; slang = "eng,en,enUS,en-US,fr,fr-FR"; alang = "eng,en,enUS,en-US,fr,fr-FR"; sub-scale = "0.6"; # For arbtt #title = "MPV: \${?pause==no:playing}\${?pause==yes:paused}: \${path}"; title = lib.mkDefault "MPV: \${?pause==no:playing}\${?pause==yes:paused}: "; # Higher quality screenshots. Low compression rate to speed up saving. screenshot-directory = "~/Images/mpv"; screenshot-template = "%{filename:unknown}.%wH-%wM-%wS-%wT"; screenshot-format = "avif"; screenshot-avif-encoder = "libsvtav1"; screenshot-avif-pixfmt = "yuv420p"; # TODO: change crf wrt. resolution screenshot-avif-opts = "crf=24,aq-mode=complexity"; screenshot-high-bit-depth = "yes"; screenshot-tag-colorspace = "yes"; }; profiles = { "extension.gif" = { interpolation = "no"; }; }; }; }