MediaElement.SetSource () автоматически воспроизводит мой MP3 - PullRequest
0 голосов
/ 25 сентября 2018

В настоящее время я работаю над проектом в C # с использованием UWP.Мне нужно воспроизвести файл MP3, но не сразу, а если я нажму кнопку в моем приложении.Итак, я создал кнопку «загрузить MP3», которая запускает следующий метод: метод загрузки MP3

private async void open_MP3_Click(object sender, RoutedEventArgs e)
    {

        mp3.AudioCategory = Windows.UI.Xaml.Media.AudioCategory.Media;


        var picker = new Windows.Storage.Pickers.FileOpenPicker();
        picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.List;
        picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.ComputerFolder;
        picker.FileTypeFilter.Add(".mp3");

        StorageFile sf = await picker.PickSingleFileAsync();
        var stream = await sf.OpenAsync(FileAccessMode.Read);
        mp3.SetSource(stream, sf.ContentType);
        //await Task.Delay(3500);
        //mp3.Pause();
    }

Если я запускаю этот код, выбранная мной песня будет воспроизводиться мгновенно, без нажатия кнопки.кнопка воспроизведения, которую я создал.Если я установлю точку останова на линии mp3.SetSource(), код не будет воспроизводить песню мгновенно.Я попытался обойти проблему с помощью метода mp3.Pause(), но мне пришлось вставить задержку в 350 мс, чтобы работать вообще.Если я выберу длительную задержку (например, 3500 мс), песня начнет воспроизводиться и остановится через 3,5 секунды, очевидно.

Поскольку для моего проекта мне нужно рассчитать время начала песни точно в миллисекундахработать метод задержки не является идеальным для меня.У кого-нибудь есть идеи в чем проблема с методом SetSource()?

1 Ответ

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

Элемент управления MediaElement имеет свойство AutoPlay, которое по умолчанию установлено на true (см. Документацию ).Это означает, что всякий раз, когда вы устанавливаете источник, он автоматически начинает воспроизведение сразу после загрузки источника.Чтобы избежать этого, просто установите AutoPlay свойство в значение false:

mp3.AutoPlay = false;
...