Tecnologia

Swift nativo. Motore proprio. Build propria di libmpv.

Neverlag per Mac, iPhone, iPad e Apple TV è un’app Swift nativa. Tra fornitore e decoder c’è un motore proprio, che prende il flusso, lo tiene e lo ricongiunge. Il decoder è una build propria di libmpv. Questa pagina dice cosa significa – per chi vuole saperlo con precisione.

Stato al 12 ottobre 2026mpv 0.41.0FFmpeg 8.0.3

Neverlag è un lettore IPTV per Apple TV, iPhone, iPad, Mac e Fire TV per fornitori Xtream Codes e M3U. Separa il recupero del flusso dalla riproduzione, così una connessione che cade non porta a un ricaricamento. Misurato: 60 secondi senza connessione, zero ricaricamenti.

In breve

  • Neverlag per Mac, iPhone, iPad e Apple TV è un’app Swift nativa – nessuna webview, nessun framework multipiattaforma, un target di build per piattaforma.
  • Il decoder è libmpv, la forma libreria di mpv, in una build propria: mpv 0.41.0 con FFmpeg 8.0.3, LGPL, senza parti GPL, senza il lettore mpv.
  • Tra fornitore e decoder c’è il motore proprio di Neverlag. Tiene la connessione, costruisce una riserva, riconosce interruzioni, pause di consegna e salti temporali, si riconnette e ricongiunge i pezzi in un flusso continuo.
  • Il decoder riceve questo flusso continuo. In caso di interruzione della connessione non ricarica. Misurato: linea tagliata per 60 secondi, zero ricaricamenti.
  • Il nucleo del motore è indipendente dal decoder: nessuna sua parte chiama libmpv. Solo uno strato sottile parla con il decoder.
  • Sul Mac il decoder gira in un processo proprio, separato dall’app.
  • Decodifica hardware tramite VideoToolbox di Apple; FFmpeg è compilato con essa su tutte le piattaforme.
  • Neverlag imposta lo schermo sul ritmo della trasmissione dove il dispositivo lo consente: 50 Hz sul Mac a schermo intero, 120 Hz sugli iPhone con ProMotion. Dalla versione 1.0.2 (in arrivo a breve).
  • Neverlag mixa l’audio multicanale in stereo dove serve – e porta con sé il dialogo che in alcuni film sta nel canale dei bassi. I lettori comuni tralasciano quel canale; misurato contro VLC e l’AudioToolbox di Apple.
  • Neverlag IPTV Bench, un banco di prova per lettori sotto le stesse perturbazioni, è in preparazione.

Tecnologia

Il percorso del flusso

Un flusso IPTV è un flusso di dati dal server del fornitore che non dovrebbe mai interrompersi – e invece si interrompe. Ciò che conta è chi vede l’interruzione: il decoder, o qualcosa prima di lui.

Schema: il flusso va dal fornitore al motore Neverlag, da lì come flusso continuo al decoder libmpv e sullo schermo. Fornitore Motore Neverlag Connessione · Riserva · Riconoscere Riconnettere · Ricongiungere flusso continuo Decoder libmpv Demuxing · Decodifica VideoToolbox Schermo Schema: il flusso va dal fornitore al motore Neverlag, da lì come flusso continuo al decoder libmpv e sullo schermo. Fornitore Motore Neverlag Connessione · Riserva · Riconoscere Riconnettere · Ricongiungere flusso continuo Decoder libmpv Demuxing · Decodifica · VideoToolbox Schermo
Il decoder vede solo il flusso continuo dal motore – mai il fornitore.

Un lettore comune

Un lettore comune lascia che il decoder prenda il flusso da sé. Se la connessione si interrompe, il decoder se ne accorge quando il suo buffer è vuoto – e ricarica. L’immagine si ferma, la frase si ripete, il riavvolgimento è perso.

La sua riserva è un buffer di lettura fisso di pochi megabyte: in HD da qualche secondo a mezzo minuto, e non si ricostituisce. Se la connessione si interrompe, il decoder deve ricaricare – nuova connessione, nuovo avvio, il buffer di riavvolgimento riparte da zero. Non esiste un punto in cui la nuova connessione possa agganciarsi alla vecchia. Non può nascondere l’interruzione al decoder.

Neverlag

Neverlag è costruito diversamente. Il motore prende il flusso dal fornitore e tiene una riserva sul dispositivo. Sorveglia la consegna, riconosce interruzioni, pause di consegna e salti temporali, si riconnette in background e aggancia la nuova connessione alla riserva.

Il decoder riceve un flusso continuo. In caso di interruzione della connessione non vede alcuna interruzione e non ricarica. Se il fornitore riavvia il flusso, il motore lo riprende in modo pulito: 0.44 secondi di immagine ferma, nessun fotogramma nero.

