Self-hosting ενός receiver SRTLA

Το LOLS IRL μιλά τυπικό srtla συμβατό με BELABOX, οπότε ο δικός σου receiver συμπεριφέρεται ακριβώς όπως τα hosted relays μας. Εδώ είναι τι να τρέξεις, ποιες θύρες μετράνε και το ένα λάθος που εμποδίζει μια σύνδεση κινητής να φτάσει ποτέ στο μηχάνημά σου.

Δεν χρειάζεται να φιλοξενήσεις τίποτα: τα δωρεάν relays του LOLS Cloud υπάρχουν για να δουλεύει το bonding αμέσως, ή μπορείς να στήσεις δικό σου receiver και να μην εξαρτάσαι από κανέναν. Οι άνθρωποι επιλέγουν να φιλοξενούν για καλούς λόγους. Θες το stream να προσγειώνεται σε υποδομή που ελέγχεις, θες μηχάνημα φυσικά κοντά σου εκεί που δεν έχουμε relay κοντά, δεν θες κανένα όριο να σκέφτεσαι, ή απλά προτιμάς να τρέχεις τα δικά σου. Τίποτα στην εφαρμογή δεν είναι δεμένο με τους servers μας, οπότε η αλλαγή είναι αλλαγή hostname και τίποτα άλλο.

Τι φτιάχνεις

τηλέφωνο (wifi + κινητή)
   |
   |  srtla, UDP, ένα socket ανά δίκτυο
   v
srtla_rec          ακούει σε δημόσια θύρα UDP, ξανασυνθέτει τις συνδέσεις
   |
   |  απλό SRT, UDP, στο localhost
   v
media server       MediaMTX ή αντίστοιχο
   |
   +--> OBS, ή αναμετάδοση προς Twitch / Kick / YouTube

Δύο κομμάτια, και το καθένα έχει μία δουλειά. Το srtla_rec, από το project BELABOX, είναι το κομμάτι που καταλαβαίνει το bonding: κάθε σύνδεση που ανοίγει το κινητό σου εγγράφεται σε αυτό ως μέρος μιας ομάδας, και αυτό μετατρέπει την ομάδα ξανά σε ένα συνηθισμένο stream SRT. Μετά το προωθεί σε έναν SRT listener, εκεί που αναλαμβάνει ένας media server. Το MediaMTX είναι η συνηθισμένη επιλογή και μπορεί να δώσει το stream στο OBS, να το αναμεταδώσει ή να το καταγράψει, αλλά κάθε τι που δέχεται SRT κάνει.

Πού να το τρέξεις

Ο receiver πρέπει να είναι προσβάσιμος από κάθε δίκτυο μέσω του οποίου κάνει stream το κινητό σου, που στην πράξη σημαίνει δημόσια διεύθυνση. Ένα μικρό VPS αρκεί: αυτό είναι προώθηση πακέτων, όχι transcoding, οπότε μετράνε πολύ περισσότερο τα megabits και ένας μέτριος επεξεργαστής από τους πυρήνες. Βάλ' το γεωγραφικά κοντά στο μέρος που κάνεις stream, για τον ίδιο λόγο που διαλέγεις το πιο κοντινό relay: η απόσταση είναι καθυστέρηση που δεν παίρνεις πίσω, και πληρώνεται ξανά σε κάθε αναμετάδοση.

Το λάθος που πιάνει σχεδόν όλους

Ένας receiver στο δίκτυο του σπιτιού σου, σε κάτι σαν 192.168.1.50, φτάνει από το Wi-Fi σου και από τίποτα άλλο. Η σύνδεση κινητής δεν μπορεί να δρομολογηθεί προς ιδιωτική διεύθυνση, οπότε δεν εγγράφεται ποτέ και δεν έχεις bonding, κάνεις stream μέσω Wi-Fi με επιπλέον βήματα, και τα στατιστικά θα σου δείχνουν μία σύνδεση αντί για δύο.

Είτε φιλοξένησέ τον σε μηχάνημα με δημόσια διεύθυνση, είτε προώθησε τη θύρα UDP στο router σου προς το μηχάνημα στο δίκτυό σου και δείξε την εφαρμογή στη δημόσια διεύθυνση του router. Ένα δυναμικό όνομα DNS σε γλιτώνει από το να το ξαναγράφεις κάθε φορά που αλλάζει η διεύθυνσή σου.

