È possibile implementare una barra di controllo con supporto DVR per VOD e streaming live. Il supporto DVR include il concetto di una finestra ricercabile e il punto live del cliente.
Per VOD, la lunghezza della finestra ricercabile corrisponde alla durata dell’intera risorsa.
Per lo streaming dal vivo, la lunghezza della finestra DVR (ricercabile) è definita come l'intervallo di tempo che inizia dalla finestra di riproduzione dal vivo e termina al punto dal vivo del client.
Il punto live del client viene calcolato sottraendo la lunghezza del buffered dall'estremità della finestra live. La durata di destinazione è un valore maggiore o uguale alla durata massima di un frammento nel manifesto.
Il valore predefinito è 10000 ms.
La barra di controllo per la riproduzione in diretta supporta il DVR posizionando prima il pollice nel punto di attivazione del client all'avvio della riproduzione e visualizzando una regione che contrassegna l'area in cui la ricerca non è consentita.
Per implementare una barra di controllo con supporto DVR, segui i passaggi per visualizzare una barra di scorrimento ricerca, con alcune differenze minori:
È possibile scegliere di implementare una barra di controllo mappata solo per l'intervallo ricercabile anziché per l'intervallo di riproduzione. Qualsiasi interazione dell’utente per la ricerca può essere considerata sicura nell’intervallo ricercabile.
È possibile scegliere di implementare una barra di controllo mappata per l'intervallo di riproduzione, ma che visualizza anche l'intervallo ricercabile.
Per una barra di controllo:
Aggiungi una sovrapposizione alla barra di controllo che rappresenta l’intervallo di riproduzione.
Quando l'utente inizia a cercare, controlla se la posizione di ricerca desiderata si trova nell'intervallo ricercabile utilizzando MediaPlayer.getSeekableRange
.
Ad esempio:
TimeRange seekableRange = _mediaPlayer.getSeekableRange();
if (seekableRange.contains(desiredSeekPosition)) {
_mediaPlayer.seek(desiredPosition);
}
Puoi anche scegliere di cercare il punto attivo del cliente utilizzando MediaPlayer.LIVE_POINT
costante.
mediaPlayer.seek(MediaPlayer.LIVE_POINT);