En direktesending kan være et engangsarrangement (en søndagsgudstjeneste, en produktlansering, en konferansepresentasjon, et bryllup, et webinar, en panelsamtale på en liten festival), en sporadisk sending (et ukentlig program, en månedlig Q&A) eller en kontinuerlig 24/7-kanal. Rørleggerarbeidet strømmebransjen har bygget opp de siste femten år forutsetter at alle tre trenger den samme tunge stabelen: et kamera, en encoder, en RTMP-push til en strømmeserver, en sky-transkoder, en packager, en CDN og en spiller. Fem bevegelige deler, fire regninger, tre steder hvor autentisering kan svikte, og ett arkitekturdiagram som ingen på teamet kan tegne ut fra hukommelsen.
For et lite til middels stort publikum trenger du ingenting av dette. Verken strømmeserveren, sky-transkoderen, packageren eller CDN-en. Enten du sender i to timer søndag morgen eller driver en kanal som aldri sover, dekker den samme enkle arkitekturen alt sammen.
Den skitne hemmeligheten er at på en moderne Mac finnes fire av de fem boksene allerede inne i den bærbare maskinen på pulten din. H.264-encoderen Final Cut Pro bruker til eksport er den samme maskinvare-encoderen som leveres i hver eneste Apple silicon-brikke. HEVC- og AV1-encoderne ligger rett ved siden av. Pakking av fragmented MP4 inn i HLS-segmenter er noen hundre kodelinjer. Opplasting av disse segmentene til en webserver er HTTPS PUT, som hver eneste server allerede snakker. Strømmeserveren i midten er ikke en fysisk lov. Det er bare en ting bransjen har vent seg til å leie.
My Live TV Channel er en macOS-app som gjør hele kjeden i én og samme programvare. Opptak, koding, pakking, publisering. Resultatet er broadcast-standard HLS, samme format som Netflix, Apple, Disney+ og BBC sender til seerne sine. Destinasjonen er hvilket som helst HTTPS-endepunkt du peker den mot. Ditt eget nettsted på en billig delt webhotell-konto (uten CDN foran), en S3-bucket, Cloudflare R2, Bunny Storage, eller Akamai MSL4 hvis du tilfeldigvis kjører liveeventer på Super Bowl-skala. Appen bryr seg ikke. Den skriver segmenter. Internett plukker dem opp.
Denne artikkelen går gjennom hva som endrer seg når du klapper sammen strømmekjeden til én app, hva det koster, og hvor grensene går.
Hva du faktisk trenger for å gå live
Tre ting, i denne rekkefølgen.
En Mac med en videoinngang. Hvilken som helst Apple silicon-Mac (M1 og oppover) fungerer. Det innebygde FaceTime-kameraet er greit nok for snakkende-hode-sendinger. Et USB-kamera plugges inn og dukker opp som en kilde. iPhonen din dukker opp som et Continuity Camera, noe som faktisk er bra som B-kamera til arrangementer, fordi Apple tar seg av det trådløse og autofokusen for deg. Velg et innebygd, USB- eller Continuity Camera som inngang. En flytende picture-in-picture-forhåndsvisning holder kameraet synlig mens du jobber i et annet vindu.
Et sted å legge HLS-segmentene. Dette er den eneste delen som betyr noe, og den eneste delen folk overtenker. Appen laster opp små filer (.m4s-segmenter, seks sekunder hver som standard, pluss bittesmå .m3u8-spillelistefiler) over HTTPS PUT eller POST. Alt som tar imot HTTPS PUT fungerer:
- En katalog på din egen webserver, med PHP, Python, Node eller hva du nå allerede kjører, som tar imot opplastingen og skriver den til disk. De fleste statiske webhotell (cPanel, ren Apache, ren nginx) kan settes opp til dette på under tretti minutter.
- En Amazon S3-bucket. Eventuelt med CloudFront foran for global levering.
- Cloudflare R2 (S3-kompatibelt API, ingen egress-kostnader), Bunny Storage, Wasabi, Backblaze B2.
- Akamai MSL4, som er lagringslaget bak Akamais live ingest. Samme protokoll, skala-testet for de største liveeventene på planeten.
- Et hvilket som helst annet endepunkt som snakker HTTPS PUT og returnerer en 2xx-kode.
En 7-dagers gratis prøveperiode på appen. Etter det krever live-publiseringsfunksjonen et ukentlig abonnement som starter på $0,99/uke. Kameraforhåndsvisning og lokalt opptak er alltid gratis, noe som er verdt å vite hvis du bare trenger en opptaker.
Det er hele handlelisten. Det er ingen strømmeserver. Det er ingen RTMP. Det er ingen mediaserver-VM som du må holde patchet. Encoderen, transkoderen, packageren og publisereren ligger inne i appen på Macen din. Det eneste som går over kabelen er ferdig HLS, én vei, inn i en bucket.
Hva den erstatter
Det er verdt å være konkret om hva som forsvinner fra arkitekturdiagrammet.
Strømmeserveren. Wowza Streaming Engine, Nimble Streamer, Ant Media Server, AWS Elemental MediaLive, Mux sin RTMP-ingest, og det dusinet av andre tjenester i denne kategorien finnes av én grunn: å ta imot en RTMP-strøm fra en encoder og gjøre den om til HLS. Hvis encoderen din produserer HLS direkte, har strømmeserveren ingenting å gjøre. Du kan slette den fra diagrammet og fra budsjettet.
Sky-transkoderen. AWS Elemental MediaConvert, Mux Live, Bitmovin, Google Live Transcoder. De fakturerer per minutt input og per minutt output. En 1080p-strøm pushet opp på én bitrate, transkodet til fire output-bitrater, blir fort til reelle penger selv for ett enkelt ettermiddagsarrangement, og til alvorlige penger på en kontinuerlig kanal. Apple silicon-maskinvare-encoderen i Macen din er raskere, gratis, og samme brikkefamilie som kjører Final Cut Pro sin eksport. Å kode de fire ABR-variantene direkte på Macen fjerner transkode-posten helt fra regnskapet.
Packageren. AWS Elemental MediaPackage, Unified Streaming, packageren i Wowza Streaming Cloud, alle finnes for å pakke en strøm inn i HLS eller DASH. Appen produserer broadcast-standard HLS ved kilden. Det er ingenting igjen å pakke.
CDN-en, i det lille tilfellet. Dette er den som overrasker folk flest. CDN-er finnes av to grunner: terminere tung global trafikk nær seeren, og absorbere flash-crowd-trafikk som et opphav ikke kan håndtere. Den billige webserveren du allerede har, kan levere HLS-segmenter helt fint på egen hånd opp til et reelt, endelig antall samtidige seere. Regnestykket er rett frem: en 1080p HLS-variant på 5 Mbps over en gigabit-uplink metter linken på rundt 200 samtidige seere (1000 ÷ 5). 720p-varianten på 3 Mbps tar det opp til omtrent 330. 540p-varianten på 1,8 Mbps når rundt 550. I et reelt adaptivt-bitrate-publikum er seerne spredt over alle disse trinnene (mobilbrukere på lavere varianter, stasjonær på høyere), så en liten VPS bærer komfortabelt noen hundre samtidige seere, og ofte flere, avhengig av enhetsmiksen. Det dekker det store flertallet av engangsarrangementer og små til middels store kanaler. Du trenger en CDN først når publikummet konsekvent vokser ut av den rammen, noe som skjer senere enn de fleste tror.
Per-GB båndbredde-overraskelser. Når opphavet ditt er en strømmeserver du leier, og leveringen er en CDN du leier, treffer hvert seer-minutt begge målerne. Selvhosting flytter måleren over til din egen infrastruktur: en VPS til $5 med raus båndbredde, en R2-bucket uten egress-kostnader, en CloudFront-distribusjon på din reserverte rate, eller hva du allerede har forhandlet frem. Ingen kommer til å ringe deg ved månedsslutt fordi strømmen din ble viral.
Plattformvilkår. YouTube og Twitch gir deg et gratis RTMP-endepunkt og en spiller, og til gjengjeld bestemmer de hva som kan tjenes penger på, hva som blir aldersbegrenset, hva som blir anbefalt, og hva som blir tatt ned hvilken uke. Selvhosting er ikke gratis i tid eller penger, men det kommer ikke med en tredjeparts regelbok. Din strøm, ditt domene, dine vilkår.
Hva som forblir likt
Selvhosting er en reell omstilling, og det er ærlig å være tydelig på hva den ikke endrer.
Du betaler fortsatt for båndbredde et sted. Bytene må komme fra et sted. Valget står mellom en strømme-SaaS som pakker transkoding pluss levering inn i én regning, og selvhosting der du betaler separat for lagringslaget og egress. For de fleste ikke-trivielle publikum er det andre billigere. For en strøm med fem seere er en gratis YouTube-konto billigere. Match verktøyet til publikummet.
Du trenger fortsatt en spiller. Hvilken som helst
HLS-spiller fungerer. Video.js, hls.js, Shaka Player, nettleserens
innebygde HLS i Safari og på iOS, Apple TV sin AVPlayer,
spillerne på Roku, Fire TV og Android. Ingen av disse trenger noe
spesielt fra opphavet ditt. Hvis destinasjons-URL-en din serverer en
gyldig index.m3u8, vil hver eneste moderne spiller spille
den av.
Du må fortsatt tenke på latens. Standard HLS med seks sekunder lange segmenter ligger på rundt 18 til 30 sekunder glass-til-glass-latens. Det er greit for talkshow, musikkøkter, prekener, forelesninger, behind-the-scenes-innhold, gaming-highlights, FAST-kanaler, alt som ikke er en auksjon eller en e-sport-turnering. For latens under fem sekunder trenger du LL-HLS, WebRTC eller DASH-LL, og regnestykket endrer seg.
Du trenger fortsatt oppetid, skalert til sendingen. En Mac på pulten din er fin til et engangsarrangement: en SSD, en UPS, en kablet tilkobling, og du er trygg ettermiddagen ut. For en langvarig eller alltid-på sending vil du ha en Mac mini på et kjølig sted, en UPS, en kablet tilkobling, og helst en sekundær Mac du kan failover til. Appens funksjon for lokalt opptak gir deg en backupfil i begge tilfeller. Ingenting av dette er vanskeligere enn å drifte en strømmeserver, og det meste er vennligere.
Femminutterstesten
Den raskeste måten å finne ut om dette fungerer for deg, er å publisere en teststrøm til et offentlig endepunkt og inspisere resultatet. Appen leveres med en destinasjonstype kalt “HTTP PUT Server” som ikke krever autentisering eller noe oppsett fra din side:
- Åpne appen, gå til Destinations, trykk +.
- Velg HTTP PUT Server.
- Gi den navnet “Test”, upload-URL
https://ams.ireplay.tv/hls/test/, playback-URL den samme. - La autentisering stå tomt.
- Test Connection. Serveren returnerer HTTP 201.
- Lagre.
- Profiles, lag en profil, velg test-destinasjonen, standardverdiene er fine.
- Live, velg profilen, Go Live. Snakk til kameraet i tretti sekunder, Stop.
- Oppsummeringsskjermen viser playback-URL-en. Åpne den i Safari, i
ffprobe, i hvilken som helst HLS-spiller.
Hvis den spiller av, fungerte Macen din nettopp som encoder, transkoder, packager og publiserer. Ende til ende, uten en strømmeserver i kjeden. Bytene du ser på, reiste direkte fra H.264-encoderen på Apple-brikken din inn i en offentlig bucket og ut til spilleren din. Hele rørleggerarbeidet bodde i én app.
Den samme destinasjonstypen peker på hvilket som helst HTTPS PUT-endepunkt. Bytt ut URL-en med en for din egen bucket, og du selvhoster en strøm på din egen infrastruktur.
Engangs-sending, eller en 24/7-kanal som rammer den inn
En enkelt direktesending er et komplett produkt i seg selv. Trykk Go Live for varigheten av arrangementet, Stop når det er over, la opptaket ligge på domenet ditt som reprise. Det er en helt gyldig bruk av appen, og det er det de fleste brukere vil gjøre mesteparten av tiden.
Hva som skjer når du ikke er live, er spørsmålet som skiller et arrangement fra en stasjon. Hvis en seer havner på kanalsiden din en tirsdag ettermiddag når ingenting blir sendt, ser de en “stream offline”-skjerm og hopper videre. De fleste uavhengige kringkastere taper den trafikken uten å vite det.
Søsterappen, My TV Channel, fyller det tomrommet. Den er et 24/7 playout-verktøy: gi den ditt eksisterende videobibliotek, og den bygger en kontinuerlig lineær timeplan (VOD2Live, noen ganger kalt FAST) som går døgnet rundt. Seere som titter innom når som helst på døgnet, lander alltid på noe, selv når ingen liveevent pågår. Den samme My TV Channel-kontoen du bruker til playout, kobler seg direkte til My Live TV Channel-appen, så når du trykker Go Live, blir live-feeden din satt inn i den løpende timeplanen. Seere som ser på VOD2Live, ser direktesendingen ta over. Når du stopper, fortsetter timeplanen fra rett sted.
Du kan ta dette i bruk i hvilken som helst rekkefølge. Start med engangs-liveeventer og legg til 24/7-tilstedeværelse senere når publikum etterspør det. Eller start med en 24/7-timeplan og bruk live-appen til å droppe inn nyheter, breaking-øyeblikk, Q&A-økter eller planlagte live-program oppå.
Live-verktøyet, playout-verktøyet og publiseringsverktøyet er tre apper som deler én lagringsdestinasjon. Det er ingen strømmeserver noen steder i denne arkitekturen, bare lagringen du valgte, Macen på pulten din, og spillerne i hendene til seerne dine.
Ærlig dom
Hvis du sender et lite program med tre seere og ingen planer om å vokse, registrer deg for en gratis YouTube-konto og legg embedden på siden din. Du er ikke målgruppen for dette.
Hvis du driver en betalt strøm, en kun-for-medlemmer-sending, en søndagsgudstjeneste for menigheten din, en nisje-FAST-kanal, et bedrifts-liveevent, en intern videresending (town hall, opplæring) til din on-prem-webserver, en idrettsserie, en bryllups-sending for fjerne slektninger, en skaper-eid lineær kanal, eller noe der plattformvilkår og per-GB-regninger er reelle kostnader, blir regnestykket interessant raskt. En Mac mini, en destinasjons-bucket eller til og med en helt vanlig webserver, og et $0,99/uke-abonnement erstatter en stabel skyfakturaer som til sammen pleide å starte på tresifrede beløp i måneden og stige derfra. Arkitekturdiagrammet får plass på en gul lapp. Antallet leverandører som kan ta ned strømmen din med en TOS-oppdatering går fra “flere” til “null”.
Strømmeserveren i midten var alltid valgfri. Maskinvaren i hver Mac på hver pult har stille og rolig ventet på å gjøre den jobben i årevis. My Live TV Channel er programvarestykket som endelig lar den gjøre det.