Θύρες

PortΓια τι χρησιμεύει
UDP, η θύρα srtla σου, εισερχόμενη από το internetΗ μόνη θύρα που αγγίζει το κινητό. Το 5000 είναι η σύμβαση. Κάθε bonded σύνδεση φτάνει από τη δική της διεύθυνση και θύρα πηγής, οπότε δεν υπάρχει τίποτα ανά σύνδεση να ανοίξεις ή να ρυθμίσεις.
UDP, ο SRT listener σου, τοπικάΕκεί που το srtla_rec προωθεί το συναρμολογημένο stream. Το MediaMTX ακούει για SRT στο 8890 από προεπιλογή. Δεν χρειάζεται να εκτεθεί στο internet εκτός αν θες να δημοσιεύουν σε αυτό και απλοί SRT clients.
Ό,τι σερβίρει ο media server σουRTMP, RTSP, HLS ή WebRTC προς το OBS ή προς θεατή, εξ ολοκλήρου δικό σου θέμα και όχι μέρος της διαδρομής bonding.

Το UDP δεν είναι TCP

Τα firewalls, τα cloud security groups και οι κανόνες προώθησης των routers πολύ συχνά έχουν ως προεπιλογή το TCP. Μια εγγραφή srtla που στέλνεται σε κανόνα μόνο για TCP εξαφανίζεται χωρίς κανένα σφάλμα πουθενά, κάτι που μοιάζει ακριβώς με receiver που είναι κάτω. Αν μια σύνδεση δεν εγγράφεται, έλεγξε το πρωτόκολλο στον κανόνα πριν ελέγξεις οτιδήποτε άλλο.

Stream ids

Το srtla_rec περνά το stream id του SRT όπως είναι, οπότε αυτό που μπαίνει στο πεδίο Stream id της εφαρμογής είναι ό,τι περιμένει ο server πίσω από αυτό. Με το MediaMTX αυτό είναι η μορφή publish, μια διαδρομή και προαιρετικά διαπιστευτήρια όταν είναι ενεργό το authentication:

publish:mypath
publish:mypath:username:password

Ενεργοποίησε το authentication αν η θύρα είναι ανοιχτή στο internet. Ένα publish endpoint χωρίς authentication σε δημόσια διεύθυνση θα το βρει κάποτε κάποιος που δεν είσαι εσύ.

Δείχνοντας την εφαρμογή σε αυτό

  1. Στο LOLS IRL: Streams → + → SRTLA.
  2. Host: το δημόσιο hostname σου. Port: η θύρα UDP στην οποία ακούει το srtla_rec.
  3. Stream id: το publish string που περιμένει ο media server σου.
  4. Latency: 2000 ms για αρχή. Μόλις μπεις live, η εφαρμογή δείχνει τον χρόνο μετ' επιστροφής που μετρά και προτείνει τιμή, που σε κοντινό μηχάνημα συνήθως θα είναι χαμηλότερη από την προεπιλογή.
  5. Αποθήκευσε, ενεργοποίησε, μπες live και άνοιξε το overlay στατιστικών. Μία γραμμή ανά σύνδεση. Δύο γραμμές σημαίνει ότι εγγράφηκαν και τα δύο δίκτυα.

Έλεγχος ότι πραγματικά δουλεύει

Σημειώσεις που αξίζει να ξέρεις από πριν

Κόλλησες σε κάποιο βήμα, ή θες δεύτερη ματιά σε έναν receiver που δεν δέχεται τη δεύτερη σύνδεση; Ρώτα στο Discord ή στείλε email στο support@lols.gg. Φέρε την περιοχή που βρίσκεσαι, τι δείχνει το overlay στατιστικών και τι κατέγραψε ο receiver, και συνήθως λύνεται με δύο μηνύματα.

Σχετικά: bonding σε πέντε λεπτά για την πλευρά της εφαρμογής και πώς διαβάζεις τις ενδείξεις, χρήση των δωρεάν relays αν προτιμάς να μη φιλοξενήσεις, και όλοι οι οδηγοί.