23. Oktober 2023

Lydstreaming med Icecast

Weekenden gik i stor stil med at compile og konfigurere en Icecast-server, så nu har jeg min egen private netradio(!).

Icecast er en streamingserver til Linux/Unix og Windows, der kan streame lyd og video. Og det bedste af det hele er, at den er Open Source. Projektet er desværre ret dødt lige nu, og en hurtig tur på Github viser, at sidste commit på projektet er over et år siden - men det gør jo ikke softwaren dårligere. Jeg ved også fra mig selv, at jeg kan lade et projekt ligge i månedsvis for så pludselig at få lyst til at arbejde med det igen.

Da jeg havde fundet alle dependencies til Icecast kunne jeg compile projektet uden fejl. Mængden af konfigurationsmuligheder er enorm, så efter et par timers baksen rundt fik jeg den til at afspille en playliste i VLC-medieafspilleren.

Smart - men det kunne jo være sejt at kunne streame noget lyd a’ la en radiostation… :-)

IceS - en “lydkilde”-klient

Som sagt (skrevet), så gjort - derfor satte jeg IceS op. Ices er en “source” client, en del af Icecast-projektet, der kan føde lyd til Icecast-serveren i bl.a. OGG Vorbis/Theora-format. Det smarte i det setup er, at du kan have flere sources, så en lydkilde - source client - kan være et program på din lokale maskine, og en anden kan være på et andet sted på netværket eller endda sammen med Icecast-serveren, som den er i mit setup (jeg har en server hos DIgitalOcean).

Næste hurdle var så at få forbundet IceS med Icecast, og der krævede det, at jeg satte mig ind i authentication-mulighederne. For du kan sætte som krav, at de source clients, der kobler på Icecast-serveren skal logge sig ind med brugernavn/password, og det gav lidt hovedbrud at få det til at spille sammen. Icecast-konfigurationsfilen er stor og uoverskuelig, lidt som når man åbner Apache-webserverens konfiguration første gang, så Jeg endte med at teste med 1 mountpoint og den mest minimale Icecast-konfigurationsfil, man kan tænke sig - så spillede det… næsten, for jeg kunne ikke afspille MP3′ere - det viser sig at IceS kun virker med alt andet end MP3 - fint nok… Jeg gider heller ikke bruge patentbelagte lydformater, når der findes alternativer ;-)

What’s next?

Jeg synes egentlig det er et meget cool projekt at arbejde videre med, så jeg vil prøve til en start at se, om jeg på et tidspunkt kan gøre det lidt nemmere at arbejde med projektet, ved at pakke hele molevitten ind i en/et par Docker-container(e).

Smider jeg stream’en online? Mmm… I dunno - jeg har bestemt lyst til det… Den kunne f.eks afspille Linux-podcasts eller copyrightfri indie-musik. Men jeg aner ikke hvor meget mine månedlige 2 terabyte trafik rækker, så det skal jeg lige eksperimentere med. Det lyder umiddelbart af rimeligt meget, men jeg har intet sammenligningsgrundlag.

Until next time :-)

Links:
https://icecast.org/