Live Radio: metadata

Ok, here is my understanding - but note that I’m not an expert, so could be wrong.
To me, it looks it’s all about the streaming server.

1/ It seems that “icecast” is not able to embed metadata in OGG/Flac
2/ It sees on the opposite that another server, Rocket Streaming Audio Server, is able to do so
(I noticed this with your mention of Radio Bluesflac)
So my impression is that RP is streaming through icecast, and is therefore unable to add metadata.

It sounds to me that it would be “simply” a matter for RadioParadise to stream using Rocket Streaming Audio Server (RSAS) - at least the FLAC stream. And no action needed on Roon side.

If we want to workaround this, it is actually quite heavy:

  • need to install our own instance of RSAS
  • then, need to mirror the original RP stream to the newly installed RSAS; this is actually not as simple as for FIP (was icecast -> icecast), so I had to install something called LiquidSoap to do this (well, to be precise, RSAS can mirror another stream but does not allow to modify the metadata).
  • and finally, grab and update the metadata, eg using node-red
    LiquidSoap, besides being a pain to install, is quite heavy and crashed my RPI, so I had to install it on an AWS EC2 instance…
    I’m preparing an how-to, it should take more or less half an hour to install all this.
1 Like

@Sebastien i managed to make it work on an old PI3, under Ubuntu.

I had problems with PM2 it didn’t worked.

I think the overall npm / nodered / pm2 section can be replaced elegantly by the following as described here https://nodered.org/docs/getting-started/raspberrypi

sudo apt install build-essential git
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
sudo systemctl enable nodered.service 

Otherwise all was smooth :slight_smile:

For DietPi there is an issue with the installation of Nodered, I’ll report it to Dan. Once this is fixed, it should work.

1 Like

That was my understanding too, until I came across Mother Earth Radio - ogg/flac using Icecast 2.4.4 with metadata. Try it with VLC or foobar although Roon can’t extract it and stumbles at end of each track.
Status page here

That’s interesting. I spend some time in the source code of the latest version of icecast, and the method used to add the tag is not implemented for ogg format. So no clue how Mother Earth Radio could add metadata, unless if they’ve modified icecast source code maybe…

The server is (or says it is) 2.4.4. I can’t tell what streamer they use to send to the server.

$ curl -H “Icy-MetaData: 1” -v “http://icecast3.streamserver24.com:18800/motherearth

GET /motherearth HTTP/1.1
Host: icecast3.streamserver24.com:18800
User-Agent: curl/7.69.1
Accept: /
Icy-MetaData: 1

  • Mark bundle as not supporting multiuse
  • HTTP 1.0, assume close after body
    < HTTP/1.0 200 OK
    < Server: Icecast 2.4.4
    < Connection: Close
    < Date: Fri, 01 May 2020 12:04:11 GMT
    < Content-Type: application/ogg
    < Cache-Control: no-cache, no-store
    < Expires: Mon, 26 Jul 1997 05:00:00 GMT
    < Pragma: no-cache
    < icy-description:High Resolution Music tuned to 429hz
    < icy-name:Mother Earth Radio
    < icy-pub:1
    < icy-url:http://icecast3.streamserver24.com:18800/motherearth
    <

As promised, the tutorial for “Now Playing” on Radio Paradise is available.
Note that it is quite more complex than for FIP, so it would be great if anyone volunteers to give it a try.

1 Like

Perfect @Sebastien, thank’s a lot ! Node-Red is efficient.

Two questions:

  • Do you know FIP Electro (and others FIP Web Radios) ICECAST and metadata URL’s to add new “relays” and “flows” ?
  • RadioFrance’s metadata platform seems to provide cover art URLs, is there a way for ROON to display them ?

C’est tellement bien que l’on a envie de généraliser et d’enrichir le “Now Playing” avec les pochettes mais il y a peut être des limites techniques et juridiques du coté ROON…

Google translate:

It’s so good that we want to generalize and enrich the “Now Playing” with the covers but there may be technical and legal limits on the ROON side…

Rather than guess, we can check with @danny

Hi,

I have updated my post to include now all FIP webradios I’m aware of. Please have a try :slight_smile:

1 Like

Thank you, @Sebastien. It’s great to have the APIs for all FIP’s webradio. I’m gonna try (first version with FIP only is rock solid !).

Merci Sebastien !
For NodeRed installation: the steps you described didn’t work for me on a Pi3B under Ubuntu 20, see workaround in my last post above…
Good to have all FIPs with metadata now!

+1 , OK with your workaround: https://nodered.org/docs/getting-started/raspberrypi

Here’s a link to all logos, feel free to add in your tutorial.

Thanks Rémi, I have updated my post :slight_smile:

1 Like

`Thanks, backlines are missing so for clarity:

sudo apt install build-essential git
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
sudo systemctl enable nodered.service

For FIP, I installed Icecast on my Synology … but not node-red so I tried to install it on my Roon W10 server.

Everything looks “ok” but I forgot something (?)… no metadata under Roon.
I set the address in flow configuration, IP synology instead of localhost.

So icecast on 192.168.1.101 and node-red on Roon server on 192.168.1.89.

I had changed the password and the IP in the flow but not through the web interface of node-red.
Now… Its good… :wink:

With a simple bat file to launch “node red.js” on Roon server startup.


Icecast on my NAS and Node on my Roon server (w10)

Icecast sur mon NAS et Node sur mon serveur Roon (w10)
Merci Sébastien et Merci Rémi (from zaurux)

So, I looked a bit further, here are my findings.

Icecast is not able to add metadata on FLAC streams.

Each word is important here:
1/ “Add” metadata is not possible, but broadcast metadata already embedded in source FLAC stream is ok -> this is why it works with Motherearth for example (I had a chat with the owner - thanks Florian :wink: )
2/ “on FLAC streams”: actually, Icecast can add metadata on aac and mp3 streams -> this is the “trick” I used for FIP, which is broadcasted in aac

So, what are the options to have Radio Paradise broadcasted in FLAC with metadata ?
1/ Use another server - that’s what I did with RSAS instead of Icecast - RSAS supports embedding metadata on FLAC streams on the fly
2/ RP to tag FLAC streams before broadcasting to Icecast

2 Likes

Thank you @Sebastien, very interesting. This explains why icy-metaint was missing on the Motherearth stream; the Icecast server knew nothing about the metadata.

So why do more stations not do the same? Because it is easier and simpler to provide metadata separately from their audio streams and rely on the Icecast server to deal with it rather than incorporate it directly?

To get stations to alter their Flac streams and incorporate the metadata is going to be hard; easier to get them to use RSAS and (from their point of view) easier still to update Icecast. Do you know if Icecast has such development in mind?

Thanks Sebastien,

Just dumbing it down so I can understand, are 1 and 2 both necessary or are they alternatives ?