LiveBroadcasts

Interfejs API umożliwia teraz oznaczanie Twoich transmisji na żywo jako „przeznaczonych dla dzieci”, a zasób liveBroadcast zawiera teraz właściwość określającą, czy transmisja na żywo jest „przeznaczona dla dzieci”. 10 stycznia 2020 r. zaktualizowaliśmy również Warunki korzystania z usług YouTube API oraz zasady dla deweloperów. Aby uzyskać więcej informacji, zapoznaj się z historiami zmian dla usługi YouTube Live Streaming API oraz warunkami korzystania z usług interfejsu YouTube API.

Zasób liveBroadcast reprezentuje wydarzenie, które będzie transmitowane strumieniowo w YouTube w formie transmisji na żywo.

Metody

Interfejs API obsługuje te metody w przypadku zasobów liveBroadcasts:

list
Zwraca listę transmisji z YouTube, które pasują do parametrów żądania do interfejsu API. Wypróbuj teraz
wstaw
Tworzy transmisję. Wypróbuj teraz
aktualizacja
Aktualizuje transmisję. Można na przykład zmodyfikować ustawienia emisji zdefiniowane w obiekcie contentDetails zasobu liveBroadcast. Wypróbuj teraz
usuń
Usuwa transmisję. Wypróbuj teraz
powiązanie
Wiąże transmisję YouTube ze strumieniem lub usuwa istniejące powiązanie między transmisją a transmisją. Transmisję można powiązać tylko z jednym strumieniem wideo, natomiast strumień wideo można powiązać z więcej niż jedną transmisją. Wypróbuj teraz
przejście
Zmienia stan transmisji na żywo w YouTube i inicjuje wszystkie procesy związane z nowym stanem. Jeśli na przykład zmienisz stan transmisji na testing, YouTube zacznie przesyłać wideo do strumienia monitorowania tej transmisji. Zanim wywołasz tę metodę, upewnij się, że wartość właściwości status.streamStatus strumienia powiązanego z transmisją wynosi active. Wypróbuj teraz
punkt wstawienia reklamy
Wstawia punkt wstawienia w transmisji na żywo. Punkt wstawienia reklamy może wywołać przerwę na reklamę.

Reprezentacja zasobu

Poniższa struktura JSON pokazuje format zasobu liveBroadcasts:

{
  "kind": "youtube#liveBroadcast",
  "etag": etag,
  "id": string,
  "snippet": {
    "publishedAt": datetime,
    "channelId": string,
    "title": string,
    "description": string,
    "thumbnails": {
      (key): {
        "url": string,
        "width": unsigned integer,
        "height": unsigned integer
      }
    },
    "scheduledStartTime": datetime,
    "scheduledEndTime": datetime,
    "actualStartTime": datetime,
    "actualEndTime": datetime,
    "isDefaultBroadcast": boolean,
    "liveChatId": string
  },
  "status": {
    "lifeCycleStatus": string,
    "privacyStatus": string,
    "recordingStatus": string,
    "madeForKids": string,
    "selfDeclaredMadeForKids": string,
  },
  "contentDetails": {
    "boundStreamId": string,
    "boundStreamLastUpdateTimeMs": datetime,
    "monitorStream": {
      "enableMonitorStream": boolean,
      "broadcastStreamDelayMs": unsigned integer,
      "embedHtml": string
    },
    "enableEmbed": boolean,
    "enableDvr": boolean,
    "recordFromStart": boolean,
    "enableClosedCaptions": boolean,
    "closedCaptionsType": string,
    "projection": string,
    "enableLowLatency": boolean,
    "latencyPreference": boolean,
    "enableAutoStart": boolean,
    "enableAutoStop": boolean
  },
  "statistics": {
    "totalChatCount": unsigned long
  },
  "monetizationDetails": {
    "cuepointSchedule": {
      "enabled": boolean,
      "pauseAdsUntil": datetime,
      "scheduleStrategy": string,
      "repeatIntervalSecs": unsigned integer,
    }
  }
}

Właściwości

