project-owner / Peppy

Peppy Player Repository
GNU General Public License v3.0
72 stars 14 forks source link

HLS metadata not displayed #21

Closed rustyhodge closed 2 years ago

rustyhodge commented 2 years ago

We are streaming HLS with AAC and FLAC, and metadata is not displayed in your player. We're streaming in fragemented MP4 specifically: https://hlsbook.net/hls-fragmented-mp4/

See https://aomediacodec.github.io/id3-emsg/ for details on the format of the standard metadata and https://id3.org/id3v2.4.0-structure for the structure of it within the segments.

It would be great it you could display the metadata. Thanks

project-owner commented 2 years ago

Hi,

Do you have any example of the stream? I don't see any metadata in the following stream: https://ice6.somafm.com/poptron-128-mp3 Peppy player is using VLC as the audio player. If VLC can get metadata from your stream then more likely the player can get it as well. Right now the only metadata which player can get from radio streams is 'Artist - Song'. That's because many online stations don't provide any metadata at all.

Regards

rustyhodge commented 2 years ago

Sorry, left out that important part. Here are 2 examples of HLS streams with metadata:

FLAC Lossless Stereo (about 1.1mb/sec) https://hls.somafm.com/hls/groovesalad/FLAC/program.m3u8

320k AAC Stereo https://hls.somafm.com/hls/groovesalad/320k/program.m3u8

project-owner commented 2 years ago

OK, using VLC I was able to get only 'codec' information, do you mean that metadata?

image

I couldn't get Artist-Song info:

image

Is it supported in that stream?

rustyhodge commented 2 years ago

Actually, I'm don't think VLC shows the metadata either, it's supposedly coming in the next release.

This web player is pulling the metadata from the stream:

https://somafm.com/hls/gsplayer.html?320k

(Not all browsers play the FLAC)

https://somafm.com/hls/gsplayer.html?flac

If you grab one of the chunks, (I've attached one), you can see the metadata in the beginning if you look at it with hd or a hex viewer.

rustyhodge commented 2 years ago

If you have a recent version of Apple Music running on MacOS 11 (or even Catalina) machine it should play it with the metadata.

You have to go into File -> Open Stream URL -> and put in:

itls://hls.somafm.com/hls//gs-surround/320k/program.m3u8

It seems like metadata in HLS audio streams is poorly supported now.

It would be great if you could get it working in your app.

Thanks!

project-owner commented 2 years ago

VLC supports metadata, here is example for the stream: http://streaming.radiostreamlive.com/radiolovelive_devices

image

'Now Playing' is the property which is used in Peppy player to show Artist-Song info. VLC probably doesn't support metadata for the fragmented streams yet. As I mentioned VLC is the default audio player for Peppy player. Therefore it cannot show the metadata which VLC doesn't support. Peppy itself doesn't parse streams.

rustyhodge commented 2 years ago

VLC supports metadata, here is example for the stream: http://streaming.radiostreamlive.com/radiolovelive_devices

That's an icecast stream, yes, VLC does support that metadata which is very different, it's not the embedded id3v2 that HLS uses.

'Now Playing' is the property which is used in Peppy player to show Artist-Song info. VLC probably doesn't support metadata for the fragmented streams yet. As I mentioned VLC is the default audio player for Peppy player. Therefore it cannot show the metadata which VLC doesn't support.

OK, I missed the part that you were using VLC underneath it. Nevermind. We're talking to someone over there as well.

Sorry about that confusion.

project-owner commented 2 years ago

No Problem. Whenever VLC will start supporting HLS metadata the Peppy player should do the same. Theoretically I can first handle the stream in my own code, get metadata and then pass URL to VLC. Also events (e.g. change track) should be handled somehow. Now I rely on VLC events. So whenever I receive that event I should again get metadata in my code. That's probably doable but that code will be thrown away when VLC will start supporting HLS metadata.