0

How to play all files in a folder. This feature does not work correctly:

    FolderPicker folderPicker = new FolderPicker();
    folderPicker.SuggestedStartLocation = PickerLocationId.Desktop;
    folderPicker.FileTypeFilter.Add("*");
    folder = await folderPicker.PickSingleFolderAsync();
    if (folder != null)
    {
        fileList = await folder.GetFilesAsync();
        foreach (StorageFile file in fileList)
        {
            mediaPlayerElement.MediaPlayer.Source = MediaSource.CreateFromStorageFile(file);
            mediaPlayerElement.MediaPlayer.PlaybackSession.PlaybackRate = 2;
            mediaPlayerElement.MediaPlayer.Play(); // <-?? (only the last file in folder)
        }
    }
  • 1
    I'm a little confused about your question. Do you want to add multiple videos into a playlist for the `MediaplayerElement` then play them one by one? Or you want to open these videos at the same time? – Roy Li - MSFT Sep 06 '21 at 01:29
  • Please clarify your specific problem or provide additional details to highlight exactly what you need. As it's currently written, it's hard to tell exactly what you're asking. – Community Sep 13 '21 at 15:03

1 Answers1

0

I found a solution.

    int ind;
    private StorageFolder folder = null;
    private IReadOnlyList<StorageFile> fileList = null;

    public MainPage()
    {
        InitializeComponent();

        mediaPlayerElement.MediaPlayer.MediaEnded += MediaPlayer_VideoFrameEndedAsync;
    }


    private async void MediaPlayer_VideoFrameEndedAsync(object sender, object args)
    {
        await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
        {
            ind++;
            if (ind < fileList.Count)
            {
                mediaPlayerElement.MediaPlayer.Source = MediaSource.CreateFromStorageFile(fileList[ind]);
                mediaPlayerElement.MediaPlayer.PlaybackSession.PlaybackRate = 2;
                mediaPlayerElement.MediaPlayer.Play();
                notify.Text = fileList[ind].DisplayName;
            }
        });
    }

    private async void folder_ClickAsync(object sender, RoutedEventArgs e)
    {
        FolderPicker folderPicker = new FolderPicker();
        folderPicker.SuggestedStartLocation = PickerLocationId.Desktop;
        folderPicker.FileTypeFilter.Add("*");
        folder = await folderPicker.PickSingleFolderAsync();
        if (folder != null)
        {
            fileList = await folder.GetFilesAsync();
            if (fileList.Count > 0)
            {
                ind = 0;
                mediaPlayerElement.MediaPlayer.Source = MediaSource.CreateFromStorageFile(fileList[ind]);
                mediaPlayerElement.MediaPlayer.PlaybackSession.PlaybackRate = 2;
                mediaPlayerElement.MediaPlayer.Play(); // <-?? (only the last file in folder)
                notify.Text = fileList[ind].DisplayName;
            }

            //foreach (StorageFile file in fileList)
            //{
            //    mediaPlayerElement.MediaPlayer.Source = MediaSource.CreateFromStorageFile(file);
            //    mediaPlayerElement.MediaPlayer.PlaybackSession.PlaybackRate = 2;
            //    mediaPlayerElement.MediaPlayer.Play(); // <-?? (only the last file in folder)

            //    notify.Text = file.DisplayName;
            //}
        }
        else
        {
            notify.Text = "Operation cancelled.";
        }
    }