just_audio icon indicating copy to clipboard operation
just_audio copied to clipboard

ICY Metadata - full metadata (and availability for flutter web)

Open dpacchi opened this issue 4 years ago • 13 comments

Is your feature request related to a problem? Please describe. ICY metadata are a great thing when developing a webradio player. Currently the IcyMetadata object contains only a "title" property and not a full list of available metadata (artist, song title, artwork url). Here's an example of the code I'm using and a link to a webradio that correctly streams the artwork image url. StreamBuilder<IcyMetadata?>( stream: _player.icyMetadataStream, builder: (context, snapshot) { if (!snapshot.hasData) { return SizedBox.shrink(); } print(snapshot.data?.info?.title); }, ) ,

https://stream-uk1.radioparadise.com/aac-320

Describe the solution you'd like A Map<String,String> fullMetadata property in the IcyMetadata object. Or all the metadata unpacked in the right properties (artist, song, album artwork) but I think it's best the first solution. And also, it would be a really good thing to have this feature also available for a web player made in flutter.

Describe alternatives you've considered The radio_player package already have artworks support but only for iOS/Android

Additional context Add any other context or screenshots about the feature request here.

dpacchi avatar Sep 29 '21 08:09 dpacchi

I don't know if this is even possible for the web. If you know what browser API supports this, please share.

However, certainly it's on the TODO list to report more metadata on the iOS side. Currently only the Android side is complete.

ryanheise avatar Sep 29 '21 10:09 ryanheise

P.S. That url (https://stream-uk1.radioparadise.com/aac-320) is currently giving a 502.

ryanheise avatar Sep 29 '21 10:09 ryanheise

OK, that URL is working again, so I was able to at least do some testing and fixing on the iOS side, and have the URL metadata now being reported. Before I commit that, I might create a radio example.

Can I ask, is that URL you provided above a public URL that I can use in this example? Since it gave a 502 earlier I'm wondering whether it would be reliable enough to use as an example.

ryanheise avatar Sep 30 '21 12:09 ryanheise

Thanks, that fix is gold ;) I'm not familiar instead about ICY metadata parsing on a webplayer, sorry.

I picked the url from another package published on pub.dev so I think it's public but I don't know for sure.. I used it for some time doing some research and it never gave me 502 so maybe was a temporary issue.

PS. the title is meant to be a single property with the artist and the song title united? Don't you think it would be better to have them separate?

Bye!

dpacchi avatar Sep 30 '21 13:09 dpacchi

I've published the iOS fix on the fix/ios_livestream if you'd like to test it before I publish a release.

ryanheise avatar Oct 01 '21 02:10 ryanheise

@dpacchi have you found the fix/ios_livestream branch to work for you on the iOS front?

ryanheise avatar Oct 04 '21 06:10 ryanheise

Hi, Schermata 2021-10-04 alle 10 51 17

Yes I've tested the ios_livestream branch and it seems ok!

Don't you think it would be useful to have artist name and song in two separate fields?

Thanks

dpacchi avatar Oct 04 '21 08:10 dpacchi

I don't think that format should be assumed by just_audio, and instead it should just report the raw metadata values exactly as they appear under each tag. If your app can make that assumption, it should be OK for your app to parse that format.

ryanheise avatar Oct 04 '21 08:10 ryanheise

Ok thanks

dpacchi avatar Oct 04 '21 09:10 dpacchi

FYI, the URL metadata fix for iOS is now published in release 0.9.13.

As for web, I still don't have any idea of how this can actually be done, so I would encourage you or others to share below any techniques that you find. If it's not possible, I'll close the issue.

ryanheise avatar Oct 10 '21 07:10 ryanheise

Hi, how are you?

I was just wandering if there are any updates on the ICY Metadata stream using just audio in a flutter web application.

I leave you this repo that maybe helps, thanks! https://github.com/TooTallNate/node-icy

dpacchi avatar Oct 20 '22 13:10 dpacchi

Thanks for sharing. The key paragraph in that README is:

A good use case for this module is for HTML5 web apps that host to radio streams; the

Still, an example of that would be helpful. If we are to pipe the clean audio data through to the actual player, that will probably require a Web Audio-based implementation (which just_audio isn't currently based on).

ryanheise avatar Oct 20 '22 13:10 ryanheise