Ten przewodnik opisuje tworzenie aplikacji klienckiej do wczytywania transmisji na żywo HLS lub DASH za pomocą interfejsu Pod serving API i manipulatora pliku manifestu.
Wymagania wstępne
Zanim przejdziesz dalej, musisz mieć:
niestandardowy klucz pliku w przypadku wydarzenia transmisji na żywo skonfigurowanego z typem dynamicznego wstawiania reklam
Pod serving redirect. Aby uzyskać ten klucz:Skonfiguruj transmisję na żywo na potrzeby dynamicznego wstawiania reklam.
Użyj biblioteki klienta interfejsu SOAP API, aby wywołać metodę
LiveStreamEventService.createLiveStreamEventsz obiektemLiveStreamEventi właściwościądynamicAdInsertionTypeustawioną na wartość wyliczeniaPOD_SERVING_REDIRECT. Wszystkie biblioteki klienta znajdziesz w sekcji Biblioteki klienta i przykładowy kod.
Sprawdź, czy pakiet Interactive Media Ads (IMA) SDK jest dostępny na Twojej platformie. Zalecamy używanie pakietu IMA SDK, aby zwiększyć przychody. Więcej informacji znajdziesz w artykule Konfigurowanie pakietu IMA SDK na potrzeby dynamicznego wstawiania reklam.
Wysyłanie żądania strumienia
Gdy użytkownik wybierze strumień:
Wyślij żądanie
POSTdo metody usługi transmisji na żywo. Więcej informacji znajdziesz w artykule Metoda: stream.Przekaż parametry kierowania reklam w formatach
application/x-www-form-urlencodedlubapplication/json. To żądanie rejestruje sesję strumienia w usłudze Google DAI.Ten przykład wysyła żądanie strumienia:
Kodowanie formularza
const url = `https://dai.google.com/ssai/pods/api/v1/` + `network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/stream`; const params = new URLSearchParams({ cust_params: 'section=sports&page=golf,tennis' }).toString(); const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: params }); console.log(await response.json());Kodowanie JSON
const url = `https://dai.google.com/ssai/pods/api/v1/` + `network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/stream`; const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ cust_params: { section: 'sports', page: 'golf,tennis' } }) }); console.log(await response.json());Jeśli operacja się uda, zobaczysz dane wyjściowe podobne do tych:
{ "stream_id": "8d2b2292-6356-4c0e-94be-cece01d2df2e:DLS", "media_verification_url": "https://dai.google.com/view/.../event/c14aZDWtQg-ZwQaEGl6bYA/media/", "metadata_url": "https://dai.google.com/linear/pods/hls/.../metadata", "session_update_url": "https://dai.google.com/linear/.../session", "polling_frequency": 10 }W odpowiedzi JSON znajdź identyfikator sesji strumienia i zapisz inne dane na potrzeby kolejnych kroków.
Sprawdzanie metadanych reklamy
Aby sprawdzić metadane reklamy:
Odczytaj wartość
metadata_urlz odpowiedzi na rejestrację strumienia.Wyślij żądanie
GETdo punktu końcowego. Więcej informacji znajdziesz w artykule Metoda: metadata.Ten przykład pobiera metadane reklamy:
const response = await fetch(metadata_url); console.log(await response.json());Jeśli operacja się uda, otrzymasz odpowiedź PodMetadata dotyczącą bieżących i nadchodzących przerw na reklamę:
{ "tags":{ "google_5555555555":{ "ad":"0000229834_ad1", "ad_break_id":"0000229834", "type":"firstquartile" }, "google_1234567890123456789":{ "ad":"0000229834_ad1", "ad_break_id":"0000229834", "type":"progress" }, ... }, "ads":{ "0000229834_ad1":{ "ad_break_id":"0000229834", "position":1, "duration":15, "clickthrough_url":"https://.../", ... }, ... }, "ad_breaks":{ "0000229834":{ "type":"mid", "duration":15, "ads":1 }, ... } }Zapisz obiekt
tagsna potrzeby kolejnych kroków.Ustaw timer z wartością
polling_frequency, aby regularnie wysyłać żądania metadanych dla wszystkich kolejnych przerw na reklamę.
Wczytywanie strumienia do odtwarzacza wideo
Gdy uzyskasz identyfikator sesji z odpowiedzi na rejestrację, przekaż go do manipulatora pliku manifestu lub utwórz adres URL pliku manifestu, aby wczytać strumień do odtwarzacza wideo.
Aby przekazać identyfikator sesji, zapoznaj się z dokumentacją manipulatora pliku manifestu. Jeśli tworzysz manipulator pliku manifestu, zapoznaj się z artykułem Manipulator pliku manifestu w przypadku transmisji na żywo.
Ten przykład tworzy adres URL pliku manifestu:
https://<your_manifest_manipulator_url>/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY"
Gdy odtwarzacz będzie gotowy, rozpocznij odtwarzanie.
Nasłuchiwanie zdarzeń reklamowych
Sprawdź format kontenera strumienia pod kątem metadanych z sygnaturą czasową:
Strumienie HLS z kontenerami Transport Stream (TS) używają tagów ID3 z sygnaturą czasową do przenoszenia metadanych z sygnaturą czasową. Więcej informacji znajdziesz w artykule Informacje o formacie Common Media Application Format z transmisją na żywo przez HTTP (HLS).
Strumienie DASH używają elementów
EventStreamdo określania zdarzeń w pliku manifestu.Strumienie DASH używają elementów
InbandEventStream, gdy segmenty zawierają pola Event Message (emsg) z danymi ładunku, w tym tagami ID3. Więcej informacji znajdziesz w artykule InbandEventStream.Strumienie CMAF, w tym DASH i HLS, używają pól
emsgzawierających tagi ID3.
Aby pobrać tagi ID3 ze strumienia, zapoznaj się z przewodnikiem po odtwarzaczu wideo. Więcej informacji znajdziesz w przewodniku Obsługa metadanych z sygnaturą czasową guide.
Aby pobrać identyfikator zdarzenia reklamowego z tagów ID3:
- Filtruj zdarzenia według
scheme_id_uriz wartościąurn:google:dai:2018lubhttps://aomedia.org/emsg/ID3. Wyodrębnij tablicę bajtów z pola
message_data.Ten przykład dekoduje dane
emsgdo formatu JSON:{ "scheme_id_uri": "https://developer.apple.com/streaming/emsg-id3", "presentation_time": 27554, "timescale": 1000, "message_data": "ID3TXXXgoogle_1234567890123456789", ... }Filtruj tagi ID3 według formatu
TXXXgoogle_{ad_event_ID}:TXXXgoogle_1234567890123456789
Wyświetlanie danych zdarzenia reklamowego
Aby znaleźć obiekt
TagSegment:
Pobierz obiekt metadanych reklamy
tagsz sekcji Sprawdzanie metadanych reklamy. Obiekttagsto tablica obiektówTagSegment.Użyj pełnego identyfikatora zdarzenia reklamowego, aby znaleźć obiekt
TagSegmenttypuprogress.Użyj pierwszych 17 znaków identyfikatora zdarzenia reklamowego, aby znaleźć obiekt
TagSegmentinnych typów.Gdy masz już obiekt
TagSegment, użyj właściwościad_break_idjako klucza aby znaleźćAdBreakobiekt w obiekciead_breaksmetadanych reklamy.Ten przykład znajduje obiekt
AdBreak:{ "type":"mid", "duration":15, "ads":1 }Użyj danych
TagSegmentiAdBreak, aby wyświetlić informacje o pozycji reklamy w przerwie na reklamę. Na przykładAd 1 of 3.
Wysyłanie pingów weryfikacji multimediów
W przypadku każdego zdarzenia reklamowego, z wyjątkiem typu progress, wyślij ping weryfikacji multimediów.
Usługa Google DAI odrzuca zdarzenia progress, a częste wysyłanie tych zdarzeń może mieć wpływ na wydajność aplikacji.
Aby wygenerować pełny URL do weryfikacji multimediów zdarzenia reklamowego:
Z odpowiedzi strumienia dołącz pełny identyfikator zdarzenia reklamowego do wartości
media_verification_url.Wyślij żądanie
GETz pełnym adresem URL:// media_verification_url: "https://dai.google.com/view/.../event/c14aZDWtQg-ZwQaEGl6bYA/media/" const completeUrl = `${media_verification_url}google_5555555555123456789`; const response = await fetch(completeUrl);Jeśli operacja się uda, otrzymasz odpowiedź ze stanem kodu
202. W przeciwnym razie otrzymasz kod błędu404.
Możesz użyć narzędzia do monitorowania aktywności w transmisji na żywo (SAM), aby sprawdzić historyczny dziennik wszystkich zdarzeń reklamowych. Więcej informacji znajdziesz w artykule Monitorowanie transmisji na żywo i rozwiązywanie związanych z nią problemów .