Misurato il 8 settembre 2026: linea del dispositivo tagliata per 20, 30, 45 e 60 secondi – zero ricaricamenti in ogni prova, nuova connessione da 1.1 a 2.1 secondi dopo il ritorno del server.

Cosa fa il motore

Sette compiti, tutti prima del decoder. Ciascuno con una misura dal Playback Lab, dove c’è.

  1. 01

    Tenere la connessione

    Il motore tiene la connessione al fornitore e prende il flusso in anticipo – separatamente dalla riproduzione.

    5 minuti senza disturbi: 2 richieste all’account, 2 connessioni al flusso, 0 ricaricamenti (24 settembre 2026).

  2. 02

    Riserva

    Da 30 a 60 secondi di trasmissione stanno sul dispositivo prima di essere riprodotti. La riserva è il margine che ogni perturbazione deve prima esaurire.

    Linea tagliata per 20 s con 30 s di riserva: 0 ricaricamenti, 0 cambi, un arresto di 0.6 s (25 settembre 2026).

  3. 03

    Riconoscere

    Interruzione, pausa di consegna, salto temporale, linea troppo lenta: il motore riconosce il disturbo nel flusso di dati prima che l’immagine si fermi – non dall’immagine ferma.

    Canale morto presso il fornitore: passaggio all’altro percorso dopo 14 s, prima immagine 1.2 s dopo il cambio (24 settembre 2026).

  4. 04

    Riconnettere

    La nuova connessione nasce in background mentre la riserva continua a essere riprodotta.

    Nuova connessione da 1.1 a 2.1 s dopo il ritorno del server (8 settembre 2026).

  5. 05

    Ricongiungere

    Il motore aggancia la nuova connessione alla riserva. Il decoder riceve un flusso continuo e non ricarica.

    Linea tagliata per 60 s: 0 ricaricamenti (8 settembre 2026).

  6. 06

    Un solo arbitro

    In caso di disturbo reagisce esattamente un meccanismo – riconnettere, abbassare la qualità o cambiare percorso, mai tutto insieme. Ogni decisione è registrata nella diagnosi.

  7. 07

    Linea lenta

    Se la linea consegna stabilmente meno di quanto il canale richiede, Neverlag adatta la riproduzione invece di ricaricare.

    15 minuti limitati a circa il 90 % del fabbisogno: 42 interruzioni senza l’adattamento, 0 con, 1 connessione (9 settembre 2026).

libmpv

Il decoder: libmpv, build propria

Neverlag decodifica con libmpv, la forma libreria del lettore mpv. Il lettore mpv in sé non è incluso: nessuna riga di comando, nessun Lua, nessun JavaScript, nessuna parte GPL.

La build è nostra. mpv 0.41.0 e FFmpeg 8.0.3 vengono dagli archivi di release non modificati, più libplacebo 7.360.1, libass 0.17.3, FreeType 2.13.3, FriBidi 1.0.16 e HarfBuzz 10.1.0 – compilati con il clang di Apple per arm64 (Mac anche x86_64), collegati in un framework per piattaforma e integrati nell’app come Libmpv.xcframework.

FFmpeg è compilato in configurazione strettamente LGPL – senza parti GPL e senza parti non libere. Niente x264, niente x265, niente fdk-aac, niente OpenSSL – le connessioni cifrate passano dal sistema di Apple. La build si interrompe se dovesse entrarvi codice GPL.

FFmpeg, libplacebo, libass, FreeType, FriBidi e HarfBuzz sono non modificati – nessuna patch, solo configurazione. Il set di codec è quello nativo di FFmpeg, senza librerie di codec esterne.

Decodifica hardware tramite VideoToolbox, decodifica software come ripiego dove l’hardware di Apple non accetta un formato – per esempio il materiale interlacciato. Audio tramite lo stack audio di Apple, sottotitoli tramite libass, elaborazione GPU tramite libplacebo su Mac, iPhone e iPad; su Apple TV Neverlag porta da sé ogni immagine sullo schermo.

Il framework multimediale (Libmpv.framework) sta come file separato, caricato dinamicamente, nel bundle dell’app. L’app usa solo l’interfaccia pubblica di libmpv. Puoi sostituire il framework con una tua compilazione con la stessa interfaccia (LGPL 2.1 § 6 b); sul Mac sostituisci ogni copia presente nel bundle. Su iPhone, iPad e Apple TV, Apple richiede inoltre che l’intero bundle dell’app venga firmato di nuovo con il tuo certificato da sviluppatore – lo impone la piattaforma, non la licenza. Sorgenti, patch e script di compilazione li ricevi tramite l’offerta scritta. Il motore di flusso in sé non sta nel framework ma nell’app – sostituire il framework non lo tocca.

Cosa abbiamo modificato in mpv

