XamarinMediaManager icon indicating copy to clipboard operation
XamarinMediaManager copied to clipboard

How read metadata with crossmediamanager in audio stream ?

Open mixernet opened this issue 5 years ago • 14 comments

public async void PlayStream() { var mediaItem = await CrossMediaManager.Current.Play("URL"); mediaItem.MetadataUpdated += (sender, args) => { title = args.MediaItem.Title; }; } Everything works correctly with an mp3 file, while metadata is not received with a streaming stream. Why ?

mixernet avatar Jan 25 '20 14:01 mixernet

Set IsMetadataExtracted after adding the stream url:

var mediaItem = await CrossMediaManager.Current.Play(url);
CrossMediaManager.Current.Queue.Current.IsMetadataExtracted = false;

For more infos you can look at this

Suplanus avatar Jan 28 '20 13:01 Suplanus

Sorry, don't work.

mixernet avatar Jan 28 '20 14:01 mixernet

Sure, this works... but:

Not every stream delivers the information. Try this:

var url = "http://www.rockantenne.de/webradio/channels/heavy-metal.aac.pls";
var mediaItem = await CrossMediaManager.Current.Play(url);
CrossMediaManager.Current.Queue.Current.IsMetadataExtracted = false;
mediaItem.PropertyChanged += MediaItem_PropertyChanged;

You can also check the properties which are changed:

private async void MediaItem_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
    // Do stuff
    // !!! You have to reset IsMetadataExtractedAgain for the next track
}

Suplanus avatar Jan 28 '20 14:01 Suplanus

Sorry, don't work.

mixernet avatar Apr 12 '20 16:04 mixernet

On which OS do you try? I run this on iOS.

Suplanus avatar Apr 14 '20 05:04 Suplanus

My OS is Microsoft Windows 10 Enterprise with Visual Studio 2019 last release and the project is Xamarin Forms for iOS, Android and UWP linked to my MAC for debug and distribution. Many thanks!

mixernet avatar Apr 14 '20 06:04 mixernet

I saw into UWP: there is no implementation to read meta data from stream: https://github.com/Baseflow/XamarinMediaManager/blob/503834460e6e76703dfcfc55b390f65e6131d60a/MediaManager/Platforms/Uap/Media/StorageFileProvider.cs#L15

Android not tested yet.

Suplanus avatar Apr 14 '20 07:04 Suplanus

`public async Task PlayStreamingClassic() { //Stream file mp3 //var mediaItem = await CrossMediaManager.Current.Play("https://play.radiocharlie.it/Playlist/20200226084853/Track01.mp3");

        //Stream flow  radio streaming
        var mediaItem = await CrossMediaManager.Current.Play("https://dreamsiteradiocp3.com/proxy/radiocharlie?mp=/stream");
        mediaItem.MetadataUpdated += MediaItem_MetadataUpdated;
        lblArtistaTitolo.Text = mediaItem.DisplaySubtitle + " - " + mediaItem.DisplayTitle;         
    }

    private void MediaItem_MetadataUpdated(object sender, MediaManager.Media.MetadataChangedEventArgs e)
    {
        lblArtistaTitolo.Text = e.MediaItem.DisplaySubtitle + " - " + e.MediaItem.DisplayTitle;
    }`

With mp3 file work correctly, but with radio stream no.

Many thanks for your support

mixernet avatar Apr 14 '20 10:04 mixernet

I posted you the problem: Local files are different to streams.

Test this url stream with iOS as target: http://www.rockantenne.de/webradio/channels/heavy-metal.aac.pls

Suplanus avatar Apr 14 '20 10:04 Suplanus

Nothing. Don't work.

mixernet avatar Apr 21 '20 14:04 mixernet

Make a small demo project. I will look into it.

Suplanus avatar Apr 21 '20 18:04 Suplanus

public async Task PlayStreamingClassic() { var mediaItem = await CrossMediaManager.Current.Play("https://dreamsiteradiocp3.com/proxy/radiocharlie?mp=/stream"); CrossMediaManager.Current.Queue.Current.IsMetadataExtracted = false; mediaItem.MetadataUpdated += MediaItem_MetadataUpdated; }

private void MediaItem_MetadataUpdated(object sender, MediaManager.Media.MetadataChangedEventArgs e) { lblArtistaTitolo.Text = e.MediaItem.Title; }

mixernet avatar Apr 21 '20 19:04 mixernet

Thats no demo project... Thats not the url I have posted which i know there is metadata in it...

Suplanus avatar Apr 21 '20 19:04 Suplanus

Encountered this issue on Android.

gogolon avatar Jun 11 '20 16:06 gogolon