Self-hosting odbiornika SRTLA

LOLS IRL mówi standardowym srtla zgodnym z BELABOX, więc twój własny odbiornik zachowuje się dokładnie tak jak nasze hostowane relaye. Oto co uruchomić, które porty mają znaczenie i ten jeden błąd, przez który połączenie komórkowe nigdy nie dociera do twojego pudła.

Nie musisz niczego hostować: darmowe relaye LOLS Cloud są po to, żeby bonding działał od razu, albo możesz postawić własny odbiornik i nie zależeć od nikogo. Powody bywają dobre: chcesz, żeby stream lądował na infrastrukturze, którą kontrolujesz, chcesz maszynę fizycznie blisko siebie, tam gdzie nie mamy relaya, nie chcesz myśleć o limicie albo po prostu wolisz uruchamiać własne rzeczy. Nic w aplikacji nie jest przywiązane do naszych serwerów, więc przejście to zmiana nazwy hosta i nic więcej.

Co budujesz

telefon (wifi + sieć komórkowa)
   |
   |  srtla, UDP, jedno gniazdo na sieć
   v
srtla_rec          nasłuchuje na publicznym porcie UDP, składa połączenia
   |
   |  zwykłe SRT, UDP, na localhost
   v
serwer medialny    MediaMTX albo odpowiednik
   |
   +--> OBS albo restream dalej na Twitch / Kick / YouTube

Dwa elementy i każdy ma jedno zadanie. srtla_rec z projektu BELABOX to część, która rozumie bonding: każde połączenie, które otwiera telefon, rejestruje się w nim jako część jednej grupy, a on zamienia tę grupę z powrotem w jeden zwykły stream SRT. Potem przekazuje ten stream do nasłuchu SRT, i tam przejmuje go serwer medialny. MediaMTX to zwykły wybór i potrafi oddać stream do OBS, wypublikować go dalej albo nagrać, ale pasuje wszystko, co przyjmuje SRT.

Gdzie to uruchomić

Odbiornik musi być osiągalny z każdej sieci, przez którą streamuje telefon, czyli w praktyce pod publicznym adresem. Mały VPS w zupełności wystarczy: to przekazywanie pakietów, a nie transkodowanie, więc liczą się megabity i skromny procesor, a nie liczba rdzeni. Postaw go geograficznie blisko miejsca, z którego streamujesz, z tego samego powodu, dla którego wybierasz najbliższy relay: odległość to opóźnienie, którego nie odzyskasz, i płacisz je znowu przy każdej retransmisji.

Błąd, który dopada prawie wszystkich

Odbiornik w domowym LAN, pod czymś w rodzaju 192.168.1.50, jest osiągalny z twojego Wi-Fi i znikąd indziej. Twoje połączenie komórkowe nie potrafi trafić na adres prywatny, więc nigdy się nie rejestruje i nie masz bondingu, streamujesz przez Wi-Fi z dodatkowymi krokami, a statystyki pokażą jedno połączenie zamiast dwóch.

Albo hostuj na maszynie z publicznym adresem, albo przekieruj port UDP na routerze do pudła w LAN i wskaż w aplikacji publiczny adres routera. Dynamiczny DNS oszczędza ci przepisywania go za każdym razem, gdy adres się zmieni.

Porty

PortDo czego
UDP, twój port srtla, przychodzący z internetuJedyny port, którego dotyka telefon. 5000 to konwencja. Każde połączenie w bondingu przychodzi z własnego adresu źródłowego i portu, więc nie ma nic do otwierania ani konfigurowania na połączenie.
UDP, twój nasłuch SRT, lokalnyDokąd srtla_rec przekazuje złożony stream. MediaMTX domyślnie nasłuchuje SRT na 8890. Nie musi to być wystawione do internetu, chyba że chcesz też, żeby publikowali na nim zwykli klienci SRT.
Cokolwiek serwuje twój serwer medialnyRTMP, RTSP, HLS albo WebRTC do OBS lub do widza, całkowicie zależnie od ciebie i poza ścieżką bondingu.

UDP to nie TCP

Zapory, grupy bezpieczeństwa w chmurze i reguły przekierowania na routerze bardzo często domyślnie dotyczą TCP. Rejestracja srtla wysłana na regułę tylko dla TCP znika bez żadnego błędu, co wygląda identycznie jak padnięty odbiornik. Jeśli połączenie się nie rejestruje, sprawdź protokół w regule, zanim sprawdzisz cokolwiek innego.

Stream id

srtla_rec przekazuje stream id SRT bez zmian, więc w polu Stream id w aplikacji ma być to, czego oczekuje serwer za nim. W MediaMTX to forma publish, czyli ścieżka i opcjonalnie dane logowania, gdy uwierzytelnianie jest włączone:

publish:mypath
publish:mypath:username:password

Włącz uwierzytelnianie, jeśli port jest otwarty na internet. Nieuwierzytelniony punkt publikacji pod publicznym adresem prędzej czy później znajdzie ktoś, kto nie jest tobą.

Wskazanie aplikacji odbiornika

  1. W LOLS IRL: Streams → + → SRTLA.
  2. Host: twoja publiczna nazwa hosta. Port: port UDP, na którym nasłuchuje srtla_rec.
  3. Stream id: ciąg publish, którego oczekuje twój serwer medialny.
  4. Latency: na początek 2000 ms. Gdy jesteś na żywo, aplikacja pokazuje mierzone RTT i podpowiada wartość, która przy pobliskim pudle zwykle będzie niższa niż domyślna.
  5. Zapisz, włącz, wejdź na żywo i rozwiń nakładkę ze statystykami. Jeden wiersz na połączenie. Dwa wiersze znaczą, że obie sieci się zarejestrowały.

Sprawdzanie, czy naprawdę działa

Uwagi, które warto znać z wyprzedzeniem

Coś nie idzie na którymś kroku albo chcesz, żeby ktoś drugi spojrzał na odbiornik, który nie przyjmuje drugiego połączenia? Zapytaj na Discordzie albo napisz na support@lols.gg. Podaj region, w którym jesteś, co pokazuje nakładka ze statystykami i co zalogował odbiornik, a zwykle kończy się na dwóch wiadomościach.

Powiązane: bonding w pięć minut o stronie aplikacji i czytaniu wskaźników, korzystanie z darmowych relayów, jeśli wolisz nie hostować, i wszystkie poradniki.