XamarinMediaManager
XamarinMediaManager copied to clipboard
How read metadata with crossmediamanager in audio stream ?
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 ?
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
Sorry, don't work.
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
}
Sorry, don't work.
On which OS do you try? I run this on iOS.
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!
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.
`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
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
Nothing. Don't work.
Make a small demo project. I will look into it.
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; }
Thats no demo project... Thats not the url I have posted which i know there is metadata in it...
Encountered this issue on Android.