Листинг 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\ Delphi7\Bin\ и носит имяЬгсс32. ехе. Далее создаем файл ресурса. Все ресурсы (значки, указатели, изображения, таблицы строк и т. п.), используемые приложением, описываются в специальном файле. Такое описание имеет фиксированный формат:
<имя> <тип> <параметры> <имя файла>
Имя – это уникальное имя ресурса, которое будет использоваться в процедурах работы с ресурсами. Имя файла – строка, содержащая путь к файлу. В нашем случае строка, описывающая ресурс:
LOADSOUND RCDATA LOADONCALL start.wav
Далее в командной строке записываемЬгсс32. ехе source. re, где source. re – текстовый файл, содержащий описание ресурса.
После компиляции получаем готовый файл pecypcasource. RES. Перемещаем его в каталог проекта. На этом этапе ресурс может использоваться.
Чтобы подключить файл ресурса, пишем в исходном тексте:
//Подключение ресурса
{$R SOURCE.RES}
Теперь, когда файл ресурса подключен и готов к использованию, необходимо создать функцию, которая будет доставать звуковой файл и воспроизводить его. Тело функции, выполняющей эти действия, выглядит следующим образом (листинг 5.4).