Delphi-Help

Главная Статьи Аудио и видео плеер (MediaPlayer) Универсальный проигрыватель MediaPlayer

Универсальный проигрыватель MediaPlayer

Оцените материал
(0 голосов)


Универсальный проигрыватель MediaPlayer

В Delphi (начиная с Delphi 2) имеется компонент MediaPlayer — универсальный проигрыватель аудио- и видео-информации. Этот медиа-плеер расположен на странице "System" библиотеки компонентов.

Компонент можно использовать в двух режимах. Во-первых, можно предоставить пользователю возможность управлять воспроизведением информации с помощью кнопочного интерфейса, напоминающего панель управления различными проигрывателями. Во-вторых, можно сделать сам компонент невидимым и управлять воспроизведением информации с помощью его методов.

Пользовательский интерфейс медиа-плеера представлен на рис. 4.23. Он имеет ряд кнопок, управляемых мышью или клавишей пробела и клавишами со стрелками.

Назначение кнопок (перечисляются слева направо):

  • Кнопка Действие
  • "Play" Воспроизведение
  • "Pause" Пауза воспроизведения или записи. Если медиа-плеер в момент щелчка уже в состоянии паузы, то воспроизведение или запись возобновляются
  • "Stop" Останов воспроизведения или записи
  • "Next" Переход на следующий трек или на конец
  • "Prev" Переход на предыдущий трек или на начало
  • "Step" Перемещение вперед на заданное число кадров
  • "Back" Перемещение назад на заданное число кадров
  • "Record" Начало записи
  • "Eject" Освобождение объекта, загруженного в устройство

Каждой кнопке медиа-плеера соответствует метод, осуществляющий по умолчанию требуемую операцию: Play, Pause, Stop, Next, Previous, Step, Back, StartRecording, Eject.

Тип устройства мультимедиа, с которым работает медиа-плеер, определяется его свойством DeviceType. Если устройство мультимедиа хранит объект воспроизведения в файле, то имя файла задается свойством FileName. По умолчанию свойство DeviceType имеет значение dtAutoSelect. Это означает, что медиа-плеер пытается определить тип устройства исходя из расширения имени файла FileName.

Еще одно свойство MediaPlayer — AutoOpen. Если оно установлено в true, то медиа-плеер пытается открыть устройство, указанное свойством DeviceType, автоматически во время своего создания в процессе выполнения приложения.

Воспроизведение видео информации по умолчанию производится в окно, которое создает само открытое устройство мультимедиа. Однако это можно изменить, если в свойстве Display указать оконный элемент, в котором должно отображаться изображение. Это может быть, например, форма или панель. Можно также задать в свойстве DisplayRect типа TRect (свойство только времени выполнения) прямоугольную область этого окна, в которую должно выводиться изображение. Для задания свойства DisplayRect можно использовать функцию Rect. Однако, в данном свойстве использование типа TRect не совсем обычно. Первые две координаты, как и обычно, задают положение левого верхнего угла изображения. А два следующих числа задают ширину и высоту изображения, а не координаты правого нижнего угла. Например, оператор

MediaPlayer1.DisplayRect := Rect(10, 10, 200, 200);

задает для вывода область с координатами левого верхнего угла (10, 10), длиной и шириной, равными 200.

В компоненте MediaPlayer определены события OnClick и OnNotify. Первое из них происходит при выборе пользователем одной из кнопок медиа-плеера и определено как

type TMPBtnType=(btPlay, btPause, btStop,
                 btNext, btPrev, btStep,
                 btBack, btRecord, btEject);
procedure(Sender: TObject; Button:TMPBtnType; var DoDefault: Boolean);

Параметр Button указывает выбранную кнопку. Параметр DoDefault, передаваемый как var, определяет выполнение (при значении true по умолчанию) или отказ от выполнения стандартного метода, соответствующего выбранной кнопке.

Событие OnNotify происходит после возвращения очередного метода, если свойство медиа-плеера Notify было установлено в true. Способ возврата любого метода медиа-плеера определяется свойством Wait. Если установить Wait равным false, то возвращение управления в приложение происходит сразу после вызова метода, не дожидаясь завершения его выполнения. Таким образом, задав Notify равным true и Wait равным false, можно обеспечить немедленный возврат в приложение и отображение пользователю текущего состояния объекта мультимедиа.