Poniższa tabela definiuje właściwości, które pojawiają się w tym zasobie:

Właściwości
kind string
Określa typ zasobu API. Wartością będzie youtube#liveBroadcast.
etag etag
Tag ETag tego zasobu.
id string
Identyfikator przypisywany w YouTube do jednoznacznej identyfikacji transmisji.
snippet object
Obiekt snippet zawiera podstawowe informacje o zdarzeniu, w tym jego tytuł, opis oraz czas rozpoczęcia i zakończenia.
snippet.publishedAt datetime
Data i godzina dodania transmisji do harmonogramu transmisji na żywo w YouTube. Wartość musi być podana w formacie ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ).
snippet.channelId string
Identyfikator, którego YouTube używa do jednoznacznej identyfikacji kanału, który publikuje transmisję.
snippet.title string
Tytuł transmisji. Pamiętaj, że transmisja dotyczy dokładnie 1 filmu w YouTube. Aby ustawić to pole, możesz zmodyfikować zasób transmisji lub ustawić pole title odpowiedniego zasobu wideo.
snippet.description string
Opis transmisji. Tak jak w przypadku title, możesz ustawić to pole, modyfikując zasób transmisji lub ustawiając pole description odpowiedniego zasobu wideo.
snippet.thumbnails object
Mapa miniaturek obrazów związanych z transmisją. W przypadku każdego zagnieżdżonego obiektu w obiekcie kluczem jest nazwa obrazu miniatury, a wartością jest obiekt zawierający inne informacje na temat miniatury.
snippet.thumbnails.(key) object
Prawidłowe pary klucz-wartość to:
  • default – domyślny obraz miniatury. Domyślna miniatura filmu – lub zasób, który odnosi się do filmu, np. element playlisty lub wynik wyszukiwania – ma 120 pikseli szerokości i 90 pikseli wysokości. Domyślna miniatura kanału ma 88 pikseli szerokości i 88 pikseli wysokości.
  • medium – wersja miniatury o wyższej rozdzielczości. W przypadku filmu (lub zasobu, który odnosi się do filmu) obraz ma szerokość 320 pikseli i wysokość 180 pikseli. W przypadku kanału obraz ma szerokość 240 pikseli i wysokość 240 pikseli.
  • high – wersja miniatury w wysokiej rozdzielczości. W przypadku filmu (lub zasobu, który odnosi się do filmu) obraz ma szerokość 480 pikseli i wysokość 360 pikseli. W przypadku kanału obraz ma szerokość 800 pikseli i wysokość 800 pikseli.
snippet.thumbnails.(key).url string
Adres URL obrazu.
snippet.thumbnails.(key).width unsigned integer
Szerokość obrazu.
snippet.thumbnails.(key).height unsigned integer
Wysokość obrazu.
snippet.scheduledStartTime datetime
Data i godzina rozpoczęcia transmisji. Wartość musi być podana w formacie ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ). Studio twórców pozwala utworzyć transmisję bez planowania godziny rozpoczęcia. W tym przypadku transmisja rozpocznie się za każdym razem, gdy właściciel kanału rozpocznie transmisję. W przypadku tych transmisji wartość datetime odpowiada zero w systemie UNIX i nie można jej zmienić za pomocą interfejsu API ani w Studiu twórców.
snippet.scheduledEndTime datetime
Data i godzina zaplanowanego zakończenia transmisji. Wartość musi być podana w formacie ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ). Jeśli zasób liveBroadcast nie określa wartości dla tej właściwości, transmisja będzie trwać bezterminowo. Podobnie jeśli nie określisz wartości dla tej właściwości, YouTube będzie traktować transmisję jako ciągłą bezterminową.
snippet.actualStartTime datetime
Data i godzina rozpoczęcia transmisji. Ta informacja jest dostępna tylko wtedy, gdy stan transmisji to live. Wartość musi być podana w formacie ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ).
snippet.actualEndTime datetime
Data i godzina rzeczywistego zakończenia transmisji. Ta informacja jest dostępna tylko wtedy, gdy stan transmisji to complete. Wartość musi być podana w formacie ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ).
snippet.isDefaultBroadcast boolean
Ta usługa zostanie wycofana 1 września 2020 r. lub później. Wtedy YouTube przestanie tworzyć domyślny strumień i transmisję, gdy na kanale zostanie włączona możliwość transmitowania na żywo. Więcej informacji znajdziesz w ogłoszeniu o wycofaniu.
Ta właściwość wskazuje, czy jest to transmisja domyślna.

