Aprire un video e vederlo partire all’istante, senza splash screen, senza pubblicità, senza una libreria che indicizza mezzo disco: è questo il primo motivo per cui mpv ha conquistato una nicchia di appassionati molto fedele. A prima vista sembra spartano, perché di default mostra solo l’immagine e una sottile barra di avanzamento quando muovi il mouse. Sotto quella superficie minimale, però, si nasconde uno dei motori di riproduzione più potenti in circolazione, costruito sulla stessa base tecnologica (libmpv e il fork di FFmpeg chiamato ffmpeg-mpv) usata da numerosi altri progetti. La versione stabile 0.41.0, pubblicata il 7 giugno 2026, conferma un ritmo di sviluppo costante e l’adozione ormai matura del nuovo backend di rendering basato su Vulkan.
La differenza rispetto a VLC o ai player integrati nei sistemi operativi sta nella filosofia, ovvero mpv non cerca di indovinare cosa vuoi ma ti dà gli strumenti per dirglielo con precisione. Tutta la configurazione vive in file di testo, ogni comportamento è un’opzione documentata, e il player può essere esteso con script scritti in Lua.
In questa breve guida di presentazione vedremo come trasformare l’installazione base in uno strumento su misura, dal file mpv.conf ai profili automatici, dall’upscaling con shader come FSRCNNX e Anime4K fino allo streaming diretto da YouTube grazie a yt-dlp.
Un player scarno che sa farsi apprezzare
Conviene chiarire subito un punto, perché è il malinteso più comune. mpv sembra povero di funzioni, ma in realtà è povero solo di interfaccia. La logica del progetto è quella di un motore di riproduzione completo a cui è stata tolta ogni decorazione superflua, lasciando a chi lo usa la libertà di aggiungere solo ciò che serve. Di conseguenza, l’esperienza che ottieni dipende quasi interamente da come lo configuri.
Il cuore tecnico è il sistema di output video. Nelle versioni recenti l’opzione di riferimento è vo=gpu-next, un backend di rendering che sfrutta la libreria libplacebo e che gestisce in modo molto più accurato la conversione dei colori, la gestione dell’HDR e l’applicazione degli shader rispetto al vecchio gpu. A questo si aggiunge la decodifica hardware, che scarica il lavoro di decompressione sul chip dedicato della scheda video invece di affidarlo alla CPU. Su un portatile questo si traduce in ventole silenziose e batteria che dura, anche con un file 4K HEVC.
C’è poi la questione della precisione di riproduzione, il terreno su cui mpv stacca davvero la concorrenza. Il player permette di scegliere diversi algoritmi di scaling per ingrandire l’immagine, ridurla o convertire i colori, e di applicare shader personalizzati direttamente sulla GPU. È la base che rende possibile l’upscaling avanzato di cui parleremo più avanti. Tutto questo, però, resta inerte finché non scrivi le opzioni giuste nel file di configurazione. Vediamo dove vive e come si compila.
mpv.conf, il file dove vive l’intera configurazione
Quasi tutto ciò che mpv fa si controlla da un unico file di testo chiamato mpv.conf. Su Linux e macOS lo trovi (o lo crei tu) in ~/.config/mpv/mpv.conf. Su Windows hai due strade, ovvero la cartella %APPDATA%\mpv\ per un’installazione classica oppure una sottocartella portable_config accanto a mpv.exe, comoda da spostare su un altro PC. La sintassi è semplice, cioè una opzione per riga nel formato chiave=valore, e tutto ciò che segue un cancelletto # viene ignorato, così puoi commentare le tue scelte.
Un punto di partenza è questo.
# --- Output video e decodifica ---
vo=gpu-next
gpu-api=vulkan
hwdec=auto-safe
profile=high-quality
# --- Algoritmi di scaling ---
scale=ewa_lanczossharp # ingrandimento (upscale)
dscale=mitchell # riduzione (downscale)
cscale=ewa_lanczossharp # scaling crominanza
dither-depth=auto
# --- Audio ---
volume=100
volume-max=150
audio-pitch-correction=yes
# --- Sottotitoli ---
sub-auto=fuzzy
slang=ita,it,eng,en
alang=ita,it,jpn,ja,eng,en
sub-font-size=42
# --- Cache (utile soprattutto in streaming) ---
cache=yes
demuxer-max-bytes=150MiB
demuxer-readahead-secs=20
# --- Screenshot ---
screenshot-format=png
screenshot-high-bit-depth=yes
screenshot-directory=~/Immagini/mpv
Spiego le scelte più importanti, perché copiare opzioni senza capirle è il modo più rapido per ritrovarsi con un player lento o con artefatti a schermo. La riga profile=high-quality attiva un preset interno che alza la qualità di rendering, e chi conosce mpv da tempo lo ricorderà come gpu-hq, un nome deprecato in favore di high-quality. L’opzione hwdec=auto-safe chiede la decodifica hardware solo quando il driver la garantisce affidabile, evitando i crash che a volte capitavano forzandola a mano.
Gli algoritmi ewa_lanczossharp per l’upscaling e mitchell per il downscaling sono un compromesso collaudato tra nitidezza e assenza di aloni. Se la tua scheda video è datata e noti scatti, puoi abbassare la qualità sostituendo scale=ewa_lanczossharp con un più leggero scale=spline36, dove la differenza visiva è minima ma il guadagno in fluidità no.
slang (subtitle language) imposta la lingua dei sottotitoli mentrealang (audio language) imposta la lingua dell’audio. I valori sono codici lingua separati da virgola, in ordine di preferenza: mpv prova il primo, se non lo trova passa al secondo, e così via.
Profili e regole condizionali, così mpv si adatta da solo
Una configurazione unica per tutti i contenuti è un compromesso, e non sempre felice. Un cartone animato in 720p ha bisogno di un trattamento diverso da un film 4K in HDR, e applicare a entrambi gli stessi shader pesanti significa o sprecare potenza o non ottenere il risultato migliore. mpv risolve la cosa con i profili, ovvero blocchi di opzioni che puoi attivare a mano oppure, soluzione più elegante, far scattare in automatico in base a una condizione.
Un profilo si dichiara mettendo il suo nome tra parentesi quadre, seguito dalle opzioni che gli appartengono. La parte interessante è profile-cond, che accetta una piccola espressione Lua valutata per ogni file aperto, e se è vera il profilo si attiva. L’esempio qui sotto applica un upscaling aggressivo solo ai video a bassa risoluzione, lasciando in pace quelli già in alta definizione.
[upscale-sd]
profile-cond=width < 1920
profile-restore=copy-equal
glsl-shaders-append="~~/shaders/FSRCNNX_x2_16-0-4-1.glsl"
[hdr-tv]
profile-cond=get("video-params/primaries", "") == "bt.2020"
target-colorspace-hint=yesQui la doppia tilde ~~/ è un’abbreviazione comoda che indica la cartella di configurazione di mpv, così i percorsi restano validi anche se sposti tutto su un’altra macchina. La riga profile-restore=copy-equal serve a ripristinare le opzioni originali quando apri un file che non soddisfa più la condizione, evitando che le impostazioni di un video si trascinino su quello successivo.
Senza di esso rischi che lo shader caricato per un vecchio episodio resti attivo anche sul film in 4K aperto subito dopo, con un calo di prestazioni che fatichi a spiegarti.
I profili tornano utili anche per cose più banali ma altrettanto pratiche. Puoi creare un profilo mobile con shader disattivati e qualità ridotta per quando sei a batteria, oppure un profilo legato a una cartella specifica. La logica è sempre la stessa, ovvero scrivi una volta la regola e da quel momento mpv decide da solo, senza che tu debba ricordarti di premere tasti ogni volta.
Upscaling con FSRCNNX e Anime4K, più dettaglio dei pixel originali
Arriviamo a ciò che spinge molti a provare mpv, ovvero la possibilità di migliorare visibilmente un video di bassa qualità in tempo reale, mentre lo guardi. Quando un’immagine piccola viene mostrata su uno schermo grande va ingrandita, e il modo in cui si “inventano” i pixel mancanti fa tutta la differenza. Gli shader di upscaling sono piccoli programmi che girano sulla GPU e ricostruiscono quei dettagli in modo più intelligente del semplice stiramento.
Lo shader più apprezzato è FSRCNNX, una rete neurale pre-addestrata e convertita in formato GLSL, leggibile da mpv. Il file più usato è FSRCNNX_x2_16-0-4-1.glsl, che raddoppia la risoluzione recuperando bordi e texture con risultati notevoli su film e serie in 720p o 1080p portati su un monitor 4K. Per usarlo basta scaricare il file .glsl, metterlo in una cartella shaders dentro la directory di configurazione e richiamarlo, come abbiamo visto, con glsl-shaders-append.
Per l’animazione giapponese il riferimento è invece Anime4K, arrivato alla versione 4.0. Si tratta di una pipeline pensata appositamente per le degradazioni tipiche degli anime, come linee sfocate e aloni di compressione, e si distribuisce come un pacchetto di file .glsl da concatenare in un ordine preciso. Il progetto fornisce template già pronti, divisi tra configurazioni per GPU di fascia alta e di fascia bassa. Una volta scompattato l’archivio nella cartella shaders, puoi associare le diverse modalità ad alcune scorciatoie nel file input.conf.
# input.conf, preset Anime4K richiamabili da tastiera
CTRL+1 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl"; show-text "Anime4K qualita alta"
CTRL+0 no-osd change-list glsl-shaders clr ""; show-text "Shader disattivati"
Un consiglio doveroso. Questi shader chiedono molto alla scheda video, e su un portatile con grafica integrata di qualche anno fa l’upscaling neurale può tradursi in scatti e ventole al massimo. Prima di adottarli come impostazione fissa, tieni d’occhio il consumo con la statistica integrata di mpv, che richiami premendo Shift+I.
Se noti che il tempo di rendering per fotogramma si avvicina alla durata del fotogramma stesso, sei al limite e conviene scendere a un preset più leggero. L’upscaling migliore è quello che la tua GPU regge senza affannarsi.
Gli script Lua che danno a mpv l’interfaccia che gli manca
L’interfaccia spartana di mpv è una scelta, non una mancanza, e qui entra in gioco la sua estensibilità. Il player può caricare script scritti in Lua semplicemente mettendo i file nella cartella ~/.config/mpv/scripts/ (o l’equivalente su Windows). All’avvio mpv li trova e li attiva da solo, e attorno a questo meccanismo è cresciuto un ecosistema di componenti aggiuntivi che vale la pena conoscere.
Il primo da installare per quasi tutti è uosc, un’interfaccia moderna che sostituisce la barra di controllo minimale con un’altra elegante e ricca di funzioni, tra cui una timeline con anteprime al passaggio del mouse, un menu contestuale e pulsanti per capitoli, tracce audio e sottotitoli. Si abbina bene a thumbfast, uno script che genera le miniature di anteprima in modo rapido ed efficiente, così quando scorri la timeline vedi dove stai andando invece di muoverti alla cieca. Insieme, questi due trasformano la sensazione d’uso del player senza tradirne la leggerezza.
C’è poi tutta una categoria di script che aggiungono funzioni assenti di serie. mpv-mpris integra il player con i controlli multimediali del desktop su Linux, così i tasti play e pausa della tastiera funzionano e mpv compare nel widget del sistema. Per chi guarda molti contenuti scaricati da YouTube esiste sponsorblock_minimal, uno script che salta automaticamente i segmenti sponsorizzati sfruttando il database della community, lo stesso principio dietro l’integrazione tra yt-dlp e SponsorBlock di cui questo blog ha già parlato, qui portato però nella riproduzione in tempo reale.
L’installazione segue sempre lo stesso schema, ovvero scarichi il file .lua (a volte accompagnato da una cartella di configurazione), lo lasci nella directory degli script e riavvii il player. Nessun gestore di pacchetti, nessuna procedura, copi e funziona.
Streaming diretto con yt-dlp, YouTube senza aprire il browser
Una delle funzioni che colpisce di più chi prova mpv per la prima volta è la capacità di riprodurre un video di YouTube passandogli semplicemente l’URL, senza scaricarlo e senza aprire il browser. Il meccanismo si appoggia a yt-dlp. mpv include uno script interno, ytdl_hook, che intercetta gli indirizzi web e li passa a yt-dlp per ottenere il flusso da riprodurre.
Il prerequisito è avere yt-dlp installato e raggiungibile dal sistema. Conviene installare la versione più recente, dato che le piattaforme cambiano spesso e un yt-dlp datato smette di funzionare; l’ultima release al momento è la 2026.06.09. Su Linux e macOS l’installazione tramite gestore di pacchetti o tramite pip è immediata, mentre su Windows puoi scaricare l’eseguibile e metterlo in una cartella inclusa nel PATH oppure accanto a mpv.exe. Fatto questo, riprodurre un video diventa banale.
mpv "https://www.youtube.com/watch?v=..."
Per avere il controllo sulla qualità del flusso, conviene aggiungere qualche riga al mpv.conf. L’opzione ytdl-format accetta la stessa sintassi dei selettori di formato di yt-dlp, così puoi imporre un tetto alla risoluzione per non saturare la connessione.
# Limita lo streaming a 1080p e privilegia codec efficienti
ytdl-format=bestvideo[height<=?1080][vcodec^=av01]+bestaudio/bestvideo[height<=?1080]+bestaudio/best
script-opts=ytdl_hook-ytdl_path=yt-dlp
Il selettore qui sopra chiede a mpv il miglior flusso fino a 1080p preferendo il codec AV1, che a parità di qualità consuma meno banda, e ripiega su alternative se non disponibile. La riga script-opts serve a indicare esplicitamente il percorso dell’eseguibile, utile quando il sistema non lo trova da solo.
Ricordo che lo stesso meccanismo funziona con molte altre piattaforme supportate da yt-dlp, non solo YouTube, e che puoi incollare un URL direttamente nella finestra di mpv trascinandolo o usando un comando da tastiera.
Recuperare un vecchio video PAL 720×576
I filmati girati con le videocamere dei primi anni 2000, dai camcorder MiniDV ai DVD da 8 cm, condividono quasi tutti gli stessi difetti. Sono in PAL 720×576, quasi sempre interlacciati (576i50), spesso ripresi in condizioni di luce non ideali e poi compressi in MPEG-2 o DV, il che lascia rumore, sfocatura e sfumature a scalini. Portarli su un monitor moderno ad alta risoluzione amplifica ogni magagna, perché ciascun pixel viene ingrandito di parecchie volte. La strategia giusta non è un singolo trucco ma una catena di interventi nell’ordine corretto.
Il primo intervento, e spesso quello che cambia di più, è il deinterlacciamento, che elimina l’effetto “pettine” sui movimenti tipico del materiale 576i. Subito dopo conviene agire sul rumore, perché ingrandire un’immagine sporca significa soltanto ingrandire la grana. Un denoise di qualità come NLMeans, eseguito sulla GPU, pulisce molto meglio dei vecchi filtri su CPU e preserva i dettagli reali. Solo a quel punto ha senso l’ingrandimento vero e proprio, affidato a una rete neurale come FSRCNNX e rifinito da SSimSuperRes, mentre il colore viene ricostruito in modo più accurato da KrigBilateral. Una leggera nitidezza adattiva in chiusura ridà mordente senza esagerare.
La configurazione qui sotto mette in fila proprio questa catena, pensata per una scheda video Nvidia di fascia media.
# mpv.conf - restauro SD PAL (720x576) verso un monitor ad alta risoluzione
# --- Output e decodifica ---
vo=gpu-next
gpu-api=vulkan
hwdec=auto-safe
profile=high-quality
# --- Deinterlacciamento (sorgente 576i) ---
deinterlace=yes
# --- Catena shader su GPU ---
# ordine: colore -> denoise -> upscale -> refine -> sharpen
glsl-shaders-append="~~/shaders/KrigBilateral.glsl"
glsl-shaders-append="~~/shaders/nlmeans.glsl"
glsl-shaders-append="~~/shaders/FSRCNNX_x2_16-0-4-1.glsl"
glsl-shaders-append="~~/shaders/SSimSuperRes.glsl"
glsl-shaders-append="~~/shaders/adaptive-sharpen.glsl"
# --- Scaling di qualita' ---
scale=ewa_lanczossharp
cscale=ewa_lanczossharp
dscale=mitchell
sigmoid-upscaling=yes
correct-downscaling=yes
linear-downscaling=yes
# --- Debanding senza riaggiungere grana ---
deband=yes
deband-iterations=2
deband-threshold=48
deband-range=16
deband-grain=0
dither-depth=auto
keep-open=yes
fullscreen=yesGli shader vanno scaricati una volta sola e messi nella cartella shaders dentro la directory di configurazione, ovvero NLMeans (dai dotfiles di AN3223), più FSRCNNX, SSimSuperRes, KrigBilateral e adaptive-sharpen (questi ultimi quattro dai repository di igv). Resta però un limite da accettare, perché nessun filtro può inventare dettaglio che la videocamera non ha mai catturato. Ciò a cui puntare, realisticamente, è un’immagine pulita e piacevole a tutto schermo (inoltre se hai un monitor 16:9 e parti da un PAL 720×576 le fasce nere laterali restano, perché il video è 4:3). Se il materiale è molto rumoroso puoi alzare l’intensità del denoise, mentre se noti scie dietro i soggetti in movimento conviene abbassarla.
mpv: meno comodità, più risultati
Per chi vuole solo cliccare due volte su un file e vederlo partire troverà la configurazione iniziale un ostacolo, perché qui niente si imposta da un menu grafico e ogni miglioria passa per un file di testo. È un compromesso esplicito, ovvero il progetto scambia la comodità immediata con un controllo quasi totale, ed è uno strumento per chi accetta di investire un’ora per costruirsi il player che vuole.
Per chi accetta quel patto, però, il ritorno è notevole. Una volta scritto il tuo mpv.conf, sistemati i profili automatici e installati gli script che ti servono, ti ritrovi con un lettore leggero, velocissimo ad aprirsi, capace di migliorare i video scadenti e di riprodurre uno streaming senza intermediari. La cosa più preziosa è che la configurazione è portatile, perché copi una cartella e la ritrovi identica su qualsiasi computer.
Il mio consiglio, se vuoi provarlo, è di non puntare subito al risultato perfetto. Parti dal file di configurazione di base proposto qui, usalo per qualche giorno e prendi confidenza con i comandi da tastiera. mpv premia la pazienza più della fretta, perché l’installazione migliore non è quella con più opzioni ma quella tarata sulle tue abitudini e sul tuo hardware. In un panorama di software sempre più gonfio di funzioni che nessuno chiede, un programma che fa una cosa sola e la fa bene resta una piccola, solida soddisfazione.













