Questo esempio mostra il modo consigliato per includere le specifiche TimeRange nella timeline di riproduzione.
TimeRange
specifiche (ovvero, istanze della classe TimeRange
).TimeRange
per popolare un'istanza della classe TimeRangeCollection
.TimeRangeCollection
al metodo replaceCurrentItem
(parte dell'interfaccia MediaPlayer).PREPARED
in attesa che venga attivato il callback PlaybackEventListener#onPrepared
.play()
(parte dell'interfaccia MediaPlayer
).TimeRange
si sovrappongono sulla timeline di riproduzione. Ad esempio, il valore della posizione iniziale corrispondente a una specifica TimeRange
potrebbe essere inferiore al valore della posizione finale già inserita. In questo caso, TVSDK regola in modo invisibile la posizione iniziale della specifica TimeRange
offesa per evitare conflitti nella timeline. Grazie a questa regolazione, il nuovo TimeRange
diventa più breve di quanto specificato originariamente. Se la regolazione è così estrema che porterebbe a un TimeRange
con una durata di zero ms, TVSDK rilascia silenziosamente la specifica TimeRange
che causa il danno.TimeRange
per le interruzioni di annunci personalizzate, TVSDK tenta di tradurle in annunci raggruppati all’interno di interruzioni di annunci. TVSDK cerca le specifiche adiacenti TimeRange
e le raggruppa in interruzioni pubblicitarie separate. Se ci sono intervalli di tempo che non sono adiacenti a nessun altro intervallo di tempo, vengono tradotti in interruzioni pubblicitarie che contengono un singolo annuncio.TimeRange
specifiche che possono essere utilizzate solo nel contesto della funzione di ad-markers personalizzata. Se la risorsa sottostante non è di tipo VOD, la libreria TVSDK genera un'eccezione.Il frammento di codice seguente fornisce un esempio semplice in cui un set di tre specifiche TimeRange viene posizionato sulla timeline come ad-markers personalizzati.
// Assume that the 3 timerange specs are obtained through external means: CMS, etc.
// Use these 3 timerange specs to populate the TimeRangeCollection instance
TimeRangeCollection timeRanges = new TimeRangeCollection();
timeRanges.addTimeRange(new TimeRange(0,10000));
timeRanges.addTimeRange(new TimeRange(15000,20000));
timeRanges.addTimeRange(new TimeRange(25000,30000));
// create and configure a MediaResource instance
MediaResource mediaResource =
MediaResource.createFromUrl("www.example.com/video/test_video.m3u8",
timeRanges.toMetadata(null));
// prepare the content for playback by creating
// NOTE: mediaPlayer is an instance of a properly configured MediaPlayer
mediaPlayer.replaceCurrentItem(mediaResource);
// wait for TVSDK to reach the PREPARED state
...
MediaPlayer.PlaybackEventListener playbackEventListener = new
MediaPlayer.PlaybackEventListener() {
@Override
public void onPrepared() {
// TVSDK in in the PREPARED state. We are allowed to start the playback
mediaPlayer.play();
}
}