Non abbiamo semplicemente preso mpv così com’è. Per le piattaforme Apple abbiamo rielaborato il sistema di build, in modo che libmpv funzioni su Mac, iPhone, iPad e Apple TV senza le dipendenze desktop del lettore mpv. E abbiamo esteso l’interfaccia di rendering di libmpv con un percorso attraverso cui le immagini decodificate vanno direttamente nella visualizzazione propria di Neverlag – senza passare dalle vie di uscita di mpv. È la base di Neverlag su Apple TV: lì l’app porta da sé ogni immagine sullo schermo. FFmpeg e tutte le altre librerie sono invariati. Le modifiche sono sotto LGPL 2.1 o successiva; la patch la forniamo tramite l’offerta scritta sulla pagina open source.

Open source: componenti, licenze, somme di controllo e offerta del codice sorgente

Il confine tra motore e decoder

Il motore è indipendente dal decoder. Il suo nucleo – connessione, riserva, riconoscimento, riconnessione, arbitro, diagnosi – non contiene una sola chiamata a libmpv.

Solo uno strato sottile parla con il decoder, tramite l’API pubblica di libmpv. Il nucleo non dipende da mpv.

Sul Mac il decoder gira in un processo proprio, separato dall’app. Un crash del decoder non trascina con sé l’app. Su iPhone, iPad e Apple TV gira nel processo dell’app – la piattaforma non ne consente un secondo.

La diagnosi sta nel motore, non nel decoder. Vede la connessione, la riserva e ogni decisione dell’arbitro. Il suo verdetto è nell’app: se è stato il fornitore, il tuo Wi-Fi o il tuo dispositivo. Il giornale registra, per ogni disturbo, chi lo ha causato – fornitore, rete o dispositivo.

Immagine e audio

Neverlag imposta lo schermo sul ritmo della trasmissione dove il dispositivo lo consente. Dalla versione 1.0.2 (in arrivo a breve) il Mac passa a schermo intero a 50 Hz per le trasmissioni a 25 e 50 fotogrammi al secondo e poi torna indietro. Misurato: 50 Hz mantenuti, intervallo tra fotogrammi 20.0 ms, nessun fotogramma fuori ritmo.

Gli iPhone con ProMotion mostrano il video a 120 Hz. Sull’Apple TV, «Adatta frequenza fotogrammi» è un’impostazione del sistema.

Neverlag mixa l’audio multicanale (5.1) in stereo dove serve. Per ogni file verifica se il dialogo sta nel canale dei bassi e lo porta con sé. I lettori comuni tralasciano quel canale mixando su due altoparlanti – misurato contro VLC e l’AudioToolbox di Apple. Dalla versione 1.0.2 (in arrivo a breve).

Playback Lab

Da dove vengono i numeri

Ogni installazione di Neverlag tiene un giornale di riproduzione sul dispositivo: connessioni, riserva, disturbi, ogni decisione dell’arbitro. Non lascia il dispositivo, a meno che tu stesso non lo condivida con il supporto.

Nel Playback Lab riproduciamo disturbi registrati contro la build di release: linea tagliata, linea limitata, flusso riavviato, canale morto. Ogni prova è elencata con la data nel Lab e nei Fatti.

Neverlag IPTV Bench – un banco di prova che misura i lettori sotto le stesse perturbazioni – è in preparazione.

ricaricamenti
linea tagliata per 60 s, 8 settembre 2026
immagine ferma
flusso riavviato presso il fornitore, 24 settembre 2026
nuova connessione
dopo il ritorno del server, 8 settembre 2026
connessioni
in 5 minuti senza disturbi, 24 settembre 2026

Componenti e licenze

Neverlag in sé non è open source. Le librerie lo sono e restano sotto le loro licenze. Le versioni vengono dalla configurazione di build, lette alla costruzione di questa pagina.

ComponenteVersioneLicenzaRuolo
mpv (libmpv) 0.41.0 LGPL-2.1-or-later Nucleo di riproduzione, rielaborato da Neverlag per le piattaforme Apple. (tutte le piattaforme)
FFmpeg 8.0.3 LGPL-2.1-or-later Contenitori, protocolli e decoder. (tutte le piattaforme)
libplacebo 7.360.1 LGPL-2.1-or-later Elaborazione GPU: gestione del colore, scaling, tone mapping. (tutte le piattaforme)
libass 0.17.3 ISC Visualizzazione dei sottotitoli. (tutte le piattaforme)
FreeType 2.13.3 FTL Resa dei caratteri per i sottotitoli. (tutte le piattaforme)
FriBidi 1.0.16 LGPL-2.1-or-later Testo bidirezionale per i sottotitoli. (tutte le piattaforme)
HarfBuzz 10.1.0 MIT Shaping del testo per i sottotitoli. (tutte le piattaforme)
GRDB.swift 7.11.1 MIT Database per catalogo e guida ai programmi. (tutte le piattaforme)

