Один из самых простых классов в .Net для воспроизведения
звуковых файлов находится в пространстве имен System.Media.
Может проигрывать только файлы формата WAV-аудио
Для применения объекта в XAML разметке применяется элемент
1 2 |
<!--Декларативный подход при указании проигрываемого файла--> <SoundPlayerAction Source="test.wav"></SoundPlayerAction> |
Пример воспроизведение аудио через Xaml разметку
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<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, помещается непосредственно в пользовательский интерфейс и позволяет воспроизводить аудио и видео.
Пример синхронного воспроизведение аудио
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
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("Не верный формат аудио."); } } |
Пример воспроизведение аудио в асинхронном режиме.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// Объект 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 } |