joe ha scritto: ↑mar 28 apr 2020, 18:47
demuxer-readahead-sec=
Questo in sostanza è il buffering dello stream, ed è usato quando la cache di rete è disabilitata o il valore di cache-secs non supera quello di demuxer-readahead.
--cache, cache-secs riguardano invece la cache di rete, che permette sostanzialmente di precaricare i dati audio/video di un ammontare determinato per consentire di navigare avanti e indietro durante la riproduzione del flusso di rete; diversamente, non sarebbe possibile.
Di converso, l'uso di 'demuxer-readahead-sec + cache disabilitata' non ti permettono il 'seek' di un flusso di rete, ma non ci sono effetti negativi sulla riproduzione. Tuttavia il manuale sembra sconsigliarne l'uso, dato che parla di valore 'fuzzy'(?? Tradurre, please).
MPV comunque gestisce la cache di rete in modo massiccio e automatico, e in teoria non occorrerebbe forzarne l'attivazione - a cosa serve la cache di rete quando riproduci un file locale?
Ovviamente cache di rete e buffering sono correlati, ma assolvono a 2 funzioni diverse.
Nel tuo caso, dato che vuoi attendere che una parte sufficiente di dati venga caricata prima che inizi la riproduzione, senza compromettere la funzione della cache di rete, devi forzare il funzionamento di quest'ultima in modalità buffer.
Per far ciò devi usare gli argomenti --cache-pause-initial=yes --cache-pause-wait=[numero_di_secondi].
L'unica controindicazione è che ti appare la finestra di riproduzione con il video in pausa per il tot di secondi impostato. Ma alla fine questo è un problema solo se vuoi fare il dump del video.
Un'alternativa è usare il buffering, lanciando mpv con questi argomenti:
--demuxer-cache-wait=yes --demuxer-max-bytes=1M.
Limitare il "riempimento del demuxer" è necessario altrimenti il video parte dopo...... un'ora?
Così però perdi i vantaggi di una cache di rete sufficientemente ampia da realizzare gli altri obiettivi, come mettere il video in pausa continuando a caricare i dati del flusso.
Poi, un altro fattore che influisce è il modo in cui ottieni lo stream. Per esempio streamlink non si limita a risolvere l'URL, ma si occupa anche del "trasporto" e dunque la riproduzione col lettore multimediale avviene via pipe o attraverso una sorta di server http che gira sulle interfacce di rete locali. Questo può creare problemi se vuoi mettere il video in pausa per un periodo di tempo abbastanza lungo.
Forse può aiutare lanciare streamlink con l'argomento '--player-no-close', ma questo lo lascio sperimentare a te.