Один из самых простых классов в .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 }