• AutoOpen – определяет, должно ли устройство автоматически открываться сразу после загрузки.
• AutoRewind – если равно True, то после завершения воспроизведения файла будет переход на его начало.
• DeviceType – определяет тип устройства, которым должен управлять объект MediaPlayer. Принимает одно из следующих значений:
– dtAVIVideo – файл AVI;
– dtCDAudio – аудио компакт-диски;
– dtDAT – цифровой кассетный аудиопроигрыватель;
– dtDigitalVideo – цифровое видео (AVI, MPG, MOV-файлы или ММ- фильм);
– dtMMMovie – формат multimedia movie;
– dtOther – неопределенный формат;
– dtSequencer – MIDI-файл;
– dtVCR – видеомагнитофон;
– dtVideodisc – проигрыватель видеодисков;
– dtWaveAudio – звуковой файл типа WAV;
– dtAutoSelect – компонент выбирает устройство автоматически, устанавливается по умолчанию.
• Display – задает оконный элемент, в котором будет происходить воспроизведение видеоданных. Если свойство не задано, то будет открываться новое дополнительное окно.
• DisplayRec – задает прямоугольную область для воспроизведения данных.
• EnableButtons – определяет набор командных кнопок, которые можно использовать в компоненте.
• StartPos – определяет начальную позицию для воспроизводимых данных. Если не задано, то воспроизведение идет сначала.
• EndPos – определяет конечную позицию для воспроизведения данных. Если не задано, то воспроизведение идет до конца.
• Position – текущая позиция при воспроизведении.
• Tracks – определяет количество дорожек для компакт-дисков.
• Frames – определяет число кадров, на которое перемещается позиция устройства при вызове методов Back и Next.
• Length – длина файла (носителя).
• TimeFormat – устанавливает временной формат, используемый конкретным устройством.
• Wait – определяет, будет управление возвращено вызывающему приложению немедленно или после завершения воспроизведения.
Одним из важных свойств является Capabilities типа TMPDevCapsSet, которое позволяет определить возможности выбранного и открытого устройства. Это свойство может принимать следующие значения, устанавливающие доступность соответствующих операций:
• mpCanE j ect – извлечение носителя;
• mpCanPlay – воспроизведение;
• mpCanRecord – запись на носитель;
• mpCanStep – перемотка вперед или назад определенного количества кадров;
• mpUsedWindow – использование окна для вывода изображения.
Перед использованием устройства его нужно открыть, поскольку большинство методов, например Play и StartRecording, можно вызвать только после открытия устройства. Оно выполняется путем вызова метода Open (листинг 5.2). Если необходимо выполнить автоматическое открытие устройства, то свойству AutoOpen типа Boolean следует присвоить значение True (по умолчанию присвоено значение Fal s е). После открытия какого-либо устройства свойство Devi s е ID типа Wo г d проигрывателя определяет идентификатор этого устройства. Если открытых устройств нет, то значение свойства DeviselD равно 0.Листинг 5.2.
Открытие проигрывателя компакт-дисков
procedure TForm1.Button2Click (Sender: TObject);
begin
//Задаем устройство воспроизведения
MyMediaPlayer.DeviceType := dtCDAudio;
//Открываем устройство
MyMediaPlayer.Open;
end;
После завершения использования мультимедийного устройства его нужно закрыть, вызвав метод Close.
После открытия устройства с помощью свойства Tracks типа Longint можно получить информацию о количестве фонограмм (дорожек). Если устройство не поддерживает дорожки, то значение этого свойства неопределенно. Свойство TrackLength ITrackNum: Integer] типа Longint содержит длину фонограммы с индексом TrackNum (отсчет начинается с единицы). Длина дорожки указывается в формате времени, который определен свойством TimeFormat.
Свойство TimeFormat типа TMPTimeFormats задает формат значений свойств, которые связаны со временем. Оно влияет на способ интерпретации и отображение значений таких свойств, как TrackLength, Length, StartPos, EndPos и Position. Основными значениями свойства TimeFormat являются следующие.
• tfMilliseconds – целое четырехбайтовое число, счетчик миллисекунд.
• tfHMS – количество часов, минут и секунд, размещенных побайтно, начиная с младшего байта, в четырехбайтовом целом. Старший байт не учитывается.
• tfMSF – количество минут, секунд и кадров, размещенных побайтно, начиная с младшего байта, в четырехбайтовом целом. Старший байт не учитывается.
• tfFrames – целое четырехбайтовое число, содержащее количество кадров.
Теперь, когда мы ознакомились с основными свойствами мультимедиа- компонента MediaPlayer, можем приступать к непосредственному применению его на практике. Приведем пример исходного текста программы, при загрузке которой проигрывается звук (в формате WAV) (листинг 5.3).
Листинг 5.3.
Воспроизведение звука при создании формы приложения
//Функция вызывается при создании формы
procedure TForm1.FormCreate(Sender: TObject);
begin
//Скрываем компонент
MyMediaPlayer.Visible := false;
//Автоматически определяем устройство воспроизведения
MyMediaPlayer.DeviceType := dtAutoSelect;
//Загружаем файл воспроизведения
MyMediaPlayer.FileName := 'start.wav
//Открываем устройство
if not MyMediaPlayer.AutoOpen then MyMediaPlayer.Open;
//Воспроизводим файл
MyMediaPlayer.Play;
end;
При создании формы Forml воспроизводится звуковой файл start. wav.
В некоторых случаях удобно хранить данные (например, звуковые записи) и использовать их прямо в запускаемом модуле (ЕХЕ-файле). Такой метод предусматривает хранение звука в файлах ресурсов (RES). На этапе сборки программы файлы ресурсов прикрепляются к запускаемому модулю, тем самым увеличивая размер модуля. Но количество файлов, необходимых для корректной работы программы, уменьшается. Так, в предыдущем случае для нормальной работы программы (воспроизведение звука при загрузке) необходим фaйлstart. wav. Следующий пример демонстрирует создание приложения, запускаемый модуль которого будет содержать все необходимые ресурсы, в нашем случае это звуковой файл.
Вначале необходимо создать файл ресурса, содержащий звуковую запись. Для этого понадобится компилятор ресурсов, который находится в кaтaлoгeBorland Delphi7Bin и носит имяЬгсс32. ехе. Далее создаем файл ресурса. Все ресурсы (значки, указатели, изображения, таблицы строк и т. п.), используемые приложением, описываются в специальном файле. Такое описание имеет фиксированный формат:
<имя> <тип> <параметры> <имя файла>
Имя – это уникальное имя ресурса, которое будет использоваться в процедурах работы с ресурсами. Имя файла – строка, содержащая путь к файлу. В нашем случае строка, описывающая ресурс:
LOADSOUND RCDATA LOADONCALL start.wav
Далее в командной строке записываемЬгсс32. ехе source. re, где source. re – текстовый файл, содержащий описание ресурса.
После компиляции получаем готовый файл pecypcasource. RES. Перемещаем его в каталог проекта. На этом этапе ресурс может использоваться.
Чтобы подключить файл ресурса, пишем в исходном тексте:
//Подключение ресурса
{$R SOURCE.RES}
Теперь, когда файл ресурса подключен и готов к использованию, необходимо создать функцию, которая будет доставать звуковой файл и воспроизводить его. Тело функции, выполняющей эти действия, выглядит следующим образом (листинг 5.4).
Листинг 5.4.
Использование ресурсов для хранения звуковых записей
//Функция, которая воспроизводит звук, находящийся в ресурсе
procedure RetrieveLoadSound;
var
hResource : THandle;
pData : Pointer;
begin
//Загружаем файл ресурса и находим звук под именем 'LOADSOUND '
hResource := LoadResource( hInstance, FindResource(hInstance,
'LOADSOUND', RT_RCDATA));
try
//Находим адрес загруженного ресурса
pData := LockResource (hResource);
if pData = nil then raise Exception.Create('Ошибка чтения
ресурса LOADSOUND ');
//Воспроизводим звуковой файл
sndPlaySound(pData, SND_MEMORY);
finally
//Освобождаем ресурс
FreeResource