Содержание
Обзор
Что такое
мультимедиа
Мультимедиа
в Delphi
Компонент
TMediaPlayer
Два вида
программ, использующих мультимедиа
Пример
программы с мультимедиа
-
- Обзор
- Delphi
позволяет легко и просто
включать в программу такие
мультимедийные объекты,
как звуки, видео и музыку. В
данном уроке обсуждается,
как это сделать, используя
встроенный в Delphi компонент
TMediaPlayer. Подробно
рассматриваются
управление этим
компонентом в программе и
получение информации о
текущем состоянии.
- Что
такое мультимедиа
- Точного
определения, что же это
такое, нет. Но в данный
момент и в данном месте,
наверное, лучше дать
по-возможности наиболее
общее определение и
сказать, что
“мультимедиа” - это
термин относящийся к почти
всем формам анимации,
звукам, видео, которые
используются на
компьютере.
Давая такое
общее определение, нужно
сказать, что в данном уроке
мы имеем дело с
подмножеством
мультимедиа, которое
включает:
1.
Показ видео в формате
Microsoft's Video for Windows (AVI).
2.
Воспроизведение звуков и
музыки из MIDI и WAVE файлов.
Данную
задачу можно выполнить с
помощью динамической
библиотеки Microsoft Multimedia
Extensions для Windows (MMSYSTEM.DLL),
методы которой
инкапсулированы в
компоненте TMediaPlay,
находящийся на странице
System Палитры Компонент Delphi.
Для
проигрывания файлов
мультимедиа может
потребоваться наличие
некоторого оборудования и
программного обеспечения.
Так для воспроизведения
звуков нужна звуковая
карта. Для воспроизведения
AVI в Windows 3.1 (или WFW)
требуется установить ПО
Microsoft Video.
- Мультимедиа
в Delphi
- В Delphi
есть компонент TMediaPlayer,
который дает Вам доступ ко
всем основным
возможностям
программирования
мультимедиа. Данный
компонент очень прост в
использовании. Фактически,
он настолько прост, что
многим начинающим
программистам будет проще
создать свою первую
программу, проигрывающую
видео или музыку, нежели
показывающую классическую
надпись "Hello World".
Простоту
использования можно
воспринимать двояко:
· С одной
стороны - это дает
возможность любому
создавать мультимедиа
приложения.
· С другой
стороны, можно обнаружить,
что в компоненте
реализованы не все
возможности. Если Вы
захотите использовать
низкоуровневые функции, то
придется копаться
достаточно глубоко,
используя язык Delphi.
В
данном уроке не
описываются подробности
внутренних вызовов
мультимедийных функций
при работе компонента. Все
что нужно знать - это то,
что компонент называется
TMediaPlayer, и что он дает
доступ к набору
подпрограмм, созданных
Microsoft и называемых Media Control
Interface (MCI). Эти подпрограммы
дают программисту простой
доступ к широкому кругу
устройств мультимедиа.
Собственно работа с TMediaPlayer
интуитивно понятна и
очевидна.
- Компонент
TMediaPlayer
Для начала
давайте создадим новый проект,
затем поместим компонент TMediaPlayer
(стр. System Палитры) на форму, как
показано на рис.1.

Рис.1: Компонент
TMediaPlayer на форме.
Компонент
TMediaPlayer оформлен, как панель
управления устройством с кнопками.
Как и на магнитофоне, здесь есть
кнопки “воспроизведение”,
“перемотка”, “запись” и др.
Поместив
компонент на форму, Вы увидите, что
Инспектор Объектов содержит
свойство "FileName" (см. рис.2).
Щелкните дважды

Рис.2:
Свойства TMediaPlayer в Инспекторе
Объектов
на этом
свойстве и выберите имя файла с
расширением AVI, WAV или
MID. На рис.2
выбран AVI файл DELPHI.AVI. Далее нужно
установить свойство AutoOpen в True.
После
выполнения этих шагов программа
готова к запуску. Запустив
программу, нажмите зеленую кнопку
“воспроизведение” (крайняя слева)
и Вы увидите видеоролик (если
выбрали AVI) или услышите звук (если
выбрали WAV или MID). Если этого не
произошло или появилось сообщение
об ошибке, то возможны два варианта:
-
- Вы ввели
неправильное имя файла.
-
- Вы не
настроили правильным образом
мультимедиа в Windows. Это
означает, что либо у Вас нет
соответствующего ”железа”,
либо не установлены нужные
драйверы. Установка и
настройка драйверов
производится в Control Panel,
требования к “железу”
приводятся в любой книге по
мультимедиа (нужна звуковая
карта, например совместимая с
Sound Blaster).
Итак, Вы
имеете возможность проигрывать AVI,
MIDI и WAVE файлы просто указывая имя
файла.
Еще одно
важное свойство компонента TMediaPlayer -
Display. Изначально оно не заполнено и
видео воспроизводится в отдельном
окошке. Однако, в качестве экрана
для показа ролика можно
использовать, например, панель. На
форму нужно поместить компонент
TPanel, убрать текст из св-ва Caption.
Далее, для TMediaPlayer, в свойстве Display
выбрать из списка Panel1. После этого
надо запустить программу и нажать
кнопку “воспроизведение” (см.
рис.3)

