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