NOALBS og bitrate-tuning for stabile streams
Hvis du noen gang har streamet IRL fra en mobilforbindelse, fra en bil i bevegelse, eller bare fra et hus med litt for mye trafikk på Wi-Fi-en, vet du at variabel båndbredde er fienden til en stabil strøm. Du sender 6000 kbps i ett øyeblikk, og 1500 kbps to sekunder senere. Resultatet for seerne er en strøm som fryser, hopper, eller blir helt borte. NOALBS — Network Operator's Active Loss Black Sheep — er et åpent-kildekode-verktøy som løser dette ved å automatisk bytte OBS-scener basert på sanntids-kvalitetsdata fra streaming-tjeneren din. Denne guiden går gjennom hvordan du setter opp NOALBS sammen med StreamAdmin for en virkelig stabil strøm-opplevelse.
Hva er NOALBS, og hvorfor er det relevant?
NOALBS er et åpen kildekode-verktøy skrevet i Rust som overvåker streaming-helse i sanntid og automatisk reagerer på fall i bitrate eller pakketap. Verktøyet ble opprinnelig utviklet for IRL-streaming-miljøet, der streamere bruker mobilforbindelser som varierer enormt avhengig av bevegelse, været, og hvor mange andre som er på samme celletårn.
Kjerneideen er enkel: hvis bitraten din faller under en gitt terskel, betyr det at strømmen er i ferd med å bli ustabil. I stedet for å la seerne se en frosset eller forvrengt strøm, bytter NOALBS automatisk til en "low bitrate"-scene — typisk en statisk "Stand by, network issues"-overlay — og bytter tilbake automatisk når bitraten er stabilisert.
Verktøyet fungerer ved å lese metrikker fra streaming-tjeneren (StreamAdmin/MediaMTX i vårt tilfelle) og kommunisere med OBS via OBS WebSocket-protokollen. Det er gratis, åpen kildekode, og er bredt brukt av profesjonelle IRL-streamere på Twitch og YouTube.
Når trenger du NOALBS?
- Mobil-streaming (4G/5G): Helt nødvendig. Bitraten kan svinge fra 8000 til 800 kbps på et kvartal i bevegelse.
- Hjemmenettverk delt med mange: Hvis det skjer noe rart med Wi-Fi-en eller noen i husholdningen plutselig laster ned 50 GB, vil NOALBS skjerme strømmen din.
- Backup-linje failover: Hvis du har dual-WAN setup (fiber + 4G failover), kan NOALBS varsle om degradering og bytte scene før seerne merker det.
- Studio-streaming på stabil fiber: Trolig overkill, men kan fortsatt være nyttig som beskyttelse mot uventede ISP-glitches.
Installasjon og grunnkonfigurasjon
NOALBS distribueres som binærer for Linux, macOS og Windows fra GitHub-repository-et. Hvis du kjører streaming-PC-en på Windows (som de fleste streamere gjør), last ned siste Windows-binær og pakk den ut til en mappe der du har skrivetilgang.
# Eksempel: PowerShell på Windows
mkdir C:\noalbs
cd C:\noalbs
# Last ned noalbs.exe og config.json fra GitHub releases
# https://github.com/715209/nginx-obs-automatic-low-bitrate-switcher/releases
Konfigurasjonsfilen er en JSON-fil med fornuftige defaults, men du må fylle inn dine egne verdier for OBS WebSocket og streaming-server-endepunkt:
{
"user": {
"id": "din-streamer-id",
"password_hash": ""
},
"switcher": {
"bitrate_switcher_enabled": true,
"only_switch_when_streaming": true,
"instantly_switch_on_recover": false,
"auto_switch_notification": true,
"triggers": {
"low": 1500,
"rtt": 2500,
"offline": 200
},
"switching_scenes": {
"normal": "Live",
"low": "LowBitrate",
"offline": "Offline"
}
},
"software": {
"useObs": true,
"obs": {
"host": "localhost",
"password": "din-obs-websocket-passord",
"port": 4455
}
},
"streamServers": [
{
"type": "Nginx",
"name": "StreamAdmin",
"stats_url": "https://din-streamadmin.no/api/stats",
"application": "live",
"key": "din-stream-key"
}
]
}
OBS WebSocket må være aktivert
Fra OBS 28 og oppover er WebSocket-pluginen innebygget. Aktiver den under Tools → WebSocket Server Settings, sett et passord, og noter port-nummeret (default 4455). NOALBS bruker dette for å sende scenebytte-kommandoer.
Integrasjon med StreamAdmin
StreamAdmin eksponerer et NOALBS-kompatibelt stats-endepunkt som rapporterer sanntids-bitrate og pakketap for hver aktive strøm. Endepunktet ligger på /api/v1/streams/{stream-id}/noalbs-stats og krever en API-token for autentisering.
I admin-panelet under "Streaming → API Tokens" oppretter du en token spesifikt for NOALBS-bruk. Disse tokens har read-only tilgang til stats-endepunkter og kan revoceres uavhengig av andre integrasjoner.
# StreamAdmin-side konfigurasjon
noalbs_integration:
enabled: true
poll_interval_seconds: 2
metrics:
- bitrate_kbps
- dropped_frames_per_minute
- rtt_ms
- packet_loss_percent
triggers:
notify_on_threshold_breach: true
threshold_breach_webhook: https://hooks.slack.com/...
Når NOALBS poller dette endepunktet (default hvert 2. sekund), får den et JSON-svar med nåværende bitrate, RTT (round-trip-time) og pakketap. Den sammenligner mot terskelverdiene i config og handler deretter.
Bitrate-terskelverdier: hva bør du sette?
Default-verdiene som kommer med NOALBS er konservative og funker greit for de fleste, men terskelverdier bør tunes til din spesifikke setup. La oss gå gjennom hva hver verdi betyr:
low — den kritiske terskelen
Dette er bitraten under hvilken NOALBS bytter til "low bitrate"-scene. Default er 800 kbps, men dette er for lavt for moderne 1080p-streaming.
For en 1080p60-strøm normalt på 6000 kbps:
- Konservativ:
low: 3500— bytter scene tidlig, før seerne merker noe - Balansert:
low: 2500— gir litt buffer, bytter ved tydelige problemer - Aggressiv:
low: 1500— bytter bare ved alvorlige problemer (godt for IRL hvor svingninger er vanlig)
For 720p-streaming kan du senke disse med ca 40-50% (siden 720p normalt streames på 3500-4500 kbps).
rtt — round-trip-time
Dette er forsinkelsen på pakker mellom encoder og streaming-server. Høy RTT indikerer nettverkstrengsel selv om bitraten holder seg oppe. Default 2500 ms er en god start; for IRL-streamere bør du senke til 1500 ms for tidligere varsling.
offline — komplett tap
Hvis bitraten faller under denne (default 200 kbps), regnes strømmen som offline og NOALBS bytter til en dedikert "Offline"-scene. Denne brukes når forbindelsen er helt borte, typisk i tunneller eller døde soner.
Hysterese: unngå "scene-flapping"
Det viktigste å forstå er at NOALBS har innebygget hysterese — den bytter ikke tilbake til normal scene før bitraten har vært stabil over terskelen i en gitt periode (default 5-10 sekunder). Uten dette ville scenen flippe frem og tilbake hvert sekund ved marginale forbindelser.
"triggers": {
"low": 2500,
"rtt": 2000,
"offline": 200,
"switching_delay": 5,
"recovery_delay": 10
}
Scene-bytting og hva "low bitrate"-scenen bør inneholde
Den vanligste feilen førstegangsbrukere gjør er å lage en kjedelig "stand by"-scene som bare viser tekst på sort bakgrunn. Dette får seerne til å forlate strømmen umiddelbart. Den bedre tilnærmingen er å lage en scene som:
- Beholder lyden fra mikrofonen din — du kan fortsatt snakke selv om kamera er borte
- Viser en lavbitrate-egnet visuell — et statisk bilde, en saktegående animasjon, eller en pre-renderet loop
- Kommuniserer hva som skjer — "Network catching up, hold tight!" er bedre enn ingenting
- Beholder chat-overlay — så interaksjonen kan fortsette
For IRL-streamere er det vanlig å ha en mini-galleri-scene med tidligere bilder fra strømmen, eller en kart-overlay som viser hvor du er. Dette holder seerne engasjert mens forbindelsen kommer tilbake.
SRT i stedet for RTMP for ustabile linjer
Et viktig poeng: NOALBS hjelper deg å håndtere konsekvensene av ustabil båndbredde, men det fikser ikke roten av problemet. Hvis du streamer fra en mobil-forbindelse, bør du bruke SRT i stedet for RTMP fra OBS til StreamAdmin.
SRT (Secure Reliable Transport) er designet spesifikt for upålitelige nettverk. Det legger til foroverkorreksjon (FEC) og pakke-retransmisjon, som betyr at midlertidige pakketap håndteres på protokoll-nivå i stedet for å manifestere seg som video-glitches. StreamAdmin støtter SRT på port 8890.
# OBS Custom Service for SRT mot StreamAdmin
service = Custom...
server = srt://din-streamadmin.no:8890?streamid=publish:din-stream-key&latency=2000000
streamkey = (la stå tom — streamid håndterer dette)
Latency-parameteren (2000000 mikrosekunder = 2 sekunder) er buffer-størrelsen som SRT bruker for å reordre pakker. Høyere verdier gir mer robusthet mot pakketap, men også høyere total latens. For IRL er 2-4 sekunder en god balanse.
Vanlige feil og feilsøking
NOALBS bytter aldri scene
Sjekk i denne rekkefølgen:
- OBS WebSocket aktivert og passordet er riktig i config.json
- Scene-navn i config matcher EKSAKT scene-navnene i OBS (case-sensitive)
bitrate_switcher_enabled: trueer satt- NOALBS-loggen viser at den faktisk poller stats-endepunktet
Scene flipper frem og tilbake konstant
Du har for høy low-terskel sammenlignet med din normale bitrate, eller for lav recovery_delay. Øk recovery_delay til 15-20 sekunder, eller senk low med 500-1000 kbps.
NOALBS får ikke kontakt med StreamAdmin stats-endepunkt
API-token kan være feil eller utløpt, eller du står bak en streng firewall som blokkerer utgående HTTPS-kall. Test endepunktet manuelt med curl:
curl -H "Authorization: Bearer din-token" \
https://din-streamadmin.no/api/v1/streams/din-stream-id/noalbs-stats
Hvis du får 200 OK med JSON-data, er konfigurasjonen riktig.
Bitrate-data ser ut til å være forsinket
Default poll-interval på 2 sekunder er en god balanse, men for IRL hvor situasjonen endrer seg raskt kan du senke til 1 sekund. Ikke gå lavere — det belaster bare StreamAdmin sitt API uten å gi merverdi.
QoE-data som tilbakemelding
StreamAdmin samler QoE-metrics over tid og viser dette som grafer i admin-panelet. Etter en streaming-økt bør du se på "Bitrate over Time"-grafen og sjekke når NOALBS faktisk byttet scener. Hvis du ser at den byttet 47 ganger på en time, er terskelverdiene dine for aggressive — eller du har et nettverksproblem som krever løsning på protokoll-nivå (SRT) i stedet for application-nivå (NOALBS).
Den ideelle strømmen har 0-2 scenebytter per time, og bare ved faktiske, merkbare forbindelsesproblemer. Hvis du oppnår dette, har du en konfig som beskytter seerne uten å være overdrevent reaktiv.
Avslutning
NOALBS er et nesten obligatorisk verktøy for enhver streamer som ikke har 100% pålitelig fiber-forbindelse. Det er gratis, åpen kildekode, og integrerer rent med StreamAdmin via et dedikert stats-endepunkt. Den største fellen er å bruke default-terskelverdier uten å tune dem — bruk noen økter på å observere din typiske bitrate-profil, og still inn NOALBS deretter.
For full dokumentasjon av StreamAdmin sin NOALBS-integrasjon, se doc.geektech.no/streamadmin. Vil du komme i gang med StreamAdmin? Registrer deg på streamadmin.no. Har du tunet en NOALBS-konfig som funker spesielt godt for ditt setup, eller har spørsmål om SRT-latency-tuning? Bli med i Discord-serveren vår — vi snakker mye om dette der.
