аудио плейлист uwp mediaelement c # - PullRequest
0 голосов
/ 11 сентября 2018

хранить файлы ObservableCollection<StorageFile> files;

public MainPage()
{
    this.InitializeComponent();
    files = new ObservableCollection<StorageFile>();
    _fileList.ItemsSource = files;
    this.DataContext = this;
} 

расположение файла. Расположение файла открывается, и аудио добавляется в список

async private System.Threading.Tasks.Task AddMedia()
{
    //Create a new picker
    var filePicker = new Windows.Storage.Pickers.FileOpenPicker();

    //Add filetype filters. 

    filePicker.FileTypeFilter.Add(".mp3");
    filePicker.FileTypeFilter.Add(".wav");


    //Set picker start location to the video library
    filePicker.SuggestedStartLocation = PickerLocationId.MusicLibrary;

    //Retrieve single file from picker
    StorageFile file;
    file = await filePicker.PickSingleFileAsync();

    if (file != null)
    {
        files.Add(file);
        mediaElement.Play();
    }

}

выбрать файл из списка файл воспроизводится, но как только он заканчивается, он не воспроизводит следующий в списке. Я хочу автоматически воспроизвести следующий в списке, но я борюсь с этим, пожалуйста, помогите

private async void _fileList_ItemClick(object sender, ItemClickEventArgs e)
{   
    var storageitem = e.ClickedItem as StorageFile;
    IRandomAccessStream stream = await 
    storageitem.OpenAsync(FileAccessMode.Read);
    mediaElement.SetSource(stream, storageitem.ContentType);
    this.txt_song.Text = "Now playing: " + storageitem.Name;
}

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

вы должны использовать MediaPlaybackList для создания списков воспроизведения музыки и простого управления ими, это помогает вам очень легко переходить к следующему медиафайлу или предыдущему, поддерживает воспроизведение без пауз и в долгосрочной перспективесделает вашу жизнь намного проще, чтобы полностью контролировать плейлист.Лучше всего использовать его с элементом управления MediaPlayerElement

0 голосов
/ 11 сентября 2018

Просто используйте два элемента MediaElement для реализации вашего требования.

Одним из решений является использование двух MediaElements. Один MediaElemet всегда воспроизводится, а второй открывает и загружает следующую дорожку в фоновом режиме, готовую начать воспроизведение, как только это необходимо. Когда один элемент списка воспроизведения заканчивается, мы можем немедленно начать воспроизведение следующего. Затем тот, который только что играл, начинает ставить в очередь следующий элемент. Звучит просто, верно?

Ключ к тому, чтобы заставить любое решение списка воспроизведения работать с MediaElement, является обрабатывать событие «MediaEnded». Когда мы получаем это событие, мы знаем, что предмет закончен, играя. Затем мы можем проверить список воспроизведения и начать воспроизведение следующего элемента. К счастью, в отличие от Media Player SDK, MediaElement гарантирует, что мы всегда получим «MediaEnded» событие. Без этого решение для списка воспроизведения будет невозможно.

https://blogs.msdn.microsoft.com/wsdevsol/2014/07/11/multi-mediaelement-a-playlist-solution-next-item-no-waiting/

...