MPV Player: configurazione minimale

MPV è un player video che funziona molto bene: è veloce, stabile, supporta praticamente tutti i codec ed in più è altamente configurabile. In questo articolo viene presentata una configurazione video minimale del player, ma che soddisfa le esigenze moderne in fatto di codecs, stabilità e accelerazione hardware. Non verrà considerata la configurazione audio per inadeguata conoscenza. Il file di configurazione dell’utente si trova in /home/$USER/.config/mpv/mpv.conf; il file di configurazione di sistema si trova in /etc/mpv/mpv.conf. La configurazione proposta è la seguente:

$ nano /home/$USER/.config/mpv/mpv.conf

gpu-api=auto
gpu-context=auto
vo=gpu-next
profile=high-quality
hwdec=auto
hwdec-codecs=all
target-colorspace-hint=yes
icc-profile-auto=yes
cursor-autohide=1000

Per capire questi paramatri di mpv.conf si ricorre all’help da linea di comando e a qualche spiegazione:

mpv –gpu-api=help
Available GPU APIs:
auto
vulkan
opengl

La scelta migliore è lasciare “auto” (default) perché forzare vulkan potrebbe portare ad un eccessivo impegno della GPU con tanto di rumore delle ventole e alti consumi, spesso con prestazioni uguali all’api OpenGL. Se si scelie “auto” allora anche la successiva opzione –gpu-context sarà consigliabile impostarla su “auto”. Stesso discorso se si sceglie di usare solo vulkan, o solo opengl, indicando i relativi flag:

mpv gpu-context=help
Available GPU contexts:
auto
waylandvk (API vulkan)
x11vk (API vulkan)
wayland (API opengl)
x11egl (API opengl)
x11 (API opengl)
drm (API opengl)
displayvk (API vulkan)

Se precisiamo l’api (vulkan o opengl) invece di “auto”, allora possiamo scegliere se usare il context per Wayland o per X11.

Adesso esaminiamo un parametro importante: la modalità per l’output video (vo):

mpv –vo=help
Available video outputs:
gpu Shader-based GPU Renderer
gpu-next Video output based on libplacebo
vdpau VDPAU with X11
wlshm Wayland SHM video output (software scaling)
xv X11/Xv
sdl SDL 2.0 Renderer
dmabuf-wayland Wayland dmabuf video output
vaapi VA API with X11
x11 X11 (software scaling)
libmpv render API for libmpv
null Null video output
image Write video frames to image files
tct true-color terminals
drm Direct Rendering Manager (software scaling)
sixel terminal graphics using sixels
kitty Kitty terminal graphics protocol

(L’opzione libmpv è utile solo per MacOS o per mpv embedded dentro un altro programma) Se abbiamo una scheda grafica abbastanza recente, che supporta in hardware i classici codec (h264; hevc, av1, ecc), l’opzione di gran lunga migliore è “gpu-next” che ha le stesse caratteristiche di “gpu” con qualche aggiunta, ma soprattutto usa le librerie “libplacebo” che sono molto più efficienti senza perdere di stabilità.

mpv –profile=help
Available profiles:
[…]
box
sub-box
osd-box
sw-fast
low-latency
gpu-hq
high-quality
fast
encoding
libmpv
builtin-pseudo-gui
pseudo-gui
default

Anche qui, con una scheda grafica non obsoleta, è consigliabile impostare “high-quality”. “gpu-hq” ha le stesse caratteristiche ma è più vecchio e deprecato.

mpv –hwdec=help
Valid values (with alternative full names):
nvdec (-copy)
vaapi (-copy)
vulkan (-copy)
vdpau (-copy)
qsv (-copy)
amf (-copy)
cuda (-copy)
auto
no
auto-safe
auto-copy
auto-unsafe
auto-copy-safe
auto-copy-unsafe

Le opzioni con “-copy” indicano che il device scarica i dati in RAM prima di effettuare la decodifica. Questo riguarda il funzionamento di ffmpeg, o meglio lavc (usato da mpv), e del modo con cui inizializza il device hardware; a volte ha bisogno di agire in RAM e non direttamente dalla VRAM della GPU. In realtà per il semplice decoding non c’è bisogno di questa opzione che può però essere necessaria per utilizzare i filtri.
Al posto delle prime 7 voci della lista, si possono usare i nomi interi e specifici, per es. al posto di vulkan, con il codec hevc si può usare il nome intero: hevc-vulkan, oppure hevc-vaapi se si vuole usare vaapi, ecc. Io trovo scomodo scrivere una lista di codec, quando con “auto” lasciamo fare tutto a mpv con gli stessi risultati.

Finora abbiamo visto le opzioni più importanti; ce ne sono altre non fondamentali ma che comunque vale la pena impostare per casi specifici, soprattutto per il rendering mediante GPU.

hwdec-codecs=all
Mpv supporta la decodifica di un’infinità di codecs e infatti non presenterò il risultato di “mpv –hwdec=help” perché è una lista troppo lunga. Va bene eliminare o commentare questa opzione così che prenda i codecs di default. Questi sono i più importanti e quelli usati la maggior parte delle volte: h264, hevc, vc1, vp8, vp9, av1, prores_raw, ffv1 e dpx. Se pensiamo di usare anche altri codec (e oggigiorno c’è tanta scelta) è consigliabile usare la flag “all” in modo da poterli comprendere tutti.

target-colorspace-hint=auto
Se si usa Wayland vale la pena attivare questa opzione in modo da poter configurare lo spazio colore dell’output (anche e soprattutto nel caso di media HDR). Ci sono molte altre opzioni –target-… che riguardano gli spazi colore, ma queste possono tranquillamente essere tralasciate perché vanno quasi sempre bene i valori di default.

icc-profile-auto=yes
Se facciamo color management tramite profili ICC, abbiamo molte opzioni: caricare il nostro profilo, usare quelli del monitor, usare quello di sistema (globale), usare quello eventualmente embedded nel file video, ecc. In realtà non c’è bisogno di usare queste opzioni perché quelle impostate di default vanno sempre bene, a meno che non sappiamo cosa vogliamo. L’unica opzione importante è questa indicata, che serve a trascurare qualsiasi ICC impostato in mpv se esiste già un ICC globale di sistema attivo. Questa opzione evita che si carichino i due ICC contemporaneamente rendendo falsati i colori (raddoppiano saturazione e luminosità).

cursor-autohide=1000
Quanto tempo (in ms) prima che il puntatore venga nascosto. Non è certo un parametro importante, ma uno può decidere quanto vuole che il cursore rimanga visibile dopo aver avviato il playback.

Se leggiamo il wiki di mpv (https://mpv.io/manual/master/#synopsis) ci accorgiamo delle centinaia di paramatri presenti e come la nostra configurazione video sia davvero minimale. Il wiki può essere usato anche per capire in maniera approfondita i parametri che sono stati usati.
Un’ultima nota: mpv spesso non piace agli utenti per la gui minimale. Il fatto è che mpv può essere modificato con tanti script, molti dei quali servono per dotarlo di una gui migliore, quindi non è un vero problema. Migliaia di script scritti dagli utenti si possono trovare qui:
https://github.com/mpv-player/mpv/wiki/User-Scripts

Andrea Paz
Andrea Paz
Articoli: 4