protected override async void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); TrackObject o = (TrackObject)e.Parameter; if (o == null) { o = MainPage.currentSong; this.songArtist.Text = o.trackArtistName; this.songTitle.Text = o.trackTitle; this.songArtwork.Source = o.albumCoverImage; this.songAlbumArtistName.Text = o.album.artist.name; this.songAlbumName.Text = o.album.name; await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { Uri webLink = new Uri(o.trackStreamURL); MediaPlaybackItem song = new MediaPlaybackItem(MediaSource.CreateFromUri(webLink)); MediaItemDisplayProperties props = song.GetDisplayProperties(); props.Type = MediaPlaybackType.Music; props.MusicProperties.Title = o.trackTitle; props.MusicProperties.Artist = o.trackArtistName; props.MusicProperties.Genres.Add(o.track.genreprimary); props.MusicProperties.Genres.Add(o.track.genresecondary); props.Thumbnail = RandomAccessStreamReference.CreateFromUri(new Uri(o.albumCoverURL)); song.ApplyDisplayProperties(props); mediaPlayer.Source = song; MainPage.nowPlaying.Text = "Now Playing: \"" + o.trackArtistName + " ~ " + o.trackTitle + "\""; }); } else { this.songArtist.Text = o.trackArtistName; this.songTitle.Text = o.trackTitle; this.songArtwork.Source = o.albumCoverImage; this.songAlbumArtistName.Text = o.album.artist.name; this.songAlbumName.Text = o.album.name; await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { if (MainPage.currentSong != o) { MainPage.currentSong = o; Uri webLink = new Uri(o.trackStreamURL); MediaPlaybackItem song = new MediaPlaybackItem(MediaSource.CreateFromUri(webLink)); MediaItemDisplayProperties props = song.GetDisplayProperties(); props.Type = MediaPlaybackType.Music; props.MusicProperties.Title = o.trackTitle; props.MusicProperties.Artist = o.trackArtistName; props.MusicProperties.Genres.Add(o.track.genreprimary); props.MusicProperties.Genres.Add(o.track.genresecondary); props.Thumbnail = RandomAccessStreamReference.CreateFromUri(new Uri(o.albumCoverURL)); song.ApplyDisplayProperties(props); mediaPlayer.Source = song; MainPage.nowPlaying.Text = "Now Playing: \"" + o.trackArtistName + " ~ " + o.trackTitle + "\""; } }); } }
public void LoadPlayingFile(HyPlayItem mpi) { if (mpi == null) { return; } MediaItemDisplayProperties dp = mpi.MediaItem.GetDisplayProperties(); AudioInfo ai = mpi.AudioInfo; Invoke((() => { TbSingerName.Text = ai.Artist; TbSongName.Text = ai.SongName; AlbumImage.Source = mpi.ItemType == HyPlayItemType.Local ? ai.BitmapImage : new BitmapImage(new Uri(ai.Picture)); SliderAudioRate.Value = HyPlayList.Player.Volume * 100; SliderProgress.Minimum = 0; SliderProgress.Maximum = ai.LengthInMilliseconds; if (mpi.isOnline) { BtnLike.IsChecked = Common.LikedSongs.Contains(mpi.NcPlayItem.sid); } ListBoxPlayList.SelectedIndex = HyPlayList.NowPlaying; })); }
private async Task UpdateSystemMediaTransportControlsAndThumbnail(LibraryItem libraryItemToPlay, MediaPlaybackItem mediaPlaybackItem, StorageFile fileWithThumbnail = null) { MediaItemDisplayProperties props = mediaPlaybackItem.GetDisplayProperties(); props.Type = Windows.Media.MediaPlaybackType.Music; props.MusicProperties.Title = libraryItemToPlay.Name; if (libraryItemToPlay.Artist != null) { props.MusicProperties.Artist = libraryItemToPlay.Artist; } if (libraryItemToPlay.Album != null) { props.MusicProperties.AlbumTitle = libraryItemToPlay.Album; } if (fileWithThumbnail != null) { StorageItemThumbnail thumbnail = await GetAndSetThumbnail(fileWithThumbnail); if (thumbnail != null) { props.Thumbnail = RandomAccessStreamReference.CreateFromStream(thumbnail); } } mediaPlaybackItem.ApplyDisplayProperties(props); }
public static void CreateMediaPlaybackList(List <string> musicList, int fromVol, int selectedMusic, List <string> titleList) { mpl.Items.Clear(); PlayPage.fromVol = fromVol; PlayPage.musicList.Clear(); for (int i = 0; i < musicList.Count; i++) { PlayPage.musicList.Add(musicList[i]); PlayPage.titleList.Add(titleList[i]); } PlayPage.selectedMusic = selectedMusic; for (int i = 0; i < musicList.Count; i++) { mpl.Items.Add(new MediaPlaybackItem(MediaSource.CreateFromUri(new Uri("http://mp3-cdn.luoo.net/low/luoo/radio" + fromVol + "/" + musicList[i] + ".mp3")))); } for (int i = 0; i < mpl.Items.Count; i++) { MediaItemDisplayProperties props = mpl.Items[i].GetDisplayProperties(); props.Type = Windows.Media.MediaPlaybackType.Music; props.MusicProperties.Title = titleList[i]; mpl.Items[i].ApplyDisplayProperties(props); } mpl.StartingItem = mpl.Items[selectedMusic]; mpl.AutoRepeatEnabled = true; mp.AudioCategory = MediaPlayerAudioCategory.Media; mp.Source = mpl; mpl.ItemFailed += Mpl_ItemFailed; timer.Start(); }
private async void SingerHotSongList_CurrentItemChanged(MediaPlaybackList sender, CurrentMediaPlaybackItemChangedEventArgs args) { uint CurrentIndex = sender.CurrentItemIndex; if (CurrentIndex == 4294967295) { return; } await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() => { if (MediaControl.MediaPlayer.Source == MediaPlayList.SingerHotSongList && MediaPlayList.HotSongBackup.Count > 0) { SearchSingleMusic music = MediaPlayList.HotSongBackup[Convert.ToInt32(CurrentIndex)]; var SongSearchResult = await NeteaseMusicAPI.GetInstance().SearchAsync <SingleMusicSearchResult>(music.MusicName, 5, 0, NeteaseMusicAPI.SearchType.Song); foreach (var Song in SongSearchResult.Result.Songs.Where(Song => Song.Name == music.MusicName && Song.Al.Name == music.Album).Select(Song => Song)) { var bitmap = new BitmapImage(); PicturePlaying.Source = bitmap; bitmap.UriSource = new Uri(Song.Al.PicUrl); break; } MediaItemDisplayProperties Props = args.NewItem.GetDisplayProperties(); Props.Type = Windows.Media.MediaPlaybackType.Music; Props.MusicProperties.Title = music.MusicName; Props.MusicProperties.Artist = music.Album; args.NewItem.ApplyDisplayProperties(Props); } }); }
private async Task <bool> PreparePlayback(string text, bool easter) { bool done = false; SpeechSynthesisStream synthStream = await synth.SynthesizeTextToStreamAsync(text); MediaSource mediaSource = MediaSource.CreateFromStream(synthStream, "audio"); MediaPlaybackItem playbackItem = new MediaPlaybackItem(mediaSource); MediaItemDisplayProperties mediaProps = playbackItem.GetDisplayProperties(); mediaProps.Type = MediaPlaybackType.Music; mediaProps.MusicProperties.Artist = "Talkinator"; // TODO Get name of selected Voice and paste it as Talkinator 'Bob' mediaProps.MusicProperties.Title = "Spoken text"; //mediaProps.MusicProperties.Genres.Add("Speech"); playbackItem.ApplyDisplayProperties(mediaProps); _player.SystemMediaTransportControls.IsEnabled = true; _player.Source = playbackItem; if (easter == false) { if (_loopEnabled == true) { _player.IsLoopingEnabled = true; } } _player.AutoPlay = true; _player.MediaEnded += _player_MediaEnded; done = true; return(done); }
private static void LoadSystemPlayBar(int index) { if (index >= List.Count) { return; } HyPlayItem hpi = List[index]; AudioInfo ai = hpi.AudioInfo; //然后设置播放相关属性 MediaItemDisplayProperties properties = PlaybackList.Items[index].GetDisplayProperties(); properties.Type = MediaPlaybackType.Music; properties.MusicProperties.AlbumTitle = ai.Album; properties.MusicProperties.Artist = ai.Artist; properties.MusicProperties.Title = ai.SongName; try { if (hpi.isOnline) { properties.Thumbnail = RandomAccessStreamReference.CreateFromUri(new Uri(hpi.NcPlayItem.Album.cover + "?param=" + StaticSource.PICSIZE_AUDIO_PLAYER_COVER)); } else { properties.Thumbnail = ai.Thumbnail; } } catch { } hpi.MediaItem.ApplyDisplayProperties(properties); }
private async void PlayMediaPlaybackItem() { //Create a new picker FileOpenPicker filePicker = new FileOpenPicker(); //make a collection of all video types you want to support (for testing we are adding just 3). string[] fileTypes = new string[] { ".wmv", ".mp4", ".mkv" }; //Add your fileTypes to the FileTypeFilter list of filePicker. foreach (string fileType in fileTypes) { filePicker.FileTypeFilter.Add(fileType); } //Set picker start location to the video library filePicker.SuggestedStartLocation = PickerLocationId.VideosLibrary; //Retrieve file from picker StorageFile file = await filePicker.PickSingleFileAsync(); if (!(file is null)) { // <SnippetPlayMediaPlaybackItem> _mediaSource = MediaSource.CreateFromStorageFile(file); _mediaPlaybackItem = new MediaPlaybackItem(_mediaSource); _mediaPlaybackItem.AudioTracksChanged += PlaybackItem_AudioTracksChanged; _mediaPlaybackItem.VideoTracksChanged += MediaPlaybackItem_VideoTracksChanged; _mediaPlaybackItem.TimedMetadataTracksChanged += MediaPlaybackItem_TimedMetadataTracksChanged; _mediaPlayer = new MediaPlayer(); _mediaPlayer.Source = _mediaPlaybackItem; mediaPlayerElement.SetMediaPlayer(_mediaPlayer); // </SnippetPlayMediaPlaybackItem> } if (!(_mediaPlaybackItem is null)) { var mediaPlaybackItem = _mediaPlaybackItem; // <SnippetSetVideoProperties> MediaItemDisplayProperties props = mediaPlaybackItem.GetDisplayProperties(); props.Type = Windows.Media.MediaPlaybackType.Video; props.VideoProperties.Title = "Video title"; props.VideoProperties.Subtitle = "Video subtitle"; props.VideoProperties.Genres.Add("Documentary"); mediaPlaybackItem.ApplyDisplayProperties(props); // </SnippetSetVideoProperties> // <SnippetSetMusicProperties> props = mediaPlaybackItem.GetDisplayProperties(); props.Type = Windows.Media.MediaPlaybackType.Music; props.MusicProperties.Title = "Song title"; props.MusicProperties.Artist = "Song artist"; props.MusicProperties.Genres.Add("Polka"); mediaPlaybackItem.ApplyDisplayProperties(props); // </SnippetSetMusicProperties> } }
private async void FontIcon_PointerPressed(object sender, PointerRoutedEventArgs e) { FontIcon FI = sender as FontIcon; SingleMusicControl.SelectedItem = ((FontIcon)sender).DataContext; SearchSingleMusic SSM = SingleMusicList[SingleMusicControl.SelectedIndex]; if (((SolidColorBrush)FI.Foreground).Color == Colors.White) { string MusicURL = (await NetEaseMusic.GetSongsUrlAsync(SingleMusicList[SingleMusicControl.SelectedIndex].SongID)).Data[0].Url; if (MusicURL == null) { ContentDialog dialog = new ContentDialog { Title = "抱歉", Content = "当前歌曲暂时无法播放", CloseButtonText = "确定", Background = Application.Current.Resources["DialogAcrylicBrush"] as Brush }; await dialog.ShowAsync(); return; } FI.Glyph = "\uEB52"; FI.Foreground = new SolidColorBrush(Colors.Red); MusicList.ThisPage.FavouriteMusicCollection.Add(new PlayList(SSM.MusicName, SSM.Artist, SSM.Album, SSM.Duration, SSM.ImageUrl, SSM.SongID[0], SSM.MVid)); MediaPlaybackItem Item = new MediaPlaybackItem(MediaSource.CreateFromUri(new Uri(MusicURL))); MediaItemDisplayProperties Props = Item.GetDisplayProperties(); Props.Type = Windows.Media.MediaPlaybackType.Music; Props.MusicProperties.Title = SSM.MusicName; Props.MusicProperties.Artist = SSM.Artist; Item.ApplyDisplayProperties(Props); MediaPlayList.FavouriteSongList.Items.Add(Item); await SQLite.GetInstance().SetMusicDataAsync(SSM.MusicName, SSM.Artist, SSM.Album, SSM.Duration, SSM.ImageUrl, SSM.SongID[0], SSM.MVid); } else { FI.Glyph = "\uEB51"; FI.Foreground = new SolidColorBrush(Colors.White); for (int i = 0; i < MusicList.ThisPage.FavouriteMusicCollection.Count; i++) { if (MusicList.ThisPage.FavouriteMusicCollection[i].SongID == SSM.SongID[0]) { await SQLite.GetInstance().DeleteMusicAsync(MusicList.ThisPage.FavouriteMusicCollection[i]); MusicList.ThisPage.FavouriteMusicCollection.RemoveAt(i); MediaPlayList.FavouriteSongList.Items.RemoveAt(i); break; } } } }
private async void PlayAll_Click(object sender, RoutedEventArgs e) { bool ExistCannotPlay = false; if (MediaPlayList.AlbumSongList.Items.Count != 0) { MediaPlayList.AlbumSongBackup.Clear(); MediaPlayList.AlbumSongList.Items.Clear(); } MusicPage.ThisPage.MediaControl.AutoPlay = true; MusicPage.ThisPage.MediaControl.MediaPlayer.Source = MediaPlayList.AlbumSongList; foreach (SearchSingleMusic item in AlbumCollection) { MediaPlayList.AlbumSongBackup.Add(new SearchSingleMusic(item.MusicName, item.Artist, item.Album, item.Duration, item.SongID[0], item.ImageUrl, item.MVid)); string uri = (await NeteaseMusicAPI.GetInstance().GetSongsUrlAsync(item.SongID)).Data[0].Url; if (uri == null) { ExistCannotPlay = true; continue; } //采用延迟加载技术,仅当该歌曲处于即将播放状态时才调用Binder_Binding加载资源 MediaBinder binder = new MediaBinder { Token = uri }; binder.Binding += Binder_Binding; MediaPlaybackItem Item = new MediaPlaybackItem(MediaSource.CreateFromMediaBinder(binder)); //与系统的SMTC集成 MediaItemDisplayProperties Props = Item.GetDisplayProperties(); Props.Type = Windows.Media.MediaPlaybackType.Music; Props.MusicProperties.Title = item.MusicName; Props.MusicProperties.Artist = item.Album; Item.ApplyDisplayProperties(Props); MediaPlayList.AlbumSongList.Items.Add(Item); } if (ExistCannotPlay) { ExistCannotPlay = false; ContentDialog dialog = new ContentDialog { Title = "抱歉", Content = "部分歌曲暂时无法播放,已自动忽略", CloseButtonText = "确定", Background = Application.Current.Resources["DialogAcrylicBrush"] as Brush }; await dialog.ShowAsync(); } }
private async Task Initialize() { using (IRandomAccessStream Stream = await MediaFile.GetRandomAccessStreamFromFileAsync(FileAccessMode.Read).ConfigureAwait(true)) { Source = MediaSource.CreateFromStream(Stream, MIMEDictionary[MediaFile.Type.ToLower()]); MediaPlaybackItem Item = new MediaPlaybackItem(Source); switch (MediaFile.Type.ToLower()) { case ".mp3": case ".flac": case ".wma": case ".m4a": { MusicCover.Visibility = Visibility.Visible; MediaItemDisplayProperties Props = Item.GetDisplayProperties(); Props.Type = Windows.Media.MediaPlaybackType.Music; Props.MusicProperties.Title = MediaFile.DisplayName; Props.MusicProperties.AlbumArtist = GetArtist(); Item.ApplyDisplayProperties(Props); if (await GetMusicCoverAsync().ConfigureAwait(true) is BitmapImage Thumbnail) { Cover.Source = Thumbnail; Cover.Visibility = Visibility.Visible; } else { Cover.Visibility = Visibility.Collapsed; } Display.Text = $"{Globalization.GetString("Media_Tip_Text")} {MediaFile.DisplayName}"; MVControl.Source = Item; break; } default: { MusicCover.Visibility = Visibility.Collapsed; MediaItemDisplayProperties Props = Item.GetDisplayProperties(); Props.Type = Windows.Media.MediaPlaybackType.Video; Props.VideoProperties.Title = MediaFile.DisplayName; Item.ApplyDisplayProperties(Props); MVControl.Source = Item; break; } } } }
private async void BtnPlay_ClickAsync(object sender, RoutedEventArgs e) { if (!User.IsLogIn()) { await new ContentDialog { Title = "Информация", Content = "Авторизуйтесь в системе для получения возможности прослушивания песен", PrimaryButtonText = "ОК" }.ShowAsync(); return; } _mediaElement.MediaPlayer.Pause(); IRandomAccessStream src = null; await Task.Run(() => { App app = Application.Current as App; try { using (SqlConnection connection = new SqlConnection(app.GetConnectionString())) { connection.Open(); SqlCommand cmd = connection.CreateCommand(); cmd.CommandText = string.Format(DBQueryCollection.QUERY_FOR_MUSIC_SRC, _track.SrcId.ToString()); using (SqlDataReader reader = cmd.ExecuteReader()) { reader.Read(); src = WindowsRuntimeStreamExtensions.AsRandomAccessStream(reader.GetStream(0)); } } } catch (Exception) { ShowErrorDialog(); return; } }); MediaSource mediaSource = MediaSource.CreateFromStream(src, "MPEG"); MediaPlaybackItem mediaPlaybackItem = new MediaPlaybackItem(mediaSource); MediaItemDisplayProperties props = mediaPlaybackItem.GetDisplayProperties(); props.Type = Windows.Media.MediaPlaybackType.Music; props.MusicProperties.Artist = _track.Artist.Name; props.MusicProperties.AlbumTitle = _track.Album.Name; props.MusicProperties.Title = _track.Name; mediaPlaybackItem.ApplyDisplayProperties(props); _mediaElement.MediaPlayer.Source = mediaPlaybackItem; _mediaElement.MediaPlayer.Play(); }
public static async Task <MediaPlaybackItem> CreateMediaPlaybackItemAsync(StorageFile song) { MediaPlaybackItem item = new MediaPlaybackItem(MediaSource.CreateFromStorageFile(song)); MediaItemDisplayProperties properties = item.GetDisplayProperties(); MusicProperties musicProperties = await song.Properties.GetMusicPropertiesAsync(); properties.Type = Windows.Media.MediaPlaybackType.Music; properties.MusicProperties.Artist = musicProperties.Artist; properties.MusicProperties.Title = musicProperties.Title; item.ApplyDisplayProperties(properties); return(item); }
private async void PlayMediaPlaybackItem() { //Create a new picker FileOpenPicker filePicker = new FileOpenPicker(); //Add filetype filters. In this case wmv and mp4. filePicker.FileTypeFilter.Add(".wmv"); filePicker.FileTypeFilter.Add(".mp4"); filePicker.FileTypeFilter.Add(".mkv"); //Set picker start location to the video library filePicker.SuggestedStartLocation = PickerLocationId.VideosLibrary; //Retrieve file from picker StorageFile file = await filePicker.PickSingleFileAsync(); //<SnippetPlayMediaPlaybackItem> _mediaSource = MediaSource.CreateFromStorageFile(file); _mediaPlaybackItem = new MediaPlaybackItem(_mediaSource); _mediaPlaybackItem.AudioTracksChanged += PlaybackItem_AudioTracksChanged; _mediaPlaybackItem.VideoTracksChanged += MediaPlaybackItem_VideoTracksChanged; _mediaPlaybackItem.TimedMetadataTracksChanged += MediaPlaybackItem_TimedMetadataTracksChanged; _mediaPlayer = new MediaPlayer(); _mediaPlayer.Source = _mediaPlaybackItem; mediaPlayerElement.SetMediaPlayer(_mediaPlayer); //</SnippetPlayMediaPlaybackItem> var mediaPlaybackItem = _mediaPlaybackItem; //<SnippetSetVideoProperties> MediaItemDisplayProperties props = mediaPlaybackItem.GetDisplayProperties(); props.Type = Windows.Media.MediaPlaybackType.Video; props.VideoProperties.Title = "Video title"; props.VideoProperties.Subtitle = "Video subtitle"; props.VideoProperties.Genres.Add("Documentary"); mediaPlaybackItem.ApplyDisplayProperties(props); //</SnippetSetVideoProperties> //<SnippetSetMusicProperties> props = mediaPlaybackItem.GetDisplayProperties(); props.Type = Windows.Media.MediaPlaybackType.Music; props.MusicProperties.Title = "Song title"; props.MusicProperties.Artist = "Song artist"; props.MusicProperties.Genres.Add("Polka"); mediaPlaybackItem.ApplyDisplayProperties(props); //</SnippetSetMusicProperties> }
public async Task <MediaPlaybackItem> ToPlaybackItem() { // Create the media source from the Uri var source = MediaSource.CreateFromUri(MediaUri); // Create a configurable playback item backed by the media source var playbackItem = new MediaPlaybackItem(source); MediaItemDisplayProperties displayProperties = playbackItem.GetDisplayProperties(); displayProperties.Type = MediaPlaybackType.Music; displayProperties.MusicProperties.Title = this.Title; playbackItem.ApplyDisplayProperties(displayProperties); return(playbackItem); }
private void BuildMediaPlaybackList() { // 建立 MediaPlaybackList,並設定 MusicProperties,讓 SMTC 更新 UI for (int i = 1; i < 5; i++) { MediaSource source = MediaSource.CreateFromUri(new Uri($"{Package.Current.InstalledLocation.Path}/WPFAndUWPSample/Assets/mp3/0{i}.mp3", UriKind.RelativeOrAbsolute)); MediaPlaybackItem item = new MediaPlaybackItem(source); MediaItemDisplayProperties displayProperty = item.GetDisplayProperties(); displayProperty.Type = MediaPlaybackType.Music; displayProperty.MusicProperties.Title = $"0{i}.mp3"; displayProperty.MusicProperties.AlbumArtist = "JJ"; displayProperty.Thumbnail = RandomAccessStreamReference.CreateFromUri(new Uri($"{Package.Current.InstalledLocation.Path}/WPFAndUWPSample/Assets/mp3/0{i}.jpg"));; item.ApplyDisplayProperties(displayProperty); MediaPlaybackList.Items.Add(item); } }
/// <summary> /// Updates the UI with the information of the currently playing track /// </summary> public async Task UpdateUI() { if (Settings.repeatEnabled) { Repeat.Visibility = Visibility.Collapsed; RepeatEnabled.Visibility = Visibility.Visible; } if (Settings.shuffleEnabled) { Shuffle.Visibility = Visibility.Collapsed; ShuffleEnabled.Visibility = Visibility.Visible; } if (App.playbackService.currentlyPlayingItem != null) { MediaItemDisplayProperties displayProperties = App.playbackService.currentlyPlayingItem.GetDisplayProperties(); TrackName.Text = displayProperties.MusicProperties.Title; TrackArtist.Text = displayProperties.MusicProperties.AlbumTitle; if (displayProperties.Thumbnail != null) { IRandomAccessStreamWithContentType thumbnail = await displayProperties.Thumbnail.OpenReadAsync(); BitmapImage bitmapImage = new BitmapImage(); bitmapImage.SetSource(thumbnail); AlbumArt.Source = bitmapImage; } if (App.playbackService.Player.PlaybackSession.PlaybackState == MediaPlaybackState.Playing) { Play.Visibility = Visibility.Collapsed; uiUpdateTimer.Start(); } else { Pause.Visibility = Visibility.Collapsed; } UpdateProgressUI(); LoadingTrack.IsActive = false; } else if (loading) { SetLoadingActive(true); } else { LoadingTrack.IsActive = false; } }
private static void Mpl_ItemFailed(MediaPlaybackList sender, MediaPlaybackItemFailedEventArgs args) { mp.Pause(); mpl.Items.Clear(); for (int i = 0; i < musicList.Count; i++) { mpl.Items.Add(new MediaPlaybackItem(MediaSource.CreateFromUri(new Uri("http://mp3-cdn.luoo.net/low/luoo/radio" + fromVol + "/" + Int32.Parse(musicList[i]).ToString("0") + ".mp3")))); } for (int i = 0; i < mpl.Items.Count; i++) { MediaItemDisplayProperties props = mpl.Items[i].GetDisplayProperties(); props.Type = Windows.Media.MediaPlaybackType.Music; props.MusicProperties.Title = titleList[i]; mpl.Items[i].ApplyDisplayProperties(props); } mp.Play(); //throw new NotImplementedException(); }
private async Task <bool> PreparePlayback() { IsPreparing = true; // Create an audio stream of the text SpeechSynthesisStream synthStream; // Check if any text has been entered, otherwise play a secret message if (Text == "") { // Randomize Text SetSecretText(); synthStream = await _speechSynthesizer.SynthesizeTextToStreamAsync(SecretText); } else { synthStream = await _speechSynthesizer.SynthesizeTextToStreamAsync(Text); } MediaSource mediaSource = MediaSource.CreateFromStream(synthStream, "audio"); // Now make a PlaybackItem from this stream MediaPlaybackItem playbackItem = new MediaPlaybackItem(mediaSource); // Now set the properties of this PlaybackItem MediaItemDisplayProperties mediaProperties = playbackItem.GetDisplayProperties(); mediaProperties.Type = MediaPlaybackType.Music; mediaProperties.MusicProperties.Artist = ("Talkinator " + ResourceExtensions.GetLocalized("VoicedBy") + " " + SelectedVoice.VoiceName); mediaProperties.MusicProperties.Title = ResourceExtensions.GetLocalized("SpokenText"); playbackItem.ApplyDisplayProperties(mediaProperties); // Set this to enabled to make sure the info entered above will be shown in the System UI _mediaPlayer.SystemMediaTransportControls.IsEnabled = true; // Set the created item as a Source into the MediaPlayer _mediaPlayer.Source = playbackItem; // #TODO: Implement AutoPlay as well? Need to test their importance first _mediaPlayer.MediaEnded += _mediaPlayer_MediaEnded; // #TODO: Reimplement easter eggs IsPreparing = false; return(true); }
private void BuildMediaPlaybackList() { for (int i = 1; i < 5; i++) { string file = $"ms-appx:///Assets/mp3/0{i}.mp3"; MediaSource source = MediaSource.CreateFromUri(new Uri(file, UriKind.RelativeOrAbsolute)); MediaPlaybackItem item = new MediaPlaybackItem(source); MediaItemDisplayProperties displayProperty = item.GetDisplayProperties(); displayProperty.Type = MediaPlaybackType.Music; displayProperty.MusicProperties.Title = $"0{i}.mp3"; displayProperty.MusicProperties.AlbumArtist = "JJ"; displayProperty.Thumbnail = RandomAccessStreamReference.CreateFromUri(new Uri($"ms-appx:///Assets/mp3/0{i}.jpg", UriKind.RelativeOrAbsolute)); item.ApplyDisplayProperties(displayProperty); PlaybackList.Add(new MediaPlaybackItemDataWrapper(item)); MediaPlaybackList.Items.Add(item); } }
private async void USBMediaPlayer_Loaded(object sender, RoutedEventArgs e) { if (MediaFile.FileType == ".mp3" || MediaFile.FileType == ".flac" || MediaFile.FileType == ".wma" || MediaFile.FileType == ".m4a" || MediaFile.FileType == ".alac") { MusicCover.Visibility = Visibility.Visible; var Artist = GetMusicCoverAsync(); MediaPlaybackItem Item = new MediaPlaybackItem(MediaSource.CreateFromStorageFile(MediaFile)); MediaItemDisplayProperties Props = Item.GetDisplayProperties(); //若为音乐此处必须设定为Music Props.Type = Windows.Media.MediaPlaybackType.Music; Props.MusicProperties.Title = MediaFile.DisplayName; try { Props.MusicProperties.AlbumArtist = await Artist; } catch (Exception) { Cover.Visibility = Visibility.Collapsed; } Item.ApplyDisplayProperties(Props); Display.Text = "请欣赏:" + MediaFile.DisplayName; MVControl.Source = Item; } else { MusicCover.Visibility = Visibility.Collapsed; MediaPlaybackItem Item = new MediaPlaybackItem(MediaSource.CreateFromStorageFile(MediaFile)); MediaItemDisplayProperties Props = Item.GetDisplayProperties(); //若为视频此处必须设定为Video Props.Type = Windows.Media.MediaPlaybackType.Video; Props.VideoProperties.Title = MediaFile.DisplayName; Item.ApplyDisplayProperties(Props); MVControl.Source = Item; } }
public async Task <List <MediaPlaybackItem> > GetPlayableItems(Album album) { List <MediaPlaybackItem> res = new List <MediaPlaybackItem>(); try { RandomAccessStreamReference thumbnail = null; if (album.HasCover) { StorageFile thumnailFile = await StorageFile.GetFileFromPathAsync(album.CoverPath); thumbnail = RandomAccessStreamReference.CreateFromFile(thumnailFile); } foreach (Track track in album.Tracks) { StorageFile file = await StorageFile.GetFileFromPathAsync(Path.Combine(Root.Path, track.FilePath)); MediaPlaybackItem item = new MediaPlaybackItem(MediaSource.CreateFromStorageFile(file)); MediaItemDisplayProperties props = item.GetDisplayProperties(); props.Type = Windows.Media.MediaPlaybackType.Music; props.MusicProperties.Title = $"{album.Title} - {track.Title}"; props.MusicProperties.Artist = album.Composer; props.MusicProperties.TrackNumber = (uint)track.Number; props.Thumbnail = thumbnail; item.ApplyDisplayProperties(props); res.Add(item); item.Source.CustomProperties.Add("track", track); item.Source.CustomProperties.Add("album", album); } } catch (Exception) { return(null); } return(res); }
private async void PlayingService_OnPlayingSongChanged() { ChangeImage(); ChangePlayBar(PlayingService.PlayingSong, PlayingService.PlayingAlbumBitmapImage, PlayingService.PlayingSong.Name, PlayingService.PlayingSong.ar.First().name, PlayingService.PlayingSong.al.name, PlayingService.PlayingSong.dt / 1000); if ((Application.Current as App).playingPage != null) { (Application.Current as App).playingPage.LoadLayout(); } if ((Application.Current as App).compactOverlayPage != null) { (Application.Current as App).compactOverlayPage.UpdateLayout(); } if (PlayingService.PlayingSongUrlRoot.data.First().url == null) { NotifyPopup notifyPopup = new NotifyPopup("播放地址错误"); notifyPopup.Show(); //跳过当前到下一首 PlayingService.PlayNextSongs(); return; } _mediaSource = await Task.Run(() => MediaSource.CreateFromUri(new Uri(PlayingService.PlayingSongUrlRoot.data.First().url))); _mediaSource.OpenOperationCompleted += _mediaSource_OpenOperationCompleted; _mediaPlaybackItem = new MediaPlaybackItem(_mediaSource); _mediaPlayer.Source = _mediaPlaybackItem; _mediaTimelineController.Start(); //SetLastPlayedSong(); //修改SMTC 显示的元数据 MediaItemDisplayProperties props = _mediaPlaybackItem.GetDisplayProperties(); props.Type = Windows.Media.MediaPlaybackType.Music; props.MusicProperties.Title = PlayingService.PlayingSong.Name; props.MusicProperties.Artist = PlayingService.PlayingSong.ar.First().name; props.Thumbnail = RandomAccessStreamReference.CreateFromFile(await ApplicationData.Current.LocalFolder.TryGetItemAsync(ConfigService.ImageFilename) as StorageFile); _mediaPlaybackItem.ApplyDisplayProperties(props); }
private async Task Initialize() { if (MediaFile.FileType == ".mp3" || MediaFile.FileType == ".flac" || MediaFile.FileType == ".wma" || MediaFile.FileType == ".m4a" || MediaFile.FileType == ".alac") { MusicCover.Visibility = Visibility.Visible; MediaPlaybackItem Item = new MediaPlaybackItem(MediaSource.CreateFromStorageFile(MediaFile)); MediaItemDisplayProperties Props = Item.GetDisplayProperties(); Props.Type = Windows.Media.MediaPlaybackType.Music; Props.MusicProperties.Title = MediaFile.DisplayName; try { Props.MusicProperties.AlbumArtist = await GetMusicCoverAsync().ConfigureAwait(true); } catch (Exception) { Cover.Visibility = Visibility.Collapsed; } Item.ApplyDisplayProperties(Props); Display.Text = $"{Globalization.GetString("Media_Tip_Text")} {MediaFile.DisplayName}"; MVControl.Source = Item; } else { MusicCover.Visibility = Visibility.Collapsed; MediaPlaybackItem Item = new MediaPlaybackItem(MediaSource.CreateFromStorageFile(MediaFile)); MediaItemDisplayProperties Props = Item.GetDisplayProperties(); Props.Type = Windows.Media.MediaPlaybackType.Video; Props.VideoProperties.Title = MediaFile.DisplayName; Item.ApplyDisplayProperties(Props); MVControl.Source = Item; } }
private async Task <MediaPlaybackItem> GetPlayableItem(Track track) { try { Album album = track.Album; RandomAccessStreamReference thumbnail = null; if (album.HasCover) { StorageFile thumnailFile = await StorageFile.GetFileFromPathAsync(album.CoverPath); thumbnail = RandomAccessStreamReference.CreateFromFile(thumnailFile); } StorageFile file = await StorageFile.GetFileFromPathAsync(Path.Combine(libraryService.CurrentLibrary.Root.Path, track.FilePath)); MediaPlaybackItem item = new MediaPlaybackItem(MediaSource.CreateFromStorageFile(file)); MediaItemDisplayProperties props = item.GetDisplayProperties(); props.Type = Windows.Media.MediaPlaybackType.Music; props.MusicProperties.Title = $"{album.Title} - {track.Title}"; props.MusicProperties.Artist = album.Composer; props.MusicProperties.TrackNumber = (uint)track.Number; props.Thumbnail = thumbnail; item.Source.CustomProperties["track"] = track; item.ApplyDisplayProperties(props); return(item); } catch (Exception) { return(null); } }
public static async void SyncPlayList() { if (nowsid != RequestId && !Syncing) { Syncing = true; nowsid = RequestId; if (List.Count == 0) { PlaybackList.Items.Clear(); MPIToIndex.Clear(); Syncing = false; return; } if (PlaybackList.Items.Count > List.Count) { MPIToIndex.Clear(); for (int i = List.Count - 1; i < PlaybackList.Items.Count; i++) { PlaybackList.Items.RemoveAt(i); } } for (int i = 0; i < List.Count; i++) { if (PlaybackList.Items.Count <= i || List[i].MediaItem == null || List[i].MediaItem.Source.State == MediaSourceState.Failed || PlaybackList.Items[i] != List[i].MediaItem) { MediaPlaybackItem mediaPlaybackItem; RandomAccessStreamReference rasr; if (List[i].ItemType == HyPlayItemType.Netease) { try { StorageFile item = await Windows.Storage.ApplicationData.Current.LocalCacheFolder.GetFileAsync( "SongCache\\" + List[i].NcPlayItem.sid + "." + List[i].NcPlayItem.subext.ToLower()); if (List[i].NcPlayItem.size == (await item.GetBasicPropertiesAsync()).Size.ToString()) { mediaPlaybackItem = new MediaPlaybackItem(MediaSource.CreateFromStorageFile(item)); } else { throw new Exception("文件大小不一致"); } } catch (Exception) { mediaPlaybackItem = new MediaPlaybackItem(MediaSource.CreateFromUri(new Uri(List[i].NcPlayItem.url))); } rasr = RandomAccessStreamReference.CreateFromUri(new Uri(List[i].NcPlayItem.Album.cover + "?param=" + StaticSource.PICSIZE_AUDIO_PLAYER_COVER)); List[i].MediaItem = mediaPlaybackItem; } else { mediaPlaybackItem = new MediaPlaybackItem(MediaSource.CreateFromStorageFile(List[i].AudioInfo.LocalSongFile)); rasr = List[i].AudioInfo.Thumbnail; } MediaItemDisplayProperties properties = mediaPlaybackItem.GetDisplayProperties(); properties.Type = MediaPlaybackType.Music; properties.MusicProperties.AlbumTitle = List[i].AudioInfo.Album; properties.MusicProperties.Artist = List[i].AudioInfo.Artist; properties.MusicProperties.Title = List[i].AudioInfo.SongName; properties.Thumbnail = rasr; List[i].MediaItem = mediaPlaybackItem; List[i].MediaItem.ApplyDisplayProperties(properties); MPIToIndex[List[i].MediaItem] = i; PlaybackList.Items.Add(List[i].MediaItem); Invoke(() => { if (i >= 0 && List.Count > i) { OnPlayListAdd?.Invoke(List[i]); } }); } if (i >= 0 && List.Count > i && List[i].MediaItem != PlaybackList.Items[i]) { if (PlaybackList.Items.Contains(List[i].MediaItem)) {//已经有这个了 PlaybackList.Items.Remove(List[i].MediaItem); } PlaybackList.Items[i] = List[i].MediaItem; } MPIToIndex[List[i].MediaItem] = i; } Syncing = false; } }
private async Task <PlayingSong> AddSongInternal(Song song) { Task getCover; MediaSource media; List <PlayingSong> list; MediaItemDisplayProperties oldProperties = null; if (this.mediaItemLookup.ContainsKey(song)) { list = this.mediaItemLookup[song]; var oldMedia = list.FirstOrDefault()?.MediaPlaybackItem; media = oldMedia?.Source; if (media is null) // Async could add list before mediasource is added. { media = await LibraryRegistry <MediaSource, Uri> .Get(song.LibraryProvider).GetMediaSource(song.MediaId, default); } else { oldProperties = oldMedia.GetDisplayProperties(); } } else { list = new List <PlayingSong>(); this.mediaItemLookup.Add(song, list); media = await LibraryRegistry <MediaSource, Uri> .Get(song.LibraryProvider).GetMediaSource(song.MediaId, default); } if (media is null) { return(null); } var mediaItem = new MediaPlaybackItem(media); var viewModel = new PlayingSong(mediaItem, song); this.playbackItemLookup.Add(mediaItem, viewModel); list.Add(viewModel); if (oldProperties is null) { var displayProperties = mediaItem.GetDisplayProperties(); displayProperties.Type = Windows.Media.MediaPlaybackType.Music; displayProperties.MusicProperties.AlbumTitle = song.AlbumName; displayProperties.MusicProperties.TrackNumber = (uint)song.Track; displayProperties.MusicProperties.Title = song.Title; displayProperties.MusicProperties.Genres.Clear(); foreach (var genre in song.Genres) { displayProperties.MusicProperties.Genres.Add(genre); } displayProperties.MusicProperties.Artist = string.Join(", ", song.Interpreters); mediaItem.ApplyDisplayProperties(displayProperties); var coverTask = song.GetCover(300, default); getCover = coverTask.ContinueWith(t => { var coverStreamReferance = t.Result; displayProperties.Thumbnail = coverStreamReferance; mediaItem.ApplyDisplayProperties(displayProperties); }); } else { getCover = null; } this.mediaPlaybackList.Items.Add(mediaItem); int indexAdded; if (this.mediaPlaybackList.ShuffleEnabled) { indexAdded = this.mediaPlaybackList.ShuffledItems.Select((value, index) => (value, index)).First(x => x.value == mediaItem).index; } else { indexAdded = this.mediaPlaybackList.Items.Count - 1; } this.currentPlaylist.Insert(indexAdded, viewModel); if (getCover != null) { await getCover; } return(viewModel); }
/// <summary> /// Load the range of tracks from the remote playlist /// </summary> /// <param name="start">The first track to load from remote</param> /// <param name="end">The last track to load from remote</param> /// <param name="lockOverride">Whether or not to ignore if the lock is set (Used when recursing into itself)</param> /// <returns>True a total of end - start tracks are downloaded, false otherwise</returns> public async Task <bool> LoadTracks(int start, int end, bool lockOverride) { long loadingKey = DateTime.Now.Ticks; MainPage.AddLoadingLock(loadingKey); if (loadLock && !lockOverride) { return(false); } loadLock = true; int successes = 0; int limit; if (shuffling) { if (shufflePositionsAvailable.Count == 0) { ReFillShufflePositionsAvailable(); } if (shufflePositionsAvailable.Count < end - start) { limit = shufflePositionsAvailable.Count; } else { limit = end - start; } } else { if (totalTracks > 0 && end >= totalTracks) { end = totalTracks - 1; } nextRemoteAttempts.Insert(0, end); if (start == 0) { prevRemoteAttempts.Add(start + TRACKS_PER_REQUEST); } else { prevRemoteAttempts.Add(start); } limit = end - start + 1; } App.mainPage.SetLoadingProgress(source, 0, limit, localLock, loadingKey); if (localLock != App.playbackService.GlobalLock) { return(false); } List <Track> tracks = new List <Track>(); if (shuffling) { tracks = await GetTracksRandom(limit); } else { tracks = await GetTracksInRange(start, limit); } if (tracks.Count == totalTracks) { limit = totalTracks; App.mainPage.SetLoadingProgress(source, 0, limit, localLock, loadingKey); } if (tracks.Count != limit) { UpdateFailuresCount(limit - tracks.Count, loadingKey); } List <KeyValuePair <MediaSource, Track> > sources = new List <KeyValuePair <MediaSource, Track> >(); if (source == PlaybackSource.Spotify) { for (int i = 0; i < tracks.Count; i++) { Track track = tracks[i]; if (localLock == App.playbackService.GlobalLock) { if (track.previewUrl != "") { sources.Add(new KeyValuePair <MediaSource, Track>(MediaSource.CreateFromUri(new Uri(track.previewUrl)), track)); } else { UpdateFailuresCount(1, loadingKey); } } App.mainPage.SetLoadingProgress(source, i + 1 + limit - tracks.Count, limit, localLock, loadingKey); } } else if (source == PlaybackSource.YouTube && localLock == App.playbackService.GlobalLock) { for (int i = 0; i < tracks.Count; i++) { Track track = tracks[i]; string videoId = ""; if (localLock == App.playbackService.GlobalLock) { videoId = await SearchForVideoId(track); } if (localLock == App.playbackService.GlobalLock) { if (videoId == "") { UpdateFailuresCount(1, loadingKey); } else { try { sources.Add(new KeyValuePair <MediaSource, Track>(await GetAudioAsync(videoId, track.name), track)); } catch (Exception) { UpdateFailuresCount(1, loadingKey); } } } App.mainPage.SetLoadingProgress(PlaybackSource.YouTube, i + 1 + limit - tracks.Count, limit, localLock, loadingKey); } } bool firstPlay = false; for (int i = 0; i < sources.Count; i++) { KeyValuePair <MediaSource, Track> pair = sources[i]; if (localLock == App.playbackService.GlobalLock) { MediaPlaybackItem playbackItem = new MediaPlaybackItem(pair.Key); MediaItemDisplayProperties displayProperties = playbackItem.GetDisplayProperties(); displayProperties.Type = MediaPlaybackType.Music; displayProperties.MusicProperties.Title = pair.Value.name; displayProperties.MusicProperties.AlbumTitle = pair.Value.album.name; displayProperties.MusicProperties.Artist = pair.Value.GetMainArtistName(); if (pair.Value.album.imageUrl != "") { displayProperties.Thumbnail = RandomAccessStreamReference.CreateFromUri(new Uri(pair.Value.album.imageUrl)); } playbackItem.ApplyDisplayProperties(displayProperties); pair.Key.CustomProperties["mediaItemId"] = pair.Value.id; string id = GetMediaItemId(playbackItem); if (!playlistMediaIds.Contains(id)) { App.playbackService.AddToQueue(playbackItem, localLock); playlistMediaIds.Add(id); successes++; } if (currentlyPlaying == "") { firstPlay = true; currentlyPlaying = GetMediaItemId(playbackItem); } } } if (firstPlay) { App.playbackService.PlayFromBeginning(localLock); } MainPage.RemoveLoadingLock(loadingKey); if (shuffling) { if (successes != limit && shufflePositionsAvailable.Count > 0) { return(await LoadTracks(0, limit - successes, true)); } } else { if (successes != limit && end < totalTracks - 1) { return(await LoadTracks(start + limit, start + limit + (limit - tracks.Count), true)); } } loadLock = false; return(tracks.Count == limit); }
/// <summary> /// Load the range of tracks from the remote playlist in reverse order /// </summary> /// <param name="start">The start position on remote to download to local, the last position added to the queue</param> /// <param name="end">The end position on remote to download to local, the first position added to the queue</param> /// <param name="lockOverride">Whether or not to ignore if the lock is set (Used when recursing into itself)</param> /// <returns>True a total of end - start tracks are downloaded, false otherwise</returns> public async Task <bool> LoadTracksReverse(int start, int end, bool lockOverride) { long loadingKey = DateTime.Now.Ticks; MainPage.AddLoadingLock(loadingKey); if (loadLock && !lockOverride) { return(false); } loadLock = true; int successes = 0; if (start < 0) { start = 0; } nextRemoteAttempts.Add(end); prevRemoteAttempts.Insert(0, start); int limit = end - start + 1; App.mainPage.SetLoadingProgress(source, 0, limit, localLock, loadingKey); if (localLock != App.playbackService.GlobalLock) { return(false); } List <Track> tracks = await GetTracksInRange(start, limit); if (tracks.Count != limit) { UpdateFailuresCount(limit - tracks.Count, loadingKey); } else { List <KeyValuePair <MediaSource, Track> > sources = new List <KeyValuePair <MediaSource, Track> >(); if (this.source == PlaybackSource.Spotify) { for (int i = 0; i < tracks.Count; i++) { Track track = tracks[i]; if (localLock == App.playbackService.GlobalLock) { if (track.previewUrl != "") { sources.Add(new KeyValuePair <MediaSource, Track>(MediaSource.CreateFromUri(new Uri(track.previewUrl)), track)); } else { UpdateFailuresCount(1, loadingKey); } } App.mainPage.SetLoadingProgress(source, i + 1 + limit - tracks.Count, limit, localLock, loadingKey); } } else if (this.source == PlaybackSource.YouTube && localLock == App.playbackService.GlobalLock) { for (int i = 0; i < tracks.Count; i++) { Track track = tracks[i]; string videoId = ""; if (localLock == App.playbackService.GlobalLock) { videoId = await SearchForVideoId(track); } if (localLock == App.playbackService.GlobalLock) { if (videoId == "") { UpdateFailuresCount(1, loadingKey); } else { try { sources.Add(new KeyValuePair <MediaSource, Track>(await GetAudioAsync(videoId, track.name), track)); } catch (Exception) { UpdateFailuresCount(1, loadingKey); } } } App.mainPage.SetLoadingProgress(PlaybackSource.YouTube, i + 1 + limit - tracks.Count, limit, localLock, loadingKey); } } for (int i = sources.Count - 1; i >= 0; i--) { KeyValuePair <MediaSource, Track> pair = sources[i]; if (localLock == App.playbackService.GlobalLock) { MediaPlaybackItem playbackItem = new MediaPlaybackItem(pair.Key); MediaItemDisplayProperties displayProperties = playbackItem.GetDisplayProperties(); displayProperties.Type = MediaPlaybackType.Music; displayProperties.MusicProperties.Title = pair.Value.name; displayProperties.MusicProperties.AlbumTitle = pair.Value.album.name; displayProperties.MusicProperties.Artist = pair.Value.GetMainArtistName(); if (pair.Value.album.imageUrl != "") { displayProperties.Thumbnail = RandomAccessStreamReference.CreateFromUri(new Uri(pair.Value.album.imageUrl)); } playbackItem.ApplyDisplayProperties(displayProperties); pair.Key.CustomProperties["mediaItemId"] = pair.Value.id; string id = GetMediaItemId(playbackItem); if (!playlistMediaIds.Contains(id)) { App.playbackService.AddToBeginningOfQueue(playbackItem, localLock); playlistMediaIds.Insert(0, id); successes++; } } } } MainPage.RemoveLoadingLock(loadingKey); if (successes != limit && start > 0) { return(await LoadTracks(start - limit - (limit - tracks.Count), start + limit, true)); } loadLock = false; return(tracks.Count == limit); }
private async Task InitializeAsync() { try { using (IRandomAccessStream Stream = await MediaFile.GetRandomAccessStreamFromFileAsync(FileAccessMode.Read)) { Source = MediaSource.CreateFromStream(Stream, MIMEDictionary[MediaFile.Type.ToLower()]); MediaPlaybackItem Item = new MediaPlaybackItem(Source); switch (MediaFile.Type.ToLower()) { case ".mp3": case ".flac": case ".wma": case ".m4a": { MusicCover.Visibility = Visibility.Visible; MediaItemDisplayProperties Props = Item.GetDisplayProperties(); Props.Type = Windows.Media.MediaPlaybackType.Music; Props.MusicProperties.Title = MediaFile.DisplayName; Props.MusicProperties.AlbumArtist = await GetArtistAsync(); Item.ApplyDisplayProperties(Props); if (await GetMusicCoverAsync() is BitmapImage Thumbnail) { Cover.Source = Thumbnail; Cover.Visibility = Visibility.Visible; } else { Cover.Visibility = Visibility.Collapsed; } Display.Text = $"{Globalization.GetString("Media_Tip_Text")} {MediaFile.DisplayName}"; MVControl.Source = Item; break; } default: { MusicCover.Visibility = Visibility.Collapsed; MediaItemDisplayProperties Props = Item.GetDisplayProperties(); Props.Type = Windows.Media.MediaPlaybackType.Video; Props.VideoProperties.Title = MediaFile.DisplayName; Item.ApplyDisplayProperties(Props); MVControl.Source = Item; break; } } } } catch (Exception ex) { LogTracer.Log(ex, "Could not load media because an exception was threw"); QueueContentDialog Dialog = new QueueContentDialog { Title = Globalization.GetString("Common_Dialog_ErrorTitle"), Content = Globalization.GetString("QueueDialog_CouldNotLoadMedia_Content"), CloseButtonText = Globalization.GetString("Common_Dialog_CloseButton") }; await Dialog.ShowAsync(); Frame.GoBack(); } }