ezWeb is a webinterface to control ezStream for Icecast.

It features automatic rotation, scheduling, jingle-automation, track weighting and hardness levels.

I've started coding this in 2007 for my then new webradio and abandonned work a year later. In 2017, I recoded this mess using modern tools and techniques. (see screenshots).
It's still under heavy development, but you may try it if you dare..?





  • Managable auto-queue
  • Track weightings
  • Jingle automation
  • Schedule planning
  • Track hardness levels (work in progress)
  • Comprehensive info on your tracks (work in progress)





As of today (2020-03-23), installation should be as easy as copying the contents of the folder "dist" to your desired webroot, then visit it with your browser and follow the on-screen-instructions.

If this doesn't work, there's instructions for manual installation in the included README.md 



Most of your every-day-use is done at the webinterface itself and should be pretty self-explanatory. But there's a cli-tool, to, you need for adding new tracks and bulk-editing existing ones:

Import mp3 files

/path/to/ezweb/bin/ezweb.php scan

Combine with find to bulk-add files:

find /path/to/mp3s -iname '*.mp3' -exec /path/to/ezweb/bin/ezweb.php addfile "<playlist name>" "{}" \;

Add file to playlist

/path/to/ezweb/bin/ezweb.php addtoplaylist "<playlist name>" "<filename>"


/path/to/ezweb/bin/ezweb.php removefromplaylist "<playlist name>" "<filename>"




You can download the latest development snapshot from my gitlab account. This includes everything you need to use and/or contribute to it.


If you just want to use it, use the contents of the folder "dist".
If you want to contribute use the build-environment inside the folder "src".
When using NetBeans, all you need to do is run "npm install" to reinstall all the grunt modules. The rest is included in the sources.

Build perquisites:


Dank Je! I succesfully installed it on my orange pi zero.
Dear stimpy
first of all thanks for develope this tool!
but i have a issu at the moment with it, and i dont know how to figure it out.
i'm trying to run
Code :
find /home/ice/mp3/ -iname '*.mp3' -exec /var/www/html/dist/bin/ezweb.php addfile "" "{}" \;

and it comes back
Code :
Playlist not found.
Playlist not found.
Playlist not found.
Playlist not found.
Playlist not found.
Playlist not found.
Playlist not found.
Playlist not found.
Playlist not found.

do you have any idea for this?

The term "playlist" is a bit missleading..
What I mean is not an .m3u file, but the name of a category defined in ezweb, by clicking the green button with the "+" sign on it, on to of the archive, at the main window..
This way, you can create different playlists, which can then be scheduled for different times and days..

thank your for suport now, this has work,
but after adding the titels there is an additional issu. it dont confirm the corect titels(id3 tags)
see image

Say... ...Is it possible, we're two germans, talking english together...? ;) I'll just assume that's the case and continue in german... ;)

Das mit den Tags ist schon etwas merkwuerdiger... ...EIGENTLICH liesst ezWeb sowohl ID3v1, als auch v2 aus, nimmt v2, sofern vorhanden und weicht auf v1 aus, wenn nicht.
Trotzdem ist das fast die einzige Idee, die ich habe.. Kannst Du bitte mal gucken, ob den MP3s eine Version fehlt, diese ergaenzen und nochmal neu einscannen?
Hierbei helfen Dir die beiden Linux Kommandozeilent ools "id3" und id3v2" - beide sind in so gut wie allen Distributions-Repositories vorhanden und koennen per Paketmanager installiert werden. Mit id3v2 kannst Du auch v1 nach v2 kopieren und umgekehrt, ohne alles neu eingeben zu muessen..

bei meinen daten scheint es sich um id3v1 zu handeln
hier mal nen output:
Code :

id3v1 tag info for Ultra-Noob feat. Megurine Luka - Megane.mp3:
Title : Megane Artist: Ultra-Noob feat. Megurine Luka
Album : EX:P2 Year: , Genre: Other (12)
Comment: Track: 12
id3v2 tag info for Ultra-Noob feat. Megurine Luka - Megane.mp3:
COMM (Comments): (iTunSMPB)[]: 00000000 00000240 00000444 0000000000cf9ff c 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
COMM (Comments): ()[]:
TDAT (Date):
TIT2 (Title/songname/content description): Megane
TPE1 (Lead performer(s)/Soloist(s)): Ultra-Noob feat. Megurine Luka
TALB (Album/Movie/Show title): EX:P2
TPE2 (Band/orchestra/accompaniment): Various artists
TCON (Content type): Anime (145)
TPOS (Part of a set): 1/1
TRCK (Track number/Position in set): 12/16
APIC (Attached picture): (1)[, 3]: image/jpeg, 97478 bytes
APIC (Attached picture): (2)[, 3]: image/jpeg, 115270 bytes
GEOB (General encapsulated object): (USR_SMFMF)[]: Application/SMFMF, 9400 bytes

der befehl
Code :
id3v2 -l *.mp3 |grep "No ID3v2 tag" |cut -d ":" -f1 

ergab dass keine dateien ohne id3tag vorhanden wären.

dass convertieren hat auch nicht funktioniert:
Code :
id3v2 -c Ultra-Noob\ feat.\ Megurine\ Luka\ -\ Megane.mp3
No file to work on.

habe eben auch mal in die datenabnk reingeschaut, die einträge sind korrekt vorhande soweit ich dass beurteilen kann.
es gibt sowohl eine id, für den song, der filename wurde korrekt erkannt, der pfad, datum vom hinzufügen, id3artist, id3 titel, id3 album, length und ein hashwert wurden hier geschrieben.

bevor ich über haupt die "unamed" daten in etweb selber sehe (also die playlist auswähle) kommt allerdings foglender fehler in der zeile:
Warning: Invalid argument supplied for foreach() in /var/www/html/dist/assets/windows/archive.win.php on line 131

Veraltete Datenbankstruktur
Das Problem ist eine veraltete Datenbankstrukt ur.
Ich habe sie mittlerweile im git aktualisiert.

Du kannst Dir die aktuelle Version hier herunterladen:

Erstelle damit die ezweb Datenbank nocheinmal neu (alte loeschen/leeren, neue importieren). Auch Deine MP3s musst Du nochmal importieren.
Hiernach sollte das Webinterface schon sehr viel weniger kaputt aussehen und sich weitestgehend selbst erklaeren...

hi i try to make work
i get some error

1. PHP Fatal error: Call to undefined method mysqli_stmt::ge t_result() in /var/www/ezweb/assets/classes/tracks.class.php on line 97
2. ezstream: Connected to http://localhost:8200/listen
PHP Fatal error: Call to undefined method mysqli_stmt::ge t_result() in /var/www/ezweb/assets/classes/queue.class.php on line 111

missing dependency?
Hey Mat,
looks like you're missing the required mysqli libraries for php. For debian stretch the needed package is called "php-mysql", for jessie, it's "php5-mysqlnd".


5000 Characters left