Аудио воспроизведение в WPF

Один из самых простых классов в .Net для воспроизведения
звуковых файлов находится в пространстве имен System.Media.
Может проигрывать только файлы формата WAV-аудио
Для применения объекта в XAML разметке применяется элемент

<!--Декларативный подход при указании проигрываемого файла-->
<SoundPlayerAction Source="test.wav"></SoundPlayerAction>

Пример воспроизведение аудио через Xaml разметку

 <Button>
            <Button.Content>Проигрывание из XAML</Button.Content>
            
            <Button.Style>
                <Style>
                    <Style.Triggers>
                        <EventTrigger RoutedEvent="Button.Click">
                            <EventTrigger.Actions>
                                <!--Декларативный подход при указании проигрываемого файла-->
                                <SoundPlayerAction Source="test.wav"></SoundPlayerAction>
                            </EventTrigger.Actions>
                        </EventTrigger>
                    </Style.Triggers>
                </Style>
            </Button.Style>    
        </Button>

 

Воспроизведение аудио MediaPlayer

System.Windows.Media
Для работы данного класса в системе должен быть установлен
проигрыватель Windows Media Player 10 или выше. Класс может воспроизводить файлы формата MP3.

Свойства и методы

  • Balance – установка баланса между левым и правым каналом.
  • Volume — громкость
  • SpeedRatio – скорость воспроизведения (по умолчанию 1)
  • HasAudio, HasVideo – проверка, какой формат медиа содержит загруженный файл
  • NaturalDuration, NaturalVideoHeight, NaturalVideoWidth –продолжительность дорожки, высота и ширина видео.
  • Position – TimeSpan, указывающий текущее место в медиа файле.
  • DownloadProgress, BufferingProgress – значения представлены в виде числа от 0 до 1. Полезны в тех случаях, когда воспроизводится
  • удаленный файл.
  • Clock – MediaClock для синхронизации аудио с временной шкалой (хранит значение null если воспроизведение запускается из кода).
  • Open() – Загрузка нового медиа файла
  • Play() – Начать воспроизведение.
  • Pause() – Приостановить воспроизведение.
  • Stop() – Остановить воспроизведение.

MediaElement XAML разметка

MediaElement — класс является оболочкой класса MediaPlayer, помещается непосредственно в пользовательский интерфейс и позволяет воспроизводить аудио и видео.

Пример синхронного воспроизведение аудио

 private void cmdPlayAudio_Click(object sender, RoutedEventArgs e)
        {
            SoundPlayer player = new SoundPlayer();
            // Файл находится в ресурсах приложения.
            player.Stream = Properties.Resources.chord;
            try
            {
                player.Load();
                player.PlaySync(); // Синхронное воспроизведение, в этом же потоке.
               
            }
            catch (FileNotFoundException)
            {
                MessageBox.Show("Файл не найден");
            }
            catch (FormatException)
            {
                MessageBox.Show("Не верный формат аудио.");
            }
        }

Пример воспроизведение аудио в асинхронном режиме.

private void cmdPlayAudioAsync_Click(object sender, RoutedEventArgs e)
        {
            SoundPlayer player = new SoundPlayer();
            player.SoundLocation = "test.wav";
            try
            {
                player.Load();
                player.Play(); // асинхронное воспроизведение в отдельном потоке.
            }
            catch (FileNotFoundException)
            {
                MessageBox.Show("Файл не найден");
            }
            catch (FormatException)
            {
                MessageBox.Show("Не верный формат аудио.");
            }
        }

Пример воспроизведения аудио с помощью MediaPlayer 

 // Объект MediaPlayer будет работать только в том случае, если в системе установлен Windows Media Player 10 или выше
        private MediaPlayer player = new MediaPlayer();

        private void cmdPlayWithMediaPlayer_Click(object sender, RoutedEventArgs e)
        {
            player.MediaFailed += new EventHandler<ExceptionEventArgs>(player_MediaFailed);
            player.Open(new Uri("test.mp3", UriKind.Relative));
            player.Play(); // Метод Play не выбрасывает исключений, для отлова ошибок нужно делать обработчики на события
        }

        void player_MediaFailed(object sender, ExceptionEventArgs e)
        {
            MessageBox.Show("Ошибка во время открытия файла.");
        }

        private void window_Closed(object sender, EventArgs e)
        {
            player.Close(); // При закрытии окна освобождаем объект MediaPlayer
        }

 

 

Обновлено: 10.06.2021 — 17:19

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.