Jak działają transmisje domyślne

Gdy na kanale w YouTube są włączone transmisje na żywo, YouTube tworzy dla niego strumień domyślny i transmisję domyślną. Transmisja określa, w jaki sposób właściciel kanału wysyła obraz na żywo do YouTube, a transmisja określa, jak widzowie mogą zobaczyć strumień domyślny. Właściciel kanału może zidentyfikować te zasoby za pomocą metod liveStreams.list i liveBroadcasts.list.

Gdy kanał rozpocznie strumieniowe przesyłanie wideo do swojego strumienia domyślnego, film stanie się widoczny w domyślnej transmisji kanału. Po zakończeniu transmisji YouTube zmieni zakończoną transmisję w film w YouTube i przypisuje mu identyfikator filmu w YouTube.

Po zakończeniu konwersji film pojawi się na liście przesłanych filmów na kanale. Film nie jest dostępny od razu po zakończeniu transmisji, a długość opóźnienia jest powiązana z rzeczywistą długością transmisji.
snippet.liveChatId string
Identyfikator czatu na żywo w YouTube związanego z transmisją. Dzięki temu możesz używać metod zasobu liveChatMessage do pobierania, wstawiania i usuwania wiadomości czatu. Możesz też dodawać i usuwać moderatorów czatu, blokować użytkownikom możliwość udziału w czatach na żywo lub usuwać istniejące blokady.
status object
Obiekt status zawiera informacje o stanie zdarzenia.
status.lifeCycleStatus string
Stan transmisji. Stan możesz zaktualizować za pomocą metody liveBroadcasts.transition w interfejsie API.

Prawidłowe wartości tej właściwości to:
  • complete – transmisja została zakończona.
  • created – transmisja ma niepełne ustawienia, więc nie jest gotowa do przekształcenia w stan live lub testing, ale została utworzona i jest prawidłowa.
  • live – transmisja jest aktywna.
  • liveStarting – transmisja jest zmieniana na live.
  • ready – ustawienia transmisji są skonfigurowane i można zmienić stan transmisji na live lub testing.
  • revoked – transmisja została usunięta przez administratora.
  • testStarting – transmisja jest zmieniana na testing.
  • testing – transmisja jest widoczna tylko dla partnera.
status.privacyStatus string
Stan prywatności transmisji. Pamiętaj, że transmisja dotyczy dokładnie jednego filmu w YouTube, więc ustawienia prywatności są takie same jak w przypadku filmów. Poza tym możesz ustawić to pole, modyfikując zasób transmisji lub ustawiając pole privacyStatus dla odpowiedniego zasobu wideo.

Prawidłowe wartości tej właściwości to:
  • private
  • public
  • unlisted
status.recordingStatus string
Stan nagrywania transmisji.

Prawidłowe wartości tej właściwości to:
  • notRecording
  • recorded
  • recording
