Чтение онлайн

ЖАНРЫ

Шрифт:
...

Листинг 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).

...

Листинг 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(hResource);

end;

end;

Для работы функции RetrieveLoadSound понадобятся две следующие переменные: hResource (дескриптор ресурса) и pData (указатель на память, расположение ресурса). Перед использованием ресурса производится его загрузка (функция LoadResource). Но чтобы загрузить именно тот ресурс, который нам необходим (звук LOADSOUND), с помощью функции FindResource ищем его в ресурсах, подключенных к этому экземпляру приложения (hlnstance). Далее получаем указатель на память, в которой находится звуковой файл, и записываем его в переменную pData. Если ресурс не найден, то программа выдаст сообщение об ошибке.

После того как был получен указатель на память, его можно использовать в функции sndPlaySound для воспроизведения звука. Параметр SND_MEMORY говорит о том, что воспроизведение будет осуществляться из памяти.

Функция RetrieveLoadSound может использоваться в любом месте программы для воспроизведения start. wav. В этом случае данные звукового файла будут находиться в запускаемом модуле, увеличивая его объем, но сокращая количество файлов приложения. Такой подход эффективен при создании небольших приложений, которые снабжаются короткими звуковыми сопровождениями.

В конце главы будет подробно описан процесс создания универсального проигрывателя, работа которого целиком построена на использовании компонента MediaPlayer. Далее рассмотрим следующий мультимедийный компонент Delphi – Animate, который позволяет воспроизводить как стандартную (встроенную в Windows), так и пользовательскую анимацию.

5.3. Компонент Animate

Видеоклип представляет собой файл в формате AVI, содержащий последовательность отдельных кадров, при отображении которых создается эффект движения. Наряду с изображением AVI-файлы могут содержать звук. Для воспроизведения видеоклипов можно использовать любой из компонентов – Animate или MediaPLayer.

Поделиться с друзьями: