2016-01-25 22 views
5

W tej chwili staram się dowiedzieć, co robię źle, gdy przechodzę transmisję YT na żywo.Nie mogę dokonać przejścia z transmisji na Youtube na żywo przy użyciu interfejsu API YouTube

Więc robię wniosek i uzyskać następujące odpowiedzi:

{ 
    "code" : 403, 
    "errors" : [ { 
    "domain" : "youtube.liveBroadcast", 
    "message" : "Invalid transition", 
    "reason" : "invalidTransition", 
    "extendedHelp" : "https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/transition#params" 
    } ], 
    "message" : "Invalid transition" 
} 

Oczywiście czytałem docs wiele razy, więc mam monitorował żywo i czekał na jego „aktywnego” stanu (i mój Broadcast ma lifeCycleStatus = "ready").

Komunikat o błędzie nie wyjaśnia prawdziwego powodu, dla którego nie mogę wykonać przejścia.
I ... oczywiście nie mam dostępu do dzienników serwerów Youtube :)

Co możesz zasugerować?
Jak dowiedzieć się, gdzie się myliłem?

Więc nawet jeśli coś przeoczyłem, dokumenty i komunikat o błędzie nie pomagają mi zrozumieć niczego. Tak w każdym razie jest to rodzaj „bug” na YT Streaming API ...

+0

Czy możesz przesłać żądanie, które powtarzasz, próbując przenieść transmisję na żywo? Może jeden z twoich parametrów jest zły. – JAL

+0

Niestety użyłem ton. Jarów z google, więc wszystkie żądania HTTP zostały wykonane przez .jars, więc ukryty przede mną. Prawdopodobnie istnieje opcja włączenia trybu verbose lub coś podobnego ... Tak czy inaczej znalazłem rozwiązanie, więc opublikujemy to tutaj. – rshmelev

Odpowiedz

10

więc nieco niejasne zasada:

  1. upewnić się, że nadawanie i żywo tworzony i gotowe.
    i upewnić się, że stan transmisji cyklu życia nie jest COMPLETE, inaczej odtworzenie przekazu ... więc upewnić się, że stan cyklu audycji jest ready
  2. wiążą transmisji do transmitować
  3. zacząć wydawać film na żywo
  4. czekać dla statusu transmisji na żywo: active
  5. przejście na testing (tak, musisz to zrobić zamiast przenieść się do live)
  6. czekać do transmisji lifeCycleStatus stać testing
  7. Przejście do live
  8. czekać do transmisji lifeCycleStatus stać live

Nie można pominąć testing i nie może przechodzić od complete do testing lub ready.

+1

Nie jestem pewien, czy tak jest. Dokumenty wydają się wskazywać inaczej: https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.monitorStream.enableMonitorStream –

1

Spotykam to samo pytanie, w końcu znalazłem problem. Po przejściu transkrypcji do testowania, lifeCycleStatus: liveStarting, musimy poczekać, aż program LifeCycleStatus przejdzie testy. Powinniśmy uzyskać status transmisji. tutaj jest mój kod:

liveStreamRequest = youtube.liveStreams() 
        .list("id,status") 
        .setId(liveBroadcast.getContentDetails() 
          .getBoundStreamId()); 
      LiveStreamListResponse returnedList = liveStreamRequest.execute(); 
      List<LiveStream> liveStreams = returnedList.getItems(); 
      if (liveStreams != null && liveStreams.size() > 0) { 
       LiveStream liveStream = liveStreams.get(0); 
       if (liveStream != null) 
        while (!liveStream.getStatus().getStreamStatus() 
          .equals("active")) { 
         Thread.sleep(1000); 
         returnedList = liveStreamRequest.execute(); 
         liveStreams = returnedList.getItems(); 
         liveStream = liveStreams.get(0); 
        } 
      } 

nadzieję, że pomoże ktoś obchodzi ten problem!

0

Możesz opuścić 4-7 kroków, jeśli: strumień monitora emisji został wyłączony przez ustawienie contentDetails.monitorStream.enableMonitorStream właściwość do false podczas tworzenia lub aktualizacji tej transmisji.