status.madeForKids boolean
Ta wartość wskazuje, czy transmisja jest oznaczona jako skierowana do dzieci. Ta wartość właściwości jest tylko do odczytu.
status.selfDeclaredMadeForKids boolean
W żądaniu liveBroadcasts.insert ta właściwość pozwala właścicielowi kanału oznaczyć transmisję jako skierowaną do dzieci. W żądaniu liveBroadcasts.list wartość właściwości jest zwracana tylko wtedy, gdy właściciel kanału autoryzował żądanie do interfejsu API.
contentDetails object
Obiekt contentDetails zawiera informacje o treści wideo zdarzenia, np. o tym, czy może ona być wyświetlana w umieszczonym odtwarzaczu wideo lub czy zostanie zarchiwizowana i z tego powodu będzie dostępna do oglądania po zakończeniu zdarzenia.
contentDetails.boundStreamId string
Ta wartość jednoznacznie identyfikuje obiekty live stream powiązane z transmisją.
contentDetails.boundStreamLastUpdateTimeMs datetime
Data i godzina ostatniej aktualizacji transmisji na żywo, do której odwołuje się boundStreamId.
contentDetails.monitorStream object
Obiekt monitorStream zawiera informacje o strumieniu monitorowania, dzięki którym nadawca może sprawdzić treść wydarzenia, zanim zostanie on wyświetlony publicznie.
contentDetails.monitorStream.enableMonitorStream boolean
Ta wartość określa, czy strumień monitorowania jest włączony dla transmisji. Jeśli strumień monitorowania jest włączony, YouTube będzie transmitować wydarzenie za pomocą specjalnego strumienia przeznaczonego wyłącznie dla nadawcy. Nadawca może wykorzystać strumień do sprawdzenia treści wydarzenia oraz określenia optymalnego czasu na wstawienie punktów wstawienia.

Jeśli chcesz, aby transmisja miała miejsce testing lub opóźnienie transmisji wydarzenia, ustaw tę wartość na true. Dodatkowo, jeśli wartość tej właściwości to true, przed zmianą stanu na live musisz przejść do stanu testing. Jeśli wartość właściwości to false, transmisja nie może mieć etapu testing, więc możesz bezpośrednio przejść do stanu live.

Jeśli używasz metody update a broadcast, ta właściwość musi być ustawiona, jeśli żądanie do interfejsu API zawiera część contentDetails w wartości parametru part. Jeśli jednak wybierzesz insert a broadcast, właściwość jest opcjonalna i ma wartość domyślną true.

Ważne: tej właściwości nie można zaktualizować, gdy transmisja ma stan testing lub live.
contentDetails.monitorStream.broadcastStreamDelayMs unsigned integer
Jeśli we właściwości enableMonitorStream masz ustawioną wartość true, ta właściwość określa długość opóźnienia transmisji na żywo.

Jeśli używasz metody update a broadcast, ta właściwość musi być ustawiona, jeśli żądanie do interfejsu API zawiera część contentDetails w wartości parametru part. Jeśli jednak wybierzesz insert a broadcast, właściwość jest opcjonalna i ma wartość domyślną 0. Ta wartość oznacza, że w transmisji nie ma opóźnienia. Uwaga: tej właściwości nie można zaktualizować, gdy transmisja ma stan testing lub live.
contentDetails.monitorStream.embedHtml string
Kod HTML, który pozwala na umieszczenie odtwarzacza, który odtwarza strumień danych z monitora.
contentDetails.enableEmbed boolean
To ustawienie wskazuje, czy transmisja wideo może być odtwarzana w odtwarzaczu umieszczonym na stronie. Jeśli zdecydujesz się zarchiwizować film (za pomocą właściwości enableArchive), to ustawienie zostanie też zastosowane do zarchiwizowanego filmu.

Jeśli używasz metody update a broadcast, ta właściwość musi być ustawiona, jeśli żądanie do interfejsu API zawiera część contentDetails w wartości parametru part. Jeśli jednak wybierzesz insert a broadcast, właściwość jest opcjonalna i ma wartość domyślną true.

Uwaga: tej właściwości nie można aktualizować, gdy transmisja ma stan testing lub live.
contentDetails.enableDvr boolean
To ustawienie określa, czy podczas oglądania filmu widzowie mają dostęp do elementów sterujących DVR. Elementy sterujące DVR pozwalają użytkownikowi sterować odtwarzaniem filmu przez wstrzymywanie, przewijanie do tyłu lub do przodu. Wartość domyślna tej właściwości to true.

Jeśli używasz metody update a broadcast, ta właściwość musi być ustawiona, jeśli żądanie do interfejsu API zawiera część contentDetails w wartości parametru part. Jeśli jednak wybierzesz insert a broadcast, właściwość jest opcjonalna i ma wartość domyślną true.

