# Shoutcast ID3 metadata on HLS

**URL:** <https://community.wowza.com/t/shoutcast-id3-metadata-on-hls/117>\
**Category:** Wowza Streaming Engine\
**Created:** [February 21, 2016, 7:55am UTC](https://community.wowza.com/t/shoutcast-id3-metadata-on-hls/117 "2016-02-21T07:55:40Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![system](https://sea2.discourse-cdn.com/flex002/user_avatar/community.wowza.com/system/32/447_2.png) [@system](https://community.wowza.com/u/system)\
**Post date:** [February 21, 2016, 7:55am UTC](https://community.wowza.com/t/shoutcast-id3-metadata-on-hls/117/1 "2016-02-21T07:55:40Z")

</div>

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 !

---

<div class="post-metadata">

**Author:** ![dan\_electro](https://avatars.discourse-cdn.com/v4/letter/d/9e8a1a/32.png) [@dan\_electro](https://community.wowza.com/u/dan_electro)\
**Post date:** [February 21, 2016, 8:33am UTC](https://community.wowza.com/t/shoutcast-id3-metadata-on-hls/117/2 "2016-02-21T08:33:39Z")

</div>

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 ?

---

<div class="post-metadata">

**Author:** ![dan\_electro](https://avatars.discourse-cdn.com/v4/letter/d/9e8a1a/32.png) [@dan\_electro](https://community.wowza.com/u/dan_electro)\
**Post date:** [February 21, 2016, 8:41am UTC](https://community.wowza.com/t/shoutcast-id3-metadata-on-hls/117/3 "2016-02-21T08:41:54Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Michelle\_B](https://sea2.discourse-cdn.com/flex002/user_avatar/community.wowza.com/michelle_b/32/394_2.png) [@Michelle\_B](https://community.wowza.com/u/Michelle_B)\
**Post date:** [November 2, 2016, 6:34pm UTC](https://community.wowza.com/t/shoutcast-id3-metadata-on-hls/117/4 "2016-11-02T18:34:03Z")

</div>

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”.

```auto
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

---

<div class="post-metadata">

**Author:** ![Jason\_Hatchett](https://sea2.discourse-cdn.com/flex002/user_avatar/community.wowza.com/jason_hatchett/32/391_2.png) [@Jason\_Hatchett](https://community.wowza.com/u/Jason_Hatchett)\
**Post date:** [May 3, 2016, 2:56am UTC](https://community.wowza.com/t/shoutcast-id3-metadata-on-hls/117/5 "2016-05-03T02:56:32Z")

</div>

Hello,

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

> **[Convert AMF timed metadata 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)**
>
> Convert AMF timed metadata in live, VOD, or nDVR streams to ID3 tags for Apple HLS delivery using the Wowza Streaming Engine Java API.

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

> [@How to display metadata using HLS streaming](http://community.wowza.com/t/-/41572):
>
> Hi I used jw player and wowza to show metadata in rtmp stream. i would like to show metadata in hls stream. i have followed the link : How to add ID3 tags into a iOS stream when onTextData events are found [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](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) How to debug the events on an iOS device [https://www.wowza.com/docs/how-to-use-imediastreamactionnotify3-interface-to-listen-for-rtmp-stream-events-includes-c…](https://www.wowza.com/docs/how-to-use-imediastreamactionnotify3-interface-to-listen-for-rtmp-stream-events-includes-codec-info)

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:

> **[Transcode and transrate streams](https://www.wowza.com/docs/wowza-transcoder)**
>
> Use Transcoder to transcode and transrate content in Wowza Streaming Engine.

> **[Stream audio-only HLS using TS chunks](https://www.wowza.com/docs/how-to-configure-wowza-server-to-stream-audio-only-apple-hls-using-transport-stream)**
>
> Configure Wowza Streaming Engine to packetize audio-only Apple HLS streams using TS chunks so they can play on non-Apple players.

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

---

<div class="post-metadata">

**Author:** ![Antonio\_Servetti](https://avatars.discourse-cdn.com/v4/letter/a/e19adc/32.png) [@Antonio\_Servetti](https://community.wowza.com/u/Antonio_Servetti)\
**Post date:** [September 19, 2016, 3:45pm UTC](https://community.wowza.com/t/shoutcast-id3-metadata-on-hls/117/6 "2016-09-19T15:45:39Z")

</div>

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”.

---

<div class="post-metadata">

**Author:** ![ceyhun\_ceyhun](https://avatars.discourse-cdn.com/v4/letter/c/7bcc69/32.png) [@ceyhun\_ceyhun](https://community.wowza.com/u/ceyhun_ceyhun)\
**Post date:** [March 29, 2018, 3:45pm UTC](https://community.wowza.com/t/shoutcast-id3-metadata-on-hls/117/7 "2018-03-29T15:45:34Z")

</div>

Hi Jason

can you share this module for me.

thanks.

---

<div class="post-metadata">

**Author:** ![stefnie\_kayelle](https://avatars.discourse-cdn.com/v4/letter/s/7ba0ec/32.png) [@stefnie\_kayelle](https://community.wowza.com/u/stefnie_kayelle)\
**Post date:** [April 2, 2018, 4:51pm UTC](https://community.wowza.com/t/shoutcast-id3-metadata-on-hls/117/8 "2018-04-02T16:51:24Z")

</div>

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](https://babasupport.org/printer/nipson-printers-customer-service/633) and get the help.

---

<div class="post-metadata">

**Author:** ![Shoaib\_Zafar](https://avatars.discourse-cdn.com/v4/letter/s/e47c2d/32.png) [@Shoaib\_Zafar](https://community.wowza.com/u/Shoaib_Zafar)\
**Post date:** [April 17, 2018, 3:46pm UTC](https://community.wowza.com/t/shoutcast-id3-metadata-on-hls/117/9 "2018-04-17T15:46:25Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Raphon\_Napitupulu](https://avatars.discourse-cdn.com/v4/letter/r/bc8723/32.png) [@Raphon\_Napitupulu](https://community.wowza.com/u/Raphon_Napitupulu)\
**Post date:** [May 19, 2018, 7:19pm UTC](https://community.wowza.com/t/shoutcast-id3-metadata-on-hls/117/10 "2018-05-19T19:19:16Z")

</div>

Hi Zafar,

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

How can you do that?
