20 сент. 2012 г.

Воспроизведение звукового файла с определенной позиции

      В .Net существует класс MediaPlayer пространстве имен System.Windows.Media. Создается объект MediaPlayer, с помощью метода Open() загружается аудиофайл, а вызовом метода Рlау() запускается асинхронное воспроизведение. Местоположение файла указывается в виде URI. К сожалению, это не синтаксис упакованных URI, так что встроить аудиофайл и воспроизвести его с использованием класса MediaPlayer не получится. Это ограничение объясняется тем, что класс MediaPlayer построен на функциональности, которая не является встроенной в Windows Form, а предоставлена отдельным, неуправляемым компонентом проигрывателя Windows Media. Так же отсутствует код обработки исключений. Методы Open() и Play() не генерируют исключения (в некоторой степени тому виной процессы асинхронной загрузки и воспроизведения). Взамен предлагается самостоятельно обрабатывать события MediaOpened и MediaFailed, чтобы определить, было ли запущено воспроизведение аудио.
Создайте проект Windows Form в Microsoft Visual Studio. Добавьте три компонента:
  • Label – отображение текущей позиции воспроизведения файла;
  • Button – загрузка медиа файла и запуск его воспроизведения;
  • Timer – для отслеживания/отображения текущей позиции воспроизведения.
      Сделайте двойной клик левой клавишей мыши по компоненту «Button» и перейдите в автоматически созданный метод «button1_Click» и добавьте следующий листинг:
//Открываем диалоговое окно для выбора медиа файла
OpenFileDialog ofd = new OpenFileDialog();
//создаем фильтр для типов открываемых файлов
ofd.Filter = "(*.mp3)|*.mp3";
ofd.ShowDialog();
//Инициализируем новый экземпляр класса System.Windows.Media.MediaPlayer.
m = new MediaPlayer();
//Указываем файл для воспроизведения
m.Open(new Uri(ofd.FileName));
m.Play();
//Устанавливаем начальную позицию воспроизведения 0:1:50
m.Position = new TimeSpan(0, 1, 50);
//Запускаем таймер, отслеживания позиции воспроизведения
timer1.Enabled = true;
Объявляем переменную «m» инициализирующую класс MediaPlayer:
MediaPlayer m;
Сделайте двойной клик левой клавишей мыши по компоненту «Timer» и перейдите в автоматически созданный метод «timer1_Tick». Добавьте в него следующий листинг:
//Отображаем текущую позицию
label1.Text = "Позиция воспроизведения: "+ m.Position.ToString();
      Запустите ваш проект клавишей «F5». Нажмите единственную клавишу на вашей форме. У вас откроется диалоговое окно для выбора медиа файла.
      После нажатия на кнопку «Открыть», у вас начнется воспроизведение выбранного файла, с позиции которую вы задали, в примере это 1:50.
      MediaPlayer достаточно прост, хотя обладает большими возможностями, чем SoundPlayer. Он предоставляет небольшой набор полезных методов, свойство и событий. Используя эти члены этого класса, можно построить базовый полнофункциональный медиа проигрыватель.
Для работы вам необходимо подключить следующее пространство имен:
using System.Windows.Media;

Ссылка на исходник: Rusfolder.net


Комментариев нет:

Отправить комментарий

Большая просьба, не писать в комментариях всякую ерунду не по теме!