Ważne: jeśli chcesz umożliwić odtwarzanie od razu po zakończeniu transmisji, musisz ustawić wartość true oraz wartość właściwości enableArchive na true. Poza tym tej właściwości nie można zaktualizować, gdy transmisja ma stan testing lub live.
contentDetails.recordFromStart boolean
To ustawienie określa, czy YouTube automatycznie rozpocznie nagrywanie transmisji, gdy status wydarzenia zmieni się na „na żywo”.

Wartość domyślna tej właściwości to true. Można ją ustawić na wartość false tylko wtedy, gdy kanał telewizyjny może wyłączyć nagrywanie transmisji na żywo.

Jeśli Twój kanał nie ma uprawnień do wyłączania nagrań, a Ty spróbujesz wstawić transmisję z właściwością recordFromStart ustawioną na false, interfejs API zwróci błąd Forbidden. Dodatkowo, jeśli Twój kanał nie ma tego uprawnienia i spróbujesz zaktualizować transmisję, aby ustawić właściwość recordFromStart na false, interfejs API zwróci błąd modificationNotAllowed.

Jeśli używasz metody update a broadcast, ta właściwość musi być ustawiona, jeśli żądanie do interfejsu API zawiera część contentDetails w wartości parametru part. Jeśli jednak wybierzesz insert a broadcast, właściwość jest opcjonalna i ma wartość domyślną true.

Ważne: jeśli chcesz, aby odtwarzanie było dostępne od razu po zakończeniu transmisji, musisz też ustawić wartość właściwości enableDvr na true. Jeśli ustawisz wartość tej właściwości na true, ale nie ustawisz właściwości enableDvr na true, zarchiwizowany film może być dostępny do odtworzenia z około jednodniowym opóźnieniem.

Uwaga: tej właściwości nie można aktualizować, gdy transmisja ma stan testing lub live.
contentDetails.enableClosedCaptions boolean
Ta usługa została wycofana 17 grudnia 2015 r. Zamiast niej użyj właściwości contentDetails.closedCaptionsType.

To ustawienie wskazuje, czy napisy HTTP POST są włączone dla tej transmisji. W przypadku klientów interfejsu API, którzy korzystają już z tej właściwości:
  • Ustawienie wartości właściwości true jest równoważne ustawieniu właściwości contentDetails.closedCaptionsType na closedCaptionsHttpPost.
  • Ustawienie wartości właściwości false jest równoważne ustawieniu właściwości contentDetails.closedCaptionsType na closedCaptionsDisabled.
contentDetails.closedCaptionsType string
Uwaga: ta właściwość zastępuje właściwość contentDetails.enableClosedCaptions.

Ta właściwość wskazuje, czy w transmisji są włączone napisy, a jeśli tak, to jaki typ napisów:
  • closedCaptionsDisabled: napisy są wyłączone w transmisji na żywo.
  • closedCaptionsHttpPost: napisy wyślesz za pomocą metody HTTP POST na adres URL przetwarzania powiązany z Twoją transmisją na żywo.
  • closedCaptionsEmbedded: napisy będą kodowane w strumieniu wideo w formacie EIA-608 lub CEA-708.
contentDetails.projection string
Format projekcji tej transmisji. Domyślna wartość właściwości to rectangular.

Prawidłowe wartości tej właściwości to:
  • 360
  • rectangular
contentDetails.enableLowLatency boolean
Wskazuje, czy transmisja powinna być kodowana na potrzeby przesyłania strumieniowego z małym opóźnieniem. Strumień o małych opóźnieniach może skrócić czas potrzebny na pokazanie filmu widzom oglądającym transmisję, ale może też wpływać na rozdzielczość strumienia u widzów.
contentDetails.latencyPreference string
Wskazuje ustawienie opóźnienia transmisji, które ma być użyte. Możesz użyć tej właściwości zamiast właściwości enableLowLatency, która nie obsługuje parametru enableLowLatency.

Strumień o małym czasie oczekiwania może skrócić czas potrzebny na pokazanie filmu widzom oglądającym transmisję, ale może też wpłynąć na płynność odtwarzania.

