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

на главную - закладки

Жанры

Шрифт:

• 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.

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

• они не должны содержать звука;

• информация в них не должна быть сжатой;

• размер файла не должен превышать 64 Кбайт.

Для задания воспроизводимого видеоклипа используются свойства FileName и CommonAVI. В один момент можно использовать только одно из этих свойств. Проигрываемый AVI-файл, существующий на диске, указывается путем задания свойства FileName, при этом свойству CommonAVI автоматически присваивается значение aviNone. Свойство CommonAVI позволяет выбрать один из стандартных клипов Windows и принимает следующие значения:

Поделиться:
Популярные книги

Догадка Ферма

д'Айон Жан
3. Луи Фронсак
Детективы:
исторические детективы
6.40
рейтинг книги
Догадка Ферма

Леди Элизабет

Уэйр Элисон
Проза:
историческая проза
8.50
рейтинг книги
Леди Элизабет

Последний Паладин. Том 6

Саваровский Роман
6. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 6

Учитель истории

Ибрагимов Канта
Проза:
военная проза
историческая проза
4.00
рейтинг книги
Учитель истории

Время зимы

Субботина Айя
Фантастика:
фэнтези
4.00
рейтинг книги
Время зимы

Первый среди равных. Книга III

Бор Жорж
3. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
6.00
рейтинг книги
Первый среди равных. Книга III

111 симфоний

Михеева Людмила Викентьевна
Справочная литература:
справочники
6.00
рейтинг книги
111 симфоний

Юность в Железнодольске

Воронов Николай Павлович
Проза:
советская классическая проза
5.00
рейтинг книги
Юность в Железнодольске

Годы прострации

Таунсенд Сьюзан
7. Дневники Адриана Моула
Юмор:
юмористическая проза
4.00
рейтинг книги
Годы прострации

Тринадцатый IV

NikL
4. Видящий смерть
Фантастика:
боевая фантастика
попаданцы
6.25
рейтинг книги
Тринадцатый IV

Москва 2042

Войнович Владимир Николаевич
Фантастика:
социально-философская фантастика
7.73
рейтинг книги
Москва 2042

Белые и синие

Дюма-отец Александр
Приключения:
исторические приключения
6.80
рейтинг книги
Белые и синие

Сборник коротких эротических рассказов

Коллектив авторов
Любовные романы:
эро литература
love action
7.56
рейтинг книги
Сборник коротких эротических рассказов

Серв-батальон

Ливадный Андрей Львович
10. Экспансия: История Галактики
Фантастика:
космическая фантастика
8.29
рейтинг книги
Серв-батальон