Wil je met je vereniging, school of bedrijf eenvoudig live audiostreams uitzenden, zoals internetradio, liveverslagen of achtergrondmuziek? Dan is de gratis en opensource Icecast-software een uitstekende oplossing. Hiermee kun je zelfs meerdere streams tegelijk uitzenden, zonder afhankelijk te zijn van commerciële diensten.
In dit artikel laten we zien hoe je met Icecast eenvoudig je eigen radiostation opzet voor live of on-demand audiostreaming:
- Installeer Icecast op Windows of Linux en pas de configuratie aan
- Start de Icescast-server via een xml-bestand of laat het automatisch starten via Taakplanner
- Zend met een streamingclient als Butt of Mixxx je audio live uit
Lees ook eens: Met Music Assistant ben jij de baas over jouw muziekcollectie
De naam Xiph.org Foundation klinkt je misschien niet bekend, maar deze stichting ontwikkelt en onderhoudt een reeks populaire opensource-multimediaformaten, daarbij ondersteund door een mondiale gemeenschap van vrijwilligers.
Bekende projecten zijn het ogg-containerformaat en verschillende codecs, zoals Vorbis (audiocodec die bij vergelijkbare of lagere bitrates een betere geluidskwaliteit biedt dan mp3), Opus (audiocodec met lage latency, vooral gebruikt voor VoIP, live streaming en podcasts), FLAC (met verliesloze audiocompressie) en Theora (alternatieve videocodec voor gesloten, propriëtaire codecs als mpeg).
Naast codecs heeft Xiph.org Foundation ook bijbehorende software ontwikkeld, met Icecast als bekendste voorbeeld: een streamingserver die vooral audiobestanden uitzendt. Al hun technologieën gebruiken open standaarden en zijn vrij van patenten en licentiekosten. De naam Icecast verwijst naar SHOUTcast, het oorspronkelijke propriëtaire project van Nullsoft (bekend van Winamp) dat in de jaren 90 populair was als streamingserver voor internetradio.
In dit artikel vertellen we eerst waar je zoal Icecast-streams kunt vinden, maar leggen we vooral uit hoe je een eigen Icecast-server opzet. De focus ligt op Windows, maar ook Linux-gebruikers helpen we op weg. Verder tonen we hoe je zowel live als on-demand audiostreams kunt verzorgen met een geschikte tool.
1 Icecast-streams
Heb je de populaire en opensource VLC media player al op je systeem staan? VLC ondersteunt vrijwel alle mediacontainers en codecs. Hiermee kun je meteen talloze Icecast-radiostations beluisteren. Start de app, druk op Ctrl+L of open Weergave en kies Afspeellijst.
In het venster scrol je naar de rubriek Internet en selecteer je Icecast Radio Directory. Even later verschijnt een lijst met honderden radiostations. Tik bijvoorbeeld Nederland in en je krijgt een handvol zenders met piratenhits. Klik met rechts op een station om de stream direct in VLC af te spelen of naar een ander apparaat of netwerk te streamen, met instelbare parameters als formaat, bestemming en protocol. Dit is handig om bijvoorbeeld media binnen een netwerk te delen.
Je kunt Icecast-streams ook rechtstreeks via je browser beluisteren. In de officiële Icecast-directory vind je talloze live radiostations. Hier zoek je eenvoudig op genres, bitrate, populariteit en locatie. Wil je specifiek op locatie zoeken, probeer dan Radio Garden, waar je via een interactieve wereldkaart radiostations kunt ontdekken (niet alleen Icecast-streams).
Hieronder vind je nog andere online collecties met veel Icecast-streams. Bij de meeste kun je de stream-URL opvragen, die je vervolgens in je mediaspeler of Icecast-client kunt gebruiken. In VLC doe je dit via Media / Netwerkstream openen bij Geef een netwerk-url op, waarna je de stream kunt afspelen of opnieuw streamen.
VLC media player geeft direct toegang tot duizenden Icecast-radiostations.
2 Installatie Icecast
Lijkt Icecast je een interessante optie voor het streamen van audiostreams, zoals internetradio (bijvoorbeeld voor amateur-dj’s), live-evenementen (bijvoorbeeld wedstrijdcommentaar voor clubleden die fysiek niet aanwezig kunnen zijn), podcasting (inclusief on-demand afleveringen), eigen achtergrondmuziek of live lessen voor afstandsonderwijs? Surf dan naar www.icecast.org en open de Download-pagina voor serverinstallaties op Linux (tar.gz-bestand) of Windows (exe-installer).
We leggen eerst uit hoe je aan de slag gaat in Windows. Dubbelklik op het gedownloade exe-bestand om de set-upwizard te starten. Klik op I Agree, gevolgd door Next (2x) en Install.
In de installatiemap (standaard C:\Program Files (x86)\Icecast) vind je naast enkele submappen de bestanden icecast.xml en icecast.bat. Het eerste is het configuratiebestand, dat je opent in een editor die XML ondersteunt, zoals het gratis Notepad++. Het tweede is een batchbestand waarmee je de Icecast-server start, standaard met de instellingen zoals vastgelegd in icecast.xml.
Houd er rekening mee dat Icecast geen GUI-configuratietool meer meelevert. Ook goed om weten: Icecast ondersteunt de codecs/formaten ogg (Vorbis, Theora), Opus, FLAC en WebM (VP8/VP9) en kan (officieus) ook overweg met diverse propriëtaire mediaformaten.
In de installatiemap herken je het batchbestand en het XML-configuratiebestand.
3 Serverset-up
Voor je Icecast start, is het verstandig om eerst de configuratie aan te passen. Open hiervoor het bestand icecast.xml in een geschikte editor. Ga naar de sectie <authentication> en vervang hackme bij <source-password> door een sterk, eigen wachtwoord. Pas eventueel admin bij <admin-user> aan naar een eigen gebruikersnaam en vervang ook hackme bij <admin-password> door je wachtwoord.
Het wachtwoord bij <relay-password> kun je ongewijzigd laten, tenzij je de server ook wilt gebruiken als relay, een tussenstation dat een originele stream opnieuw uitzendt zonder de bron aan te passen. Dit kan handig zijn om de belasting van de bronserver te verlagen of de stream voor een ander publiek beschikbaar te maken.
Het poortnummer bij <listen-socket> kun je op 8000 laten staan, tenzij je de service bewust op een ander poortnummer wilt aanbieden.
Voor je de server start, wijzig je het best eerst enkele configuratieparameters, waaronder je inloggegevens.
4 Mountpoints
Standaard wordt als mountpoint de naam \stream gebruikt door Icecast, maar je kunt ook eigen streams, oftewel kanalen, definiëren door parameters toe te voegen waarmee je onder meer de mount-naam, gebruikersnaam en wachtwoord beschrijft, en aangeeft of de stream publiek toegankelijk is.
Voeg hiervoor de volgende regels toe aan het xml-bestand, bijvoorbeeld net boven de regel <fileserve>1</fileserve>:
<mount type="normal">
<mount-name>/<mijn-mountnaam></mount-name>
<username><je_gebruikersnaam></username>
<password><je_wachtwoord></password>
<public>1</public>
</mount>
De aanduiding <mijn_mountnaam> vervang je door een zinvolle naam zoals podcast.ogg of live-interview. Als je meerdere simultane streams wilt aanbieden, voeg je extra mount-elementen toe, telkens met een andere, unieke <mount-name>. Houd er rekening mee dat je bij meer dan twee invoerbronnen de waarde van <sources> in het onderdeel <limits> moet verhogen (standaard is dit 2). Besef ook: hoe meer simultane streams je toevoegt, hoe meer je server kan worden belast.
4 Je kunt ook meerdere, eigen mountpoints definiëren in het configuratiebestand.
5 Handmatig starten
Om vervelende meldingen bij het opstarten van de server te vermijden, wijzig je best nog enkele parameters in het XML-bestand:
<hostname>
standaard staat dit op localhost, maar je kunt dit vervangen door het ip-adres van de server (zoals het interne ip-adres voor streams binnen je netwerk), een publiek ip-adres of een domeinnaam.
<location>
standaard is dit Earth, maar je kunt je eigen locatie invullen, zoals Haarlem, Nederland.
<admin>
standaard is dit admin, maar je kunt dit vervangen door je naam of een e-mailadres.
Sla het aangepaste xml-bestand op en start de server door te dubbelklikken op het standaard geïnstalleerde bestand icecast.bat. Je kunt de server nu bereiken via http://localhost:8000 (of een ander ip-adres). Klik op Admin Home en vul je inloggegevens in om de serverstatistieken te bekijken.
Laat het opdrachtregelvenster open en sluit het alleen als je de server wilt stoppen. Je kunt ook het proces icecast.exe beëindigen via Taakbeheer in Windows of als administrator met het opdrachtregelcommando:
taskkill /IM /F icecast.exe
Als administrator kun je onder meer enkele serverstatistieken en de mountpoints bekijken.
6 Automatisch starten
Je kunt het bestand icecast.bat toevoegen aan Windows Taakplanner om het automatisch te starten. Een andere optie is een tool als NSSM (the Non-Sucking Service Manager) om Icecast als een Windows-service te draaien, zodat je niet langer aangemeld hoeft te zijn voor de Icecast-server. Start hiervoor de Opdrachtprompt als administrator, ga naar de uitgepakte NSSM-map en voer het volgende commando uit:
nssm.exe install IcecastService "C:\Program Files (x86)\Icecast\icecast.bat" "C:\Program Files (x86)\Icecast\icecast.xml"
Start vervolgens de service met:
nssm.exe start IcecastService
Open de app Services (druk op Windows-toets+R en voer services.msc uit), klik met rechts op IcecastService, kies Eigenschappen en stel het Opstarttype in op Automatisch. Je zogenoemde headless server is klaar voor gebruik.
Je kunt Icecast eventueel ook als een Windows-service draaien
7 Installatie en set-up in Linux
We tonen ook hoe je Icecast installeert en configureert op Linux en nemen hiervoor het populaire Ubuntu Desktop als voorbeeld.
Open de Terminal en voer achter elkaar deze commando’s uit:
sudo apt update
sudo apt install icecast2
Tijdens de installatie verschijnt het dialoogvenster Configure icecast2. Selecteer hier de optie YES en vul vervolgens de hostname in (standaard localhost, maar je kunt ook een ip-adres of domeinnaam gebruiken) en stel de wachtwoorden in voor de standaardmount \source, de relay-functionaliteit en de beheermodule.
Na de installatie start je de server met het commando:
sudo systemctl start icecast2
Controleer of de server actief is met:
sudo systemctl status icecast2
Wil je dat de server automatisch start bij het opstarten van Ubuntu, gebruik dan dit commando:
sudo systemctl enable icecast2
Je kunt de Icecast-webinterface bereiken met je browser via http://localhost:8000. Als dit niet werkt, controleer dan of de firewall openstaat voor de benodigde verbindingen met het commando:
sudo ufw allow 8000/tcp
Indien van toepassing kun je de firewall activeren met:
sudo ufw enable
Om mountpoints toe te voegen of andere parameters aan te passen (zie paragraaf 5), bewerk je het configuratiebestand met:
sudo gedit /etc/icecast2/icecast.xml
Of gebruik nano in plaats van gedit.
Bewaar het bestand met Save (gedit) of met Ctrl+O en Enter (nano).
Meteen na de installatie kun je de configuratie van Icecast starten.
Streamwerking
De werking van Icecast is anders dan bij streamingdiensten als Spotify of YouTube Music. Icecast is namelijk vooral gericht op live audiostreaming in realtime, zonder buffering of caching, terwijl de andere diensten vooral on-demand streaming tot doel hebben, met geavanceerde buffering, caching en adaptieve bitrate streaming als HST of DASH.
Bij Icecast heb je een ‘station’ oftewel een ‘mountpoint’ (streamlocatie) dat wordt aangeleverd door een client, zoals IceS of Butt, en door Icecast naar luisteraars wordt gestreamd. Alle luisteraars van deze mountpoint ontvangen dus dezelfde stream, wat maakt dat een individuele luisteraar de stream niet kan pauzeren of aanpassen. Je kunt het dus een beetje vergelijken met de werking van een bestands- of webserver.
Icecast kan wel een ‘onbeperkt’ aantal mountpoints tegelijk verwerken, wat verschillende streams met andere content mogelijk maakt.
8 Butt
Aan serverzijde is alles klaar, maar je hebt nog een tool nodig om de juiste bronnen te koppelen aan de mountpoints in de Icecast-server. Voor Linux zijn clients en encoders als DarkIce, Liquidsoap, Butt en Mixxx beschikbaar. Mixxx en Butt werken ook onder Windows en bespreken we hier kort.
We beginnen met Butt. Download en installeer de gratis tool via www.danielnoethen.de. In een Linux-distributie als Ubuntu kun je deze installeren via de grafische softwarebeheerder (Ubuntu Software) door Butt te zoeken, of je downloadt het AppImage-bestand via www.danielnoethen.de/butt en voert dit uit.
Start de app, druk op Instellingen en klik bij Server op Voeg toe. Selecteer Icecast bij Type en vul een Naam in, bijvoorbeeld IJskast. Bij Adres gebruik je localhost, het ip-adres of de domeinnaam. Stel de Poort in op 8000 (standaard). Vul het eerder gebruikte wachtwoord in. Bij Icecast mountpoint geef je /stream op (standaard) of een zelf gedefinieerde <mount-name> uit het xml-bestand (zie paragraaf 4). In het veld Icecast gebruiker vul je source in (voor /stream) of de <username> die je bij <mount> in het xml-bestand hebt gebruikt. Bevestig met Voeg toe of Opslaan.
Je moet in de client-app Butt ook eerst de Icecast-server instellen.
9 Streamen met Butt
De server is toegevoegd, nu stel je de audio in. Open in Instellingen het tabblad Audio en configureer de gewenste waarden, zoals Kanaalmode en Samplerate. Kies bij Primair Audioapparaat het invoerapparaat, zoals het standaard PCM-apparaat, een mixer, microfoon of MIDI-interface. Optioneel gebruik je ook het keuzemenu Secundair Audioapparaat.
Bij Streamen kies je bij de optie Codec bijvoorbeeld voor OGG/VORBIS of een andere optie als MP3, en stel je de optie Bitrate in (bijvoorbeeld 128 K). Via het tandwielpictogram pas je aanvullende audio-instellingen aan. Sluit het instellingenvenster na het configureren, je komt dan terug in het hoofdvenster.
Heb je twee audioapparaten ingesteld, gebruik dan de Mixer-knop om eenvoudig te schakelen tussen beide bronnen met de schuifbalk bij Cross Fader. Je kunt hier ook het ingangsvolume (dB) van elk apparaat afzonderlijk instellen met de bijbehorende schuifbalken.
Ben je klaar om te streamen, klik dan in het hoofdvenster op de witte pijlknop Verbind met server. Bovenaan zie je hoelang of hoeveel MB er is gestreamd en hoeveel luisteraars verbonden zijn. Met de rode opnameknop sla je de stream lokaal op.
Butt is de audio van de ingestelde audioapparaten aan het streamen.
10 Mixxx
Ook de gratis opensource-tool Mixxx is uitstekend geschikt als Icecast-client. Deze grafische software, vooral populair onder dj’s voor het mixen en live draaien van muziek, kan ook audiobestanden naar een Icecast-server streamen. Hoewel de interface door de vele mogelijkheden wat overweldigend kan zijn, leggen we kort uit hoe je bestanden streamt.
Download en installeer Mixxx en start de tool. Stel vervolgens de verbinding met je Icecast-server in. Ga naar Opties / Instellingen en open de rubriek Live uitzenden. Klik op Maak nieuwe verbinding. Vul de volgende gegevens in: Type (Icecast 2), Host (bijvoorbeeld localhost), Monteren (het gewenste mountpoint, zoals /mijnafspeellijst), Poort (standaard 8000), Login en Wachtwoord (zoals gedefinieerd in het bestand icecast.xml).
Hier kun je ook de gewenste Codering instellen, inclusief Bitsnelheid, Formaat en Kanalen (bijvoorbeeld 128 kbps, Ogg Vorbis en Stereo). Vul bij Stream-info de gewenste Stream-naam, een eventuele Website en een korte Omschrijving in. Bevestig met Pas toe en OK.
Net als in Butt moet je ook in Mixxx de Icecast-server definiëren.
11 Streamen met Mixxx
Zodra de serverconnectie is opgezet, kun je muziek streamen. Volg deze stappen om een audiobestand te streamen. Open het menu Bestand en kies Laad Track in Deck 1. Selecteer het gewenste bestand en bevestig met Openen. Druk daarna op de zwarte pijlknop (Play) in Deck 1. Klik rechtsboven op On Air, zodat de knop groen kleurt. Controleer in het Icecast-dashboard de Mountpoint List. Als alles correct is ingesteld, verschijnt hier het mountpoint dat je in Mixxx hebt gekoppeld en kun je de stream beluisteren via een url als http://<ipadres-icecast-server>/<mountpoint-naam>.
Om meerdere nummers achter elkaar te streamen, gebruik je de Auto-DJ-functie. Klik linksboven op Big Library om de audiobibliotheek te openen. Hier vind je lijsten als Tracks, Afspeellijsten, Kratten (virtuele trackverzamelingen) en Auto-DJ. Sleep de gewenste audiobestanden vanuit Verkenner naar het Auto-DJ-venster. Net boven de lijst kun je opties activeren, zoals loop, shuffle of het toevoegen van een willekeurige track uit je kratten. Schakel de Auto-DJ-functie in met het aan-uitknopje bovenaan de lijst. Controleer of On Air actief is, zodat de nummers netjes naar de Icecast-server worden gestreamd.
Dankzij Auto-DJ heb je weinig omkijken naar je gestreamde muzieknummers.