Wowza Community

Shoutcast ID3 metadata on HLS

Hi there seems to be a huge discrepancy with documentation on the matter. It seems when re-streaming a shoutcast stream only RTMP is delivering metadata. ie it is picking up “StreamTitle” from the shoutcast stream and delivering that.

However I have confirmed when trying a HLS stream in flash it is not delivering metadata at all. An ffprobe shows the same thing. I can see the following in the mp3 file and no metadata is delivered.

PRIV: “com.apple.streaming.transportStreamTimestamp

It can be tested easily with JWplayer.

I am not even sure if IOS will pick up said metadata either but about to test that. It needs to check cue changes on timed text tracks, the documentation is out of date !

Just tested on IOS. It does not setup and add inband text tracks.

ie

video.textTracks.addEventListener(‘addTrack’, function(addTrackEvent) {

console.log(“ADD TRACK”);

var track = addTrackEvent.track;

track.addEventListener(‘cuechange’, function(cueChangeEvent) {

console.log(“CUE CHANGE”, cueChangeEvent);

})

});

I guess Wowza is completely stuffed and need to grab metadata from the shoutcast server directly ?

It would be good to know how to process the audio as AAC on HLS. This would make it easy to use such projects as hls.js and mediasource.

Hi,

For shoutcast streams, you will need to modify that module, since if you dump out the AMFDataList string of the incoming shoutcast stream, you may see that the metadata string is tagged with “onMetaData”, while the module is testing for “onTextData”.

if (!metaDataStr.equalsIgnoreCase("onTextData")) break;

Since it does not match, the module is breaking from the loop instead of continuing with adding the text as ID3. If you add a test for onMetaData instead, and use the metadata item for your textData, you should be able to include this as ID3.

Michelle

Hello,

First I want to confirm that this is the article you are following to convert onTextData events to ID3 tags:

https://www.wowza.com/docs/how-to-convert-ontextdata-events-in-a-live-or-vod-stream-to-timed-events-id3-tags-in-an-apple-hls-stream

Next since you mentioned JWplayer I want to be sure you have seen this forum post:

Lastly you can convert your incomng MP3 stream to an AAC stream, or you may want to explore converting to TS chunks for more widespread delivery through the transcoder:

https://www.wowza.com/docs/wowza-transcoder

https://www.wowza.com/docs/how-to-configure-wowza-server-to-stream-audio-only-apple-hls-using-transport-stream

After reviewing these articles if you still need assistance, please let me know, and if possible explain your work-flow / user case in greater detail so I can better assist you.

Regards,

Jason Hatchett

Dear Jason,

I have a shoutcast stream with metadata as input and I am streaming HLS as AAC chunks, but I do not see any metadata information in it.

I added the module ModuleCupertinoLiveOnTextToID3 to convert onTextData events to ID3 tags, but it logs something only onAppStart. The onFillChunkDataPacket callback it is never triggered.

Are you sure shoutcast metadata appear as onTextData, or we should intercept other events?

Please, provide some information of forwarding metadata from shoutcast input to HLS output as stated in the Wowza Guide “Wowza Media Server can also forward embedded SHOUTcast and Icecast metadata,such as song title and artist, to Adobe Flash Player. The SHOUTcast example that’sincluded with the Wowza Media Server installation illustrates these capabilities”.

Hi Jason

can you share this module for me.

thanks.

But currently Exoplayer itself, only parse metadata from HLS streams they get ID3 data from the stream. As you can.Getting metadata from SHOUTcast.So it includes an Extra Header “Icy-Metadata” with value 1 and on response it extracts the metadata from the stream data. and for the help related to the printer go to the Nipson printers customer service and get the help.

Hi Mates !
I hope you all will be doing good.
I am able to get the metadata working for hls, but i am facing a problem that if i publish 2 stream on single application the metadata of streams overlap each others’ metadata, though i am triggering separate process for each stream to get metadata.
Can anyone help me ?
I would really appreciate your help. for your info i am following the methods described above, to get the metadata working perfect for single stream per application.

Hi Zafar,

I’m still struggling to get metadata working on HLS from Icecast?

How can you do that?