Strumień o bardzo małym czasie oczekiwania dodatkowo skraca czas potrzebny na pokazanie filmu widzom, przez co w przypadku tych napisów jest łatwiejszy do interakcji z widzami –
    prawidłowe lub bardzo małe
    ultraLow
  • normal
  • low
  • ultraLow
contentDetails.enableAutoStart boolean
Wskazuje, czy ta transmisja ma się rozpocząć automatycznie, gdy rozpoczniesz strumieniowanie wideo na granicy: live stream.
contentDetails.enableAutoStop boolean
Wskazuje, czy transmisja powinna zostać automatycznie zatrzymana około minuty po tym, jak właściciel kanału przestanie odtwarzać transmisję wideo w powiązanym strumieniu wideo.
statistics object
Obiekt statistics zawiera statystyki związane z transmisją na żywo. Wartości tych statystyk mogą się zmieniać w trakcie transmisji i można je pobrać tylko w trakcie transmisji.
statistics.totalChatCount unsigned long
Łączna liczba wiadomości na czacie na żywo związanych z transmisją. Właściwość i jej wartość są obecne, jeśli transmisja jest widoczna dla użytkownika, ma włączoną funkcję czatu na żywo i zawiera co najmniej 1 wiadomość. Pamiętaj, że ta właściwość nie określa wartości po zakończeniu transmisji. Ta właściwość nie będzie więc określać liczby wiadomości na czacie w przypadku zarchiwizowanego nagrania wideo zakończonej transmisji na żywo.
monetizationDetails object
Obiekt monetizationDetails zawiera informacje o szczegółach zarabiania ze strumienia, na przykład o tym, czy jest włączony automatyzator reklam lub czy wstawienie reklam w trakcie filmu jest opóźnione.

monetizationDetails.cuepointSchedule object
Obiekt cuepointSchedule określa ustawienia automatyzacji reklam na potrzeby transmisji.
monetizationDetails.cuepointSchedule.enabled boolean
Ta wartość określa, czy reklamy są automatycznie wstawiane w transmisji. Jeśli wartością jest true, YouTube automatycznie wstawi reklamy w trakcie transmisji do transmisji. Harmonogram wyświetlania reklam zostanie ustalony na podstawie wartości innych pól w obiekcie monetizationDetails.cuepointSchedule.
monetizationDetails.cuepointSchedule.pauseAdsUntil datetime
Ta wartość określa, że YouTube nie może wstawiać reklam w trakcie transmisji do podanej daty i godziny. Wartość jest podana w formacie ISO 8601 (RRRR-MM-DDTgg:mm:ss.sZ). Aby wstrzymać reklamy, wartość musi być ustawiona na przyszłą datę i godzinę. Wartość pola można też ustawić na datę i godzinę w bliskiej przyszłości, aby wznowić wyświetlanie reklam po upływie określonego czasu.
monetizationDetails.cuepointSchedule.scheduleStrategy string
Ta wartość określa strategię YouTube przy planowaniu punktów wstawienia reklamy. Prawidłowe wartości to:
  • CONCURRENT: punkty wstawienia reklamy są zaplanowane dla wszystkich widzów w tym samym czasie
  • NON_CONCURRENT: punkty wstawienia reklamy są zaplanowane o różnych porach dla różnych widzów. Takie podejście umożliwia częstsze wyświetlanie reklam, co pozwala widzom otrzymywać punkty wstawienia reklamy w odpowiednich sytuacjach.
monetizationDetails.cuepointSchedule.repeatIntervalSecs unsigned integer
Ta wartość określa odstęp czasu (w sekundach) pomiędzy automatycznym wstawieniem reklamy w trakcie transmisji. Jeśli np. wartość to 300, YouTube może wstawiać punkty wstawienia reklam w trakcie filmu w 5-minutowych odstępach.

Pamiętaj, że ta wartość określa czas między początkami kolejnych punktów wstawienia reklamy. Oznacza to, że odstęp nie jest mierzony od końca jednego punktu wstawienia do początku kolejnego.