Рис.3:
Воспроизведение AVI на панели.
-
- Два
вида программ
мультимедиа
- · Иногда
приходится
предоставлять
пользователям простой
путь для проигрывания
максимально широкого
круга файлов. Это
означает, что Вам
нужно будет дать
пользователю доступ к
жесткому диску или
CD-ROM, и затем позволить
ему выбрать и
воспроизвести
подходящий файл. В
этом случае, на форме
обычно располагается
TMediaPlayer,
предоставляющий
возможность
управления
воспроизведением.
· Иногда
программист может
захотеть скрыть от
пользователя
существование
компонента TMediaPlayer. То
есть, воспроизвести
звук или видео без
того, чтобы
пользователь
заботился об их
источнике. В
частности, звук может
быть частью
презентации. Например,
показ какого-нибудь
графика на экране
может сопровождаться
объяснением,
записанным в WAV файл. В
течении презентации
пользователь даже не
знает о существовании
TMediaPlayer. Он работает в
фоновом режиме. Для
этого компонент
делается невидимым
(Visible = False) и
управляется
программно.
- Пример
программы с
мультимедиа
В данной
главе мы рассмотрим пример
построения приложения с
мультимедиа первого типа. Создайте
новый проект (File | New Project). Поместите
TMediaPlayer на форму; поместите
компоненты TFileListBox, TDirectoryListBox,
TDriveComboBox, TFilterComboBox для выбора файла.
В свойстве FileList для DirectoryListBox1 и
FilterComboBox1 поставьте FileListBox1. В св-ве
DirList для DriveComboBox1 поставьте
DirectoryListBox1. В св-ве Filter для FilterComboBox1
укажите требуемые расширения
файлов:
AVI File(*.avi)|*.avi
WAVE File(*.wav)|*.wav
MIDI file(*.MID)|*.mid
Пусть по
двойному щелчку мышкой в FileListBox1
выбранный файл будет
воспроизводиться. В обработчике
события OnDblClick для FileListBox1 укажите
Procedure
TForm1.FileListBox1DblClick(Sender:TObject);
begin
with MediaPlayer1 do
begin
Close;
FileName:=FileListBox1.FileName;
Open;
Play;
end;
end;
Внешний вид
формы представлен на рис.4

Рис.4:
Начальный вид проекта
Сохраните
проект, запустите его, выберите
нужный файл и дважды щелкните на
него мышкой. MediaPlayer должен
воспроизвести этот файл в
отдельном окне.
Как уже
говорилось выше, видеоролик можно
воспроизводить внутри формы,
например, на панели. Давайте слегка
модифицируем проект и добавим туда
панель TPanel (см. рис.5). В св-ве Display для
MediaPlayer1 укажите Panel1. Нужно убрать
надпись с панели (Caption)
и св-во BevelOuter
= bvNone. Чтобы переключаться при
воспроизведении с окна на панель -
поместите TСheckBox на форму и в
обработчике события OnClick для него
запишите:
procedure TForm1.CheckBox1Click(Sender:
TObject);
var
Start_From : Longint;
begin
with MediaPlayer1 do begin
if FileName='' then Exit;
Start_From:=Position;
Close;
Panel1.Refresh;
if CheckBox1.Checked then
Display:=Panel1
else
Display:=NIL;
Open;
Position:=Start_From;
Play;
end;
end;
Запустите
проект и воспроизведите
видеоролик. Пощелкайте мышкой на
CheckBox.

Рис.5:
Добавлена панель для
воспроизведения видео и
переключатель окно/панель.
Во время
выполнения программы может
потребоваться отобразить текущее
состояние объекта MediaPlayer и самого
ролика (время, прошедшее с начала
воспроизведения, длину ролика). Для
этого у объекта TMediaPlayer есть
соответствующие свойства и
события: Length, Position, OnNotify и др.
Давайте добавим в проект
прогресс-индикатор (TGauge), который
отобразит в процентах, сколько
прошло времени (см. рис.6). Для
обновления показаний индикатора
можно воспользоваться таймером.
Поместите на форму объект TTimer,
установите для него Interval = 100 (100
миллисекунд). В обработчике события
OnTimer нужно записать:
procedure TForm1.Timer1Timer(Sender:
TObject);
begin
with MediaPlayer1 do
if FileName<>'' then
Gauge1.Progress:=Round(100*Position/Length);
end;
Запустите
проект, выберите файл (AVI) и щелкните
на нем два раза мышкой. При
воспроизведении ролика
прогресс-индикатор должен
отображать процент,
соответствующий прошедшему
времени (см. рис.6).

Рис.6:
Законченное приложение
для воспроизведения AVI, WAV и
MDI файлов.
|