Pakiet Cast SDK zawiera wbudowane interfejsy API do obsługi treści na żywo. Obejmuje to m.in. elastyczny, gotowy do użycia interfejs w połączeniu z interfejsami API, które umożliwiają programistom tworzenie za pomocą kilku linijek kodu. Interfejs Live API obsługuje wyświetlanie godziny rozpoczęcia i zakończenia, metadane programu, elementy sterujące DVR oraz okna z możliwością przewijania.
Ten przewodnik pokazuje, jak skonfigurować strumień do interfejsów Live API, w tym: przykładowe fragmenty kodu i metadanych do konfigurowania podstawowych scenariuszy transmisji na żywo, zrzuty ekranu przedstawiające każdy scenariusz.
Wymagania wstępne
Znajomość podstaw wdrażania Zanim sprawdzisz, musisz mieć odbiornik internetowy Google. Aby uruchomić przykładowy kod, musisz mieć dostęp do aktywnego który jest zgodny z jednym z obsługiwanych typów multimediów. Ogólnie funkcja Na żywo obsługuje typowe konfiguracje transmisji na żywo dla obsługiwanych multimediów.
W przewodniku używane są następujące terminy:
- Przewijane okno – zakres transmisji na żywo, w którym użytkownicy mogą przewijać treści.
- Live Edge – najnowsza część transmisji na żywo dostępna dla odtwarzacza.
- Play Head – sygnatura czasowa bieżącej pozycji odtwarzania w interfejsie.
Przesyłanie transmisji na żywo
Istnieją 2 sposoby konfigurowania pakietu SDK odbiornika internetowego pod kątem używania interfejsu Live API treść:
- za pomocą elementu przechwytującego wiadomości
LOAD
w aplikacji odbiornika internetowego. (zalecane) - za pomocą żądania obciążenia wygenerowanego po stronie nadawcy lub odbiorcy.
Element przechwytujący zapewnia
LoadRequestData
, który zawiera wszystkie ważne metadane dotyczące żądania wczytywania. Do
wskazuje, że żądanie wczytania dotyczy transmisji na żywo,
streamType
w
mediaInformation
do
StreamType.LIVE
.
Pole MediaInformation.duration
powinno mieć wartość -1
, ponieważ instancje odtwarzacza są
odpowiada za obliczenie, gdy treść ma wartość LIVE
.
/*
* This interceptor is called before your content is loaded by a Cast device
*/
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD,
request => { /* cast.framework.messages.LoadRequestData */
request.media.streamType = cast.framework.messages.StreamType.LIVE;
return request;
});
Dodawanie danych przewodnika po programach
Transmisje na żywo, zwłaszcza długotrwałe transmisje, takie jak kanały telewizyjne, mogą wyświetlanie metadanych przewodnika/programowania na podstawie bieżącego odtwarzania. pozycję w transmisji na żywo. Zdecydowanie zalecamy dostawców treści, aby dodawali programowanie metadanych w swoich aplikacjach odbiornika internetowego, aby zapewnić lepszemu użytkownikowi i uzyskiwanie dodatkowych informacji.
Wstępne dane przewodnika dla strumienia możesz skonfigurować w komunikacie LOAD
aplikacji przechwytującej, tak samo jak zaznaczyliśmy, że jest to transmisja na żywo
poprzedniego przykładu. Poszczególne sekcje lub programy w transmisji na żywo są
reprezentowane jako
MediaMetadata
obiektów, które są następnie przechowywane w
queue.
Dla różnych typów programów, takich jak: MediaMetadata
, dostępna jest inna klasa.
TvShowMediaMetadata
,
MovieMediaMetadata
,
MusicTrackMediaMetadata
ip.
W poniższym fragmencie kodu używamy obiektu MediaMetadata
do określenia
godziny rozpoczęcia każdego programu ze znakiem
Sygnatura czasowa UNIX ze znakiem
sectionStartAbsoluteTime
usłudze. Czas trwania programu jest podany w sekundach.
// The metadata for a single TV show
const currentShow = new cast.framework.messages.TvShowMediaMetadata();
currentShow.episode = 15;
currentShow.seriesTitle = 'The Odyssey';
currentShow.title = 'Scylla and Charybdis';
currentShow.sectionStartAbsoluteTime = toUnixTimestamp('9:00 PM');
currentShow.sectionDuration = HOUR_IN_SECONDS;
const previousShow = new ...;
const nextShow = new ...;
const containerMetadata = new cast.framework.messages.ContainerMetadata();
containerMetadata.title = 'My TV Channel';
containerMetadata.sections = [previousShow, currentShow, nextShow];
playerManager.getQueueManager().setContainerMetadata(containerMetadata);
Zakres przewijania na żywo
Pakiet Cast SDK zawiera elementy interfejsu i elementy sterujące, które pozwalają użytkownikowi suwak odtwarzania w strumieniu za pomocą Rozszerzony kontroler lub dotykowe.
LiveSeekableRange
reprezentuje zakres czasu strumienia, w którym użytkownik może wyszukiwać. Dzień
Dostęp do informacji o zakresie możliwego do przewijania można uzyskać za pomocą
PlayerManager.getLiveSeekableRange()
, która zwraca
LiveSeekableRange
obiektu. Główne właściwości obiektu, o którym należy pamiętać, to:
- start – czas rozpoczęcia (w sekundach) zakresu w odniesieniu do na początku transmisji w sekundach.
- end – maksymalny możliwy czas (w sekundach), do którego użytkownik może przewinąć film, na podstawie dostępnych segmentów względem początku transmisji.
- isMovingWindow – wartość logiczna wskazująca, czy zakres możliwy do przewijania ruchy (tzn. starsze segmenty są usuwane z pliku manifestu) wraz ze strumieniem, Powinna mieć wartość true dla wszystkich transmisji na żywo.
- isLiveDone – wartość logiczna wskazująca, czy w transmisji na żywo co oznacza, że nie są generowane żadne nowe segmenty.
Rozmiar zakresu, który można przewijać, wyrażony jako czas od start
do
end
, zależy od liczby segmentów dostępnych w strumieniu i zostanie
wraz ze strumieniem danych. Jeśli na przykład na początku strumienia dostępny jest element do przewijania,
zakres to {start:0, end: 600, isMovingWindow: false, isLiveDone: false}
, dziesięć
sekund po rozpoczęciu transmisji może zmienić się w {start: 10, end: 610,
isMovingWindow: true, isLiveDone: false}
. Koniecznie zapisz
czasy zakończenia w zakresie możliwym do przewijania są aktualizowane na podstawie czasu potrzebnego do
wygenerować nowy segment. Jeśli więc typowa długość segmentu dla transmisji
wynosi 10 sekund, czas rozpoczęcia i zakończenia będą aktualizowane mniej więcej co 10 sekund,
cóż.
Wyłącz przewijanie
Aby wyłączyć przewijanie w strumieniu, musisz usunąć funkcję przewijania z obsługiwanych poleceń multimedialnych na odbiorniku internetowym:
// disable seeking in the LOAD messageInterceptor
playerManager.removeSupportedMediaCommands(cast.framework.messages.Command.SEEK, true);
Usunięcie obsługiwanego polecenia multimedialnego dla sygnałów SEEK
z aplikacji nadawców
i ekranów dotykowych, aby wyłączyć przewijanie, ale nie wyłącza poleceń głosowych, takich jak
„OK Google, przewiń o 30 sekund do tyłu”. Zobacz
obsługiwane polecenia multimedialne głosowe
.
Wydarzenia na żywo
W ramach programu uwzględnione są 2 wydarzenia: LIVE_ENDED
i LIVE_IS_MOVING_WINDOW_CHANGED
za pomocą interfejsu Live API. Oba zdarzenia są przekazywane
LiveStatusEvent
który zawiera bieżący aktywny zakres do przeszukiwania.
Zdarzenie | Opis |
---|---|
LIVE_ENDED |
Wywoływane po zakończeniu transmisji na żywo. W tym momencie wartość end w tabeli LiveSeekableRange przestanie być aktualizowana. Użytkownicy nadal będą mogli oglądać treści w możliwości przewijania na żywo. |
LIVE_IS_MOVING_WINDOW_CHANGED |
Wywoływane, gdy możliwy do przewijania zakres transmisji na żywo zmienia się ze stałego okna na ruchome lub odwrotnie. W przypadku transmisji na żywo stanie się tak, gdy odtwarzacz wykryje, że plik manifestu usuwa wcześniejsze segmenty. |
Scenariusze transmisji na żywo
Istnieje 8 rodzajów scenariuszy transmisji na żywo, z których każdy można skonfigurować przez skonfigurowanie 3 podstawowych ustawień:
- Transmisja ma godzinę rozpoczęcia
- Transmisja ma czas zakończenia
- Użytkownicy mogą wyszukiwać w oknie transmisji na żywo, które można przewijać
Patrz Dodawanie danych z przewodnika po programach, aby dowiedzieć się, jak skonfigurować tych wartości.
Poniżej znajdziesz opisy i zrzuty ekranu przedstawiające scenariusze obsługiwanych przez transmisję na żywo API. Zmienne T1 i T2 służą do reprezentowania sygnatury czasowej na odpowiednio lewą i prawą stronę interfejsu.
Godzina rozpoczęcia | Czas zakończenia | Przewijane | T1 | T2 | |
---|---|---|---|---|---|
Scenariusz 1 | Nie | Nie | Nie | Głowica odtwarzania | Niewyświetlana |
Scenariusz 7 | Tak | Tak | Nie | Pokaż czas rozpoczęcia | Pokaż czas zakończenia |
Scenariusz 8 | Tak | Tak | Tak | Pokaż czas rozpoczęcia | Pokaż czas zakończenia |
Scenariusz pierwszy
Godzina rozpoczęcia | Czas zakończenia | Przewijane | T1 | T2 |
---|---|---|---|---|
Nie | Nie | Nie | Głowa do gry | Niewyświetlana |
Pierwszy scenariusz nie ma godziny rozpoczęcia ani zakończenia, a użytkownicy nie mogą wyszukiwać w okresie . Gdy użytkownik zatrzyma transmisję, odtwarzanie zostanie wznowione od krawędzi transmisji na żywo. miejsca wstrzymania transmisji.
Scenariusz siódmy
Godzina rozpoczęcia | Czas zakończenia | Przewijane | T1 | T2 |
---|---|---|---|---|
Tak | Tak | Nie | Głowica odtwarzania | Czas trwania programu |
Scenariusz 7 ma godzinę rozpoczęcia i zakończenia, ale nie można go wyszukać. Obie sygnatury czasowe w interfejsie, T1 i T2, reprezentują bieżący czas odtwarzania i łączny czas odtwarzania. czas trwania programu. Jeśli użytkownik wstrzyma lub wznowi odtwarzanie, aby wznowić wyświetlanie na brzegu transmisji. W powyższym przykładzie czerwona sekcja parametru pasek przewijania reprezentuje część strumienia od momentu rozpoczęcia odtwarzania oglądania.
Scenariusz ósmy
Godzina rozpoczęcia | Czas zakończenia | Przewijane | T1 | T2 |
---|---|---|---|---|
Tak | Tak | Tak | Głowica odtwarzania | Czas trwania programu |
Scenariusz 7 ma godzinę rozpoczęcia i zakończenia oraz można go przewinąć. 2 sygnatury czasowe w interfejsie, T1 i T2, reprezentują bieżący czas odtwarzania i łączny program czas trwania konwersji. Jeśli użytkownik wstrzyma lub wznowi odtwarzanie, transmisja zostanie wznowiona. w momencie wstrzymania, jeśli znajduje się on w oknie przewijania – obszar zaznaczony na czerwono pasek przewijania wskazuje, do którego miejsca użytkownik może przewinąć, a obszar jest biały. wskazuje, dokąd może się udać.
Konfigurowanie scenariusza
Konfigurowanie strumienia jako konkretnej scenariusza transmisji na żywo składa się z 3 części:
- Ustaw typ transmisji – oznacz strumień jako transmisji na żywo.
- Dodaj dane z przewodnika po programach – ustaw czas rozpoczęcia
i czas trwania w obiekcie
MediaMetadata
. - Skonfiguruj funkcję przewijania – włącz lub wyłączyć przewijanie.
Odtwarzanie
Po wstrzymaniu odtwarzania w interfejsie wciąż będą aktualizowane metadane odtwarzania. uwzględnia czas odtwarzania i czas krawędzi transmisji na żywo. Po wznowieniu transmisji warto wziąć pod uwagę kilka zachowań, które różnią się w zależności od konfiguracji strumienia.
Strumienie do wyszukania
Po wznowieniu odtwarzania z możliwością przewijania:
- Brzeg obrazu zostanie zaktualizowany do bieżącej lokalizacji i zakresu przewijania zostaną odpowiednio dostosowane.
- Jeśli suwak odtwarzania przeskoczy nad bieżący program, pasek przewijania zostanie zaktualizowany. z metadanymi nowego programu (łącznie z godziną rozpoczęcia i zakończenia, jeśli dostępna).
- Jeśli okno z możliwością przewijania ma długość „X”, zakres przewijania zostanie rozszerzony do nie więcej niż „X” lub od początku programu, w zależności od tego, który okres jest mniejszy.
- Jeśli użytkownik był wstrzymany na tyle długo, że bieżąca godzina została przerwana w oknie, które można przewijać, strumień zostanie wznowiony w najwcześniejszym punkcie (najdalej po lewej) okna z możliwością przewijania.
Przewiń do
LiveSeekableRange.end
aby wznowić odtwarzanie na krawędzi po wznowieniu.
let playerManager = cast.framework.CastReceiverContext.getInstance().getPlayerManager();
// Intercept the message to PLAY
playerManager.setMessageInterceptor(cast.framework.messages.MessageType.PLAY, (requestData) => {
...
if (playerManager.getLiveSeekableRange()) {
// Resume playback at the live edge
playerManager.seek(playerManager.getLiveSeekableRange().end);
} else {
return requestData;
}
...
});
Strumienie, których nie można wyszukać
Po wznowieniu transmisji, której nie można wyświetlić:
- W takim przypadku odtwarzanie zostanie wznowione na samym brzegu transmisji na żywo.
- Jeśli krawędź transmisji na żywo przeskakuje poza bieżący program, pasek przewijania powinien być zaktualizowany o metadane nowego programu (w tym godzinę rozpoczęcia i zakończenia). jeśli jest dostępny).
Zmiany powierzchni interfejsu API dostosowywanie interfejsu transmisji na żywo,
Pakiet Cast SDK ma wbudowaną obsługę tworzenia niestandardowych interfejsów użytkownika, a nie za pomocą gotowego interfejsu użytkownika. Ważne jest jednak przestrzeganie z listy kontrolnej projektowania UX przesyłania za pomocą prostego interfejsu online.
Odbiornik internetowy
W odbiorniku internetowym
PlayerData
zawiera następujące pola, aby umożliwić programistom rozszerzenie
interfejsów do transmisji na żywo:
- isLive – flaga wskazująca, czy bieżąca transmisja jest transmisją na żywo, zamiast VOD.
- liveSeekableRange – zakres przewijania wyświetlany na ekranie. w oknie DVR.
- mediaStartAbsoluteTime – moment rozpoczęcia sekcji w czasie bezwzględnym. (Epoka UNIX).
- sectionStartTimeInMedia – czas rozpoczęcia sekcji w sekundach w stosunku do czas rozpoczęcia multimediów.
- sectionDuration – czas trwania sekcji w sekundach.
Weź także pod uwagę 2 wydarzenia na żywo podczas dostosowywania interfejsu użytkownika.
Pakiet SDK do Androida
W ramach funkcji Na żywo korzystanie z widżetu Android Seekbar w
Interfejs UIMediaController
został wycofany. Zamiast niego użyj interfejsu CastSeekBar
.