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
zasobuliveBroadcast
. 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ścistatus.streamStatus
strumienia powiązanego z transmisją wynosiactive
. 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:
|
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:
|
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:
|
status.recordingStatus |
string Stan nagrywania transmisji. Prawidłowe wartości tej właściwości to:
|
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:
|
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:
|
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:
|
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 –
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:
|
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. |