Свойства Notify и Wait действуют только на один очередной метод. Поэтому их значения надо каждый раз восстанавливать в обработчиках событий OnClick или OnNotify.

В обработчиках событий можно читать свойство Mode, характеризующее текущее состояние устройства мультимедиа. Можно также читать и устанавливать ряд свойств, характеризующих размер воспроизводимого файла и текущую позицию в нем.

Вот, собственно, в конспективном виде основная информация о компоненте MediaPlayer. А теперь попробуйте все это на практике. Простое и в то же время мощное приложение можно сделать очень легко. Начните новый проект и перенесите на форму компоненты MediaPlayer, MainMenu и OpenDialog. В фильтре компонента OpenDialog можно, например, задать:

· ауди *.wav, *.mid *.wav;*.mid

· видео *.avi *.avi

· все файлы *.*

В меню достаточно задать одну команду: "Файл | Открыть". Обработчик события OnClick этой команды может содержать оператор

if OpenDialog1.Execute then
 with MediaPlayer1 do
 begin
  FileName := OpenDialog1.FileName;
  Open;
 end;

который открывает устройство мультимедиа, соответствующее выбранному пользователем файлу. При этом надо проследить, чтобы в компоненте MediaPlayer свойство DeviceType равнялось dtAutoSelect. Это обеспечит автоматический выбор соответствующего устройства мультимедиа исходя из расширения выбранного файла.

В компоненте MediaPlayer при желании можно указать имя файла FileName, открываемого в момент начала выполнения приложения. Тогда надо установить свойство AutoOpen в true. Впрочем, это, конечно, не обязательно.

Вот и все. Можете выполнять свое приложение и наслаждаться музыкой или фильмами (если, конечно, все вопросы, связанные с настройкой мультимедиа на вашем компьютере решены).

Чтобы все-таки использовать какие-то события компонента MediaPlayer, давайте немного усложним приложение. Введем в него три метки (рис. 4.24), в которых будем отображать имя воспроизводимого файла, состояние открытого устройства мультимедиа и последнюю вызванную операцию.

Код, обеспечивающий подобную обратную связь в приложении, может быть следующим.

const
 ModeStr: array[TMPModes] of string =
  (' He готово', 'Остановлено', 'Воспроизведение',
   'Запись', 'Поиск', 'Пауза', 'Открыто');
 ButtonStr: array[TMPBtnType] of string =
  ('Воспроизведение', 'Пауза', 'Стоп',
   'Следующий', 'Предыдущий', 'Вперед',
   'Назад', 'Запись', 'Конец');
 
procedure TForm1.OpenClick(Sender: TObject);
begin
 if OpenDialog1.Execute
  then with MediaPlayer1 do
  begin
   FileName := OpenDialog1.FileName;
   Label1.Caption := 'Файл: ' + FileName;
   Open;
   Notify:=true;
  end;
end;
 
procedure TForm1.MediaPlayer1Notifу(Sender: TObject);
begin
 with MediaPlayer1 do
 begin
  Label2.Caption := 'Состояние: ' + ModeStr[Mode];
  {Переустановка Notify, чтобы событие произошло в следующий раз}
  Notify := true;
 end;
end;
 
procedure TForm1.FormCreate (Sender: TObject);
begin
 with MediaPlayer1 do
 begin
  Label1.Caption := 'Файл: ' + FileName;
  Label2.Caption := 'Состояние: ' + ModeStr[Mode];
  Notify:=true;
 end;
end;
 
procedure TForm1.MediaPlayer1Click(Sender: TObject;
        Button: TMPBtnType; var DoDefault: Boolean);
begin
 Label3.Caption := 'Операция: ' + ButtonStr[Button];
 {Переустановка Notify, чтобы произошло событие OnNotify}
 MediaPlayer1.Notify := true;
end;

 

Другие материалы в этой категории: Как узнать число кадров AVI файла? »

Авторизация



Счетчики