I componenti con versioni e licenze, le somme di controllo degli archivi sorgente e l’offerta scritta del codice sorgente secondo la LGPL 2.1 sono nella pagina open source.

Piattaforme

DispositivoTecnica
Mac macOS 14 o successivo, Apple Silicon e Intel. Decoder in un processo proprio, immagine tramite OpenGL.
iPhone e iPad iOS e iPadOS 17 o successivo, arm64. Decoder nel processo dell’app, immagine tramite OpenGL.
Apple TV tvOS 17 o successivo, arm64. Decoder nel processo dell’app; backend di rendering proprio, immagine senza copia, disegnata con Metal.
Fire TV App separata come download diretto, con gli stessi meccanismi: riserva, nuova connessione in background, altro percorso, il 4K torna da solo.
Android Android — in lavorazione, la versione Play Store seguirà.

Domande sulla tecnologia

Su cosa si basa Neverlag?

Su un motore proprio in Swift, che prende il flusso, lo tiene e lo ricongiunge, e su libmpv come decoder – una build LGPL propria di mpv 0.41.0 con FFmpeg 8.0.3. L’app è Swift nativo per Mac, iPhone, iPad e Apple TV.

Neverlag è solo un frontend per mpv?

No. La maggior parte dei lettori decodifica con FFmpeg – VLC, mpv e Kodi compresi. La differenza nasce prima: nel modo in cui il flusso viene recuperato, messo in riserva, mantenuto durante le interruzioni e ricomposto. È esattamente questa parte che Neverlag ha costruito da zero. mpv decodifica – tutto ciò che viene prima è il motore di flusso proprio di Neverlag: mantenere la connessione, costruire una riserva, riconoscere le interruzioni, riconnettersi in background, unire i pezzi in un flusso continuo, diagnosi. Il suo nucleo non contiene una sola chiamata a libmpv. In più abbiamo rielaborato libmpv per le piattaforme Apple ed esteso la sua interfaccia di rendering; su Apple TV l’app porta da sé ogni immagine sullo schermo, sul Mac il decoder gira in un processo proprio.

Neverlag è una webview o un framework multipiattaforma?

No. Neverlag è scritto in Swift e compilato come app nativa separata per piattaforma – Mac, iPhone e iPad, Apple TV. Nessuna webview, nessun Electron, nessun Flutter, nessun React Native.

Perché il decoder non ricarica in caso di interruzione?

Perché non vede l’interruzione. Il motore tiene una riserva da 30 a 60 secondi sul dispositivo, si riconnette in background e aggancia la nuova connessione alla riserva. Il decoder riceve un flusso continuo.

Misurato il 8 settembre 2026: linea tagliata per 60 secondi, zero ricaricamenti, nuova connessione 2.1 secondi dopo il ritorno del server.

Quali formati e codec riproduce Neverlag?

MPEG-TS e HLS dal fornitore; come contenitori anche MP4/MOV, Matroska, MPEG-PS e FLV. Video: H.264, HEVC, MPEG-2, MPEG-4 e VP9 – in hardware tramite VideoToolbox dove il chip supporta il codec, altrimenti in software; AV1 solo su dispositivi con decoder AV1 hardware. Audio: AAC, AC-3, E-AC-3, MP2, MP3, Opus, FLAC. Tutti decoder nativi di FFmpeg, nessuna libreria di codec esterna. Niente DRM.

Quali dati lasciano il dispositivo?

Nessuno verso Neverlag. L’app parla con il tuo fornitore e con l’App Store. Nessun account, nessun tracciamento, nessuna analisi. Il giornale di riproduzione resta sul dispositivo; lo esporti tu stesso se vuoi inviarlo al supporto.

Posso sostituire il framework multimediale?

Sì. Il framework multimediale (Libmpv.framework) sta come file separato, caricato dinamicamente, nel bundle dell’app. L’app usa solo l’interfaccia pubblica di libmpv. Puoi sostituire il framework con una tua compilazione con la stessa interfaccia (LGPL 2.1 § 6 b); sul Mac sostituisci ogni copia presente nel bundle. Su iPhone, iPad e Apple TV, Apple richiede inoltre che l’intero bundle dell’app venga firmato di nuovo con il tuo certificato da sviluppatore – lo impone la piattaforma, non la licenza. Sorgenti, patch e script di compilazione li ricevi tramite l’offerta scritta. Il motore di flusso in sé non sta nel framework ma nell’app – sostituire il framework non lo tocca.

Cos’è il Neverlag IPTV Bench?

Un banco di prova che misura i lettori sotto le stesse perturbazioni registrate del Playback Lab. In preparazione; di più quando sarà operativo.

Stato al 12 ottobre 2026

Neverlag è un player. Ti serve una tua playlist M3U o le credenziali di un fornitore IPTV. Neverlag non contiene, non fornisce e non procura alcun contenuto.