2013-09-16 15 views
8

Tworzę czat wideo dla wielu użytkowników za pomocą webRTC. Ale napotkałem problem z usługą RTCPeerConnectionWebRTC okazjonalnie daje czarny ekran

W niektórych przypadkach prowadzę rozmowy z 7 użytkownikami, gdzie wszyscy widzą filmy innych osób , ale czasami dostaję czarny ekran od użytkownika.

Dziwne jest to, że jest całkowicie losowy, czasami wszystko działa. czasami użytkownik ma czarny ekran. gdyby ten użytkownik logował się ponownie, inne ekrany byłyby czarne lub wszystko by działało.

Sprawdziłem mój przepływ jak działa peerconnection i oto jak to działa dla mnie:

Użytkownik, który uruchamia peerconnection:

  • Kenneth: Peerconnection utworzone main.js: 275
  • Kenneth: detektor zdalnych strumienia dodaje main.js: 280
  • Kenneth: zdalny słuchacz strumień usuwa dodane main.js: 285
  • Kenneth: miejscowy strumień dodaje się do peerc onnection main.js: 264
  • Kenneth: Oferta stworzona main.js: 293
  • Kenneth: Oferta Wysłane main.js: 315
  • Kenneth: Odpowiedź otrzymane main.js: 205
  • Kenneth: Listener dodawane do wysłać lokalnych ICE kandydatów main.js: 210
  • Kenneth: Pilot Opis zestawu z main.js odpowiedź: 215
  • Kenneth: Remote strumień dodany main.js: 366
  • Kenneth: Remote ICE otrzymały main.js: 218
  • Kenneth remote ICE dodano do Peerconnection main.js: 225
  • Kenneth remote ICE otrzymane main.js: 218
  • Kenneth ICE: zdalne dodaje się do main.js Peerconnection: 225
  • Kenneth ice kandydat wysyłane główne. JS: 340
  • Kenneth: ICE kandydujące wysłane main.js: 340
  • Kenneth: ICE kandydujące wysłane main.js: 340
  • Kenneth: ICE kandydujące wysłane main.js: 340
  • Kenneth: pilot zdalnego ICE otrzymały main.js: 218
  • Kenneth remote ICE dodano do Peerconnection main.js: 225
  • Kenneth remote ICE otrzymane main.js: 218
  • Kenneth ICE: zdalne dodaje się do main.js Peerconnection: 225
  • Kenneth: ICE wysłane głównym kandydatem .js: 340
  • kenneth: kandydat ICE wysłał plik main.js: 340
  • kenneth: Koniec strony głównej kandydatów.JS: 342

Użytkownik, który otrzymuje ofertę, a następnie tworzy odpowiedź:

  • kennethtest1: oferta otrzymała main.js: 183
  • kennethtest1: Peerconnection stworzony main.js: 275
  • kennethtest1: detektor strumienia zdalnego dodano main.js: 280
  • kennethtest1: usunięto strumień zdalnego nasłuchiwania dodany main.js: 285
  • kennethtest1: Listener adde d, aby wysłać lokalnych ICE kandydatów main.js: 189
  • kennethtest1: Pilot Opis ustawić od ofertowych main.js: 194
  • kennethtest1: strumień lokalne dodane do peerconnection main.js: 198
  • kennethtest1: Odpowiedź stworzył główny. JS: 301
  • kennethtest1: Zdalne strumienia dodaje main.js: 366
  • kennethtest1: Odpowiedź wysłane main.js: 324
  • kennethtest1: ICE kandydujących wysyłane main.js: 340
  • kennethtest1: ICE wysyłane głównym kandydatem .js: 340
  • kennethtest1: ICE kandydat wysyłane main.js: 340
  • kennethtest1: ICE kandydujących wysłane main.js: 340
  • kennethtest1 remote ICE otrzymane main.js: 218
  • kennethtest1 remote ICE dodano do Peerconnection główne. JS: 225
  • kennethtest1: oddalone ICE otrzymane main.js: 218
  • kennethtest1 remote ICE dodawane do main.js Peerconnection: 225
  • kennethtest1: oddalone ICE otrzymane main.js: 218
  • kennethte ST1 remote ICE dodano do Peerconnection main.js: 225
  • kennethtest1 remote ICE otrzymane main.js: 218
  • kennethtest1 ICE: zdalne dodaje się do main.js Peerconnection: 225
  • kennethtest1: koniec głównych kandydatów. js: 342
  • kennethtest1: oddalone ICE otrzymane main.js: 218
  • kennethtest1: oddalone ICE dodawane do main.js Peerconnection: 225
  • kennethtest1: oddalone ICE recieved main.js: 218
  • kennethtest1: oddalone ICE dodano do Peerconnection main.js : 225

Mam również wyrejestrowany chrome: // WebRTC-wewnętrzne/ gdzie widzę, że dla tej konkretnej czarny ekran peerconnection strumienia jest tam ale nie wysyła żadnych danych koryta go.

Ktoś ma pomysł, dlaczego czasami strumień się tutaj nie otwiera?

Odpowiedz

1

Naprawiono to przez dodanie wielu serwerów STUN zamiast polegania na jednym. Zauważyłem, że przy korzystaniu z jednego serwera google STUN sporadycznie żądania nie zwracają się w czasie, co sprawia, że ​​webrtc przestaje wyszukiwać ścieżkę do przesyłania strumieni multimediów.

Dodałem serwerów STUN od innych dostawców open source

+0

Dla porównania cudzej: Czarne zdalne ekrany są głównie serwer lód (lub wymiana kandydat) problemy, dodając wiele serwerów rozwiązał problem dla ciebie, ale nie jest to ogólny sposób pozbyć się czarnych widoków na odległość! Pewne dochodzenie pokazuje mi, że może to mieć również znaczenie, jeśli kandydaci na lód są transmitowani, zanim odpowiedź zostanie przesłana ... – WiRa

Powiązane problemy