МУЛЬТИМЕДИА-ПРИЛОЖЕНИЯ

ТЕРМИНОЛОГИЯ

Мультимедиа... Этот термин сейчас очень популярен и применяется ко всему, что участвует в рождении качественного звука и изображения на компьютере. Это прежде всего мультимедиа-устройства и мультимедиа-программы. Под звуком понимается не убогое пищание из стандартного динамика вашего компьютера, а высококачественная человеческая речь, пение, музыка из внешних или встроенных в монитор HiFi-колонок. А под изображением понимается не только качественная статичная картинка, но и фильм.

Музыка, голос и звуковые эффекты хранятся на носителях информации в файлах специальных форматов, среди которых чаще всего применяется формат WAV (от слова wave). Это очень условный аналог аудиокассеты. Для хранения видеороликов чаще всего используются файлы с расширением AVI (Audio-Video-Information). Это аналог видеокассеты. Применяется еще много разных форматов, среди которых стоит выделить MIDI. Он служит в основном для хранения музыки по нотам, правда, звуковые эффекты, включая человеческий голос, не поддерживает. Обычно аудио- и видеофайлы получаются очень большими, поэтому мультимедиа-приложения поставляются на лазерных дисках. Еще пять лет назад о современных возможностях мультимедиа не смели и мечтать, сегодня же программа, не умеющая что-то рассказывать и показывать видеоролики, кажется анахронизмом. Поэтому каждый уважающий себя программист должен уметь создавать мультимедиа-программы, a Delphi вам в этом поможет.

КАК УСТРОЕНЫ МУЛЬТИМЕДИА-ПРОГРАММЫ

С самого начала полезно знать, как работает мультимедиа-программа. Объясним этот внутренне крайне сложный процесс на следующем простейшем примере. Пусть требуется создать программу — гид по какой-нибудь картинной галерее. Сценарий будет таким: пользователь по очереди вызывает на экран изображения картин, а из звуковых колонок раздаются соответствующие изображению комментарии экскурсовода. Как это сделать? Простейшее решение выглядит так:

• с помощью фотоаппарата сделать слайды с картин;

• с помощью сканера сделать соответствующие слайдам файлы в одном из графических форматов (например, BMP); есть камеры (например, KODAK DC 50, 768х504х24 bit, 48 кадров), которые создают цифровые образы фотографируемых объектов, позволяющие переписывать фотографии прямо из локальной памяти фотоаппарата в память компьютера; в этом случае необходимость в сканировании отпадает;

• с помощью микрофона, подключенного к звуковой плате, записать комментарии к каждому BMP-файлу и сохранить звук в специальных WAV-файлах (например, с помощью стандартного приложения Windows Фонограф);

• написать программу, которая по выбору пользователя выводит BMP-файлы и активизирует соответствующий текущему изображению звук из WAV-файла.

Если у вас есть видеокамера (лучше — цифровая), специальная видеоплата (например, Video Galaxy Gamma TV) и программа для работы с видео (например, Adobe-Premiere), то можно создать о музее фильм и с помощью видеоплаты перевести изображение в пригодный для показа на экране компьютера вид (например, в файл формата AVI). Вот и все.

 

Любая другая программа отличается от этой схемы лишь деталями. Например, элементы изображения могут двигаться, тогда каждой диспозиции будет соответствовать свой AVI-файл. Для создания более сложных приложений на базе AVI-формата, например, видеороликов, используются специальные программы.

МУЛЬТИМЕДИА-КОМПЬЮТЕР

Мультимедиа-программы работают на компьютерах, которые имеют:

• CD-ROM для работы с лазерными компакт-дисками (желательно 4- или 8-скоростной);

• звуковую плату с соответствующим драйвером;

• звуковые колонки (желательно высокого качества);

• микрофон (если вы собираетесь говорить с программой или сами записывать WAV-файлы).

Все эти устройства стоят в пределах $200 — 300, но удовольствия доставляют массу. Вы можете слушать музыку, играть в озвученные игры, учить иностранные языки.

КОМПОНЕНТ MEDIAPLAYER

Всем перечисленным выше железом управляет всего один компонент Delphi, имя которому MediaPlayer. Кое-что он делает сам, но в основном работают мощные мультимедиа-средства Windows, к которым компонент MediaPlayer обращается в нужный момент. Компонент MediaPlayer находится в Палитре Компонентов на странице System (рис. 8. 19).

На форме компонент MediaPlayer выглядит как прямоугольная панель с девятью кнопками, очень похожая на панель управления видеомагнитофона или проигрывателя компакт-дисков (рис. 8. 20):

Компонент MediaPlayer имеет множество свойств, важнейшие из них кратко описаны в табл. 8. 2.

Свойство

Описание

 

AutoEnable

 

AutoOpen

AutoRewind

 

ColoretButtons

DeviceType

Display

EnabletButtons

FileName

Shareable

VisibleButtons

Определяет, будет ли компонент MediaPlayer автоматически разрешать и запрещать отдельные кнопки.

Задает автоматическое открытие мультимедиа-устройство перед воспроизведением или записью.

Задает автоматическую перемотку мультимедиа-устройство перед воспроизведением или записью.

Множество цветных кнопок.

Тип мультимедиа-устройства.

Окно-экран, используемое для воспроизведения видео.

Множество разрешенных кнопок.

Имя файла для воспроизведения или записи.

Определяет, могут ли несколько приложений разделять одно мультимедиа-устройство.

Множество видимых кнопок.

 

Подготовка компонента MediaPlayer к работе выполняется следующим образом. Прежде всего с помощью свойства DeviceType задается тип мультимедиа-устройства, с которым вы будете работать. Это может быть CD-ROM, WAV-файл, и т. д. Если присвоить свойству DeviceType значение dtAutoSelect, то тип устройства будет определяться автоматически, но лучше дать свойству значение из соответствующего списка: dtCDAudio, dtVideodisk, dtDigitalVideo и т. д.

Разобравшись с устройством, обратите внимание на свойство автоматического открытия AutoOpen. Если вы работаете с устройством CD-ROM, то свойство AutoOpen должно быть равно True, если с WAV-файлом, то свойство AutoOpen должно быть равно False. Свойство “автоперемотки AutoRewind должно иметь значение Тrue, тогда устройство будет автоматически возвращаться в исходное состояние после завершения воспроизведения.

Все 9 кнопок панели вам могут не понадобиться. Например, если вы хотите слушать стандартные компакт-диски, то кнопка btRecord явно ни к чему, а кнопка btEject лишняя при работе с WAV-файлами. С помощью составного свойства VisibleButtons вы можете выбрать нужные:

btPlay — начать воспроизведение;

btPause — пауза;

btStop — остановить воспроизведение;

btNext — перейти к следующему фрагменту;

btPrev — перейти к предыдущему фрагменту;

btStep — перемещает позицию чтения на заданное количество кадров вперед;

btBack — перемещает позицию чтения на заданное количество кадров назад;

btRecord — начать запись;

btEject — извлечь носитель (например, компакт-диск) из устройства.

По умолчанию они имеют значение True, т. е. присутствуют на панели. Чтобы убрать ненужную кнопку с панели, достаточно присвоить соответствующему подсвойству значение False.

Если вам не нравится стандартный цвет отметок на кнопках, его можно изменить с помощью свойства ColoredButtons. Все его подсвойства по умолчанию имеют значение True и определяют для кнопок принятые в видео- и аудиомире цвета: зеленый для воспроизведения, желтый для паузы и т. д. Если любому из подсвойств присвоить значение False, то соответствующая кнопка будет иметь черный цвет.

Еще одно свойство — EnabledButtons — задает, какие кнопки доступны на панели. Недоступные кнопки окрашены в серый цвет. Например, если вы слушаете первую песню диска, то кнопка btPrev должна быть недоступна. Заботу о доступности кнопок можно поручить свойству AutoEnable. Присвойте ему значение True, и кнопки в нужный момент сами окрасятся в серый цвет.

ПРОИГРЫВАТЕЛЬ КОМПАКТ-ДИСКОВ

Иногда хочется расслабиться и послушать хорошую музыку. Если у вас есть компакт-диск, но нет хорошего проигрывателя компакт-дисков, его можно сделать из компьютера. Для этого потребуется не более двух минут:

Шаг 1. Начните новое приложение.

Шаг 2. Возьмите компонент MediaPlayer и поместите его на форму.

Шаг 3. Так как предполагается работа с компакт-диском, свойству DeviceType присвойте значение dtCDAudio, а свойству AutoOpen — значение True.

Шаг 4. В составном свойстве VisibleBottons установите значения: btStep=False, btBack=False, btRecord=False. Этим действием вы уберете с панели все ненужные кнопки. Панель управления станет такой (рис. 8.21):

Шаг 5. Выполните компиляцию проекта и запустите приложение.

Шаг 6. Вставьте ваш любимый компакт-диск в устройство CD-ROM.

Шаг 7. Щелкните мышью на кнопке Play.

Готово! Вы реализовали простейший пример использования MediaPlayer. Неплохо, а? Давайте-ка сделаем что-нибудь посложнее.

ВИДЕОПРОИГРЫВАТЕЛЬ

Как считают многие, музыка — хорошо, но музыкальный видеоклип — лучше. Давайте создадим приложение, которое заменит вам видеопроигрыватель и обеспечит просмотр AVI-файлов с видеоклипами.

Шаг 1. Начните разработку нового приложения. Дайте форме имя VideoPlayerForm, впишите в свойстве Caption заголовок Video Player и откорректируйте размеры формы.

Шаг 2. Создайте на форме панель и разместите на ней кнопки управления видеоплейером. Для этого поместите на форму компонент Panel, назовите его ToolbarPanel и установите его свойство Align в значение alTop. Затем поместите на ToolbarPanel компонент MediaPlayer и установите в составном свойстве VisibleButtons: btRecord = False, btEject = False (рис. 8. 22).

Шаг 3. Видеопроигрывателю необходим экран, на котором будет отображаться видеоклип. Этот экран мы создадим из компонента Panel. Для этого поместите указанный компонент на форму, переименуйте его в ScreenPanel и очистите его свойство Caption. Установите свойство Align в значение alClient, а свойство BevelOuter в значение bvNone (рис. 8. 23).

Шаг 4. Подключите теперь компонент MediaPlayer к соответствующему экрану, установив значение ScreenPanel и его свойстве Display (рис.8.24).

Создадим еще на форме индикатор, который будет динамически отображать процесс воспроизведения, создавая эффект движения головки считывания. Для этого воспользуемся компонентом TrackBar, который расположен в Политре Компонентов на странице Win95 (рис.8.25)

Компонент TrackBar – это полоса с засечками и перемещающимся вдоль нее ползунком. Полоса может быть горизонтальной или вертикальной, засечки могут идти с любым заданным шагом, а ползунок имеет текущую позицию и диапазон перемещений. Представление о возможностях компонента TrackBar дает следующая сжатая характеристика его важнейших свойств (смабл. 8.3).

Таблица 8.3. Важнейшие свойства компонента TrackBar

Свойство

Описание

Frequency

LineSize

Min, Max

Orientation

 

PageSize

Position

SelStart, SelEnd

TickMarks

TickStyle

Частота засечек на полосе.

Количество засечек, на которое перемещается ползунок при нажатии клавиш управления курсором.

Минимальное и максимальное значения позиции ползунка.

Определяет, как расположена полоса: горизонтально или вертикально.

Количество засечек, на которое перемещается ползунок при нажатии клавиш PgUp и PgDn или при щелчке по полосе с помощью мыши.

Положение ползунка.

Начало и конец выделения, показываемого компьютером.

Расположение засечек относительно полосы компонента.

Стиль засечек: tsAuto (в каждой позиции ползунка), tsManual (на концах полосы), tsNone (без засечек).

Шаг 5. Поместите компонент TrackBar на панель ToolbarPanel, дайте новому компоненту имя TrackBar и откорректируйте его положение и размеры.

Шаг 6. Для того чтобы ползунок компонента TrackBar ассоциировался с головкой считывания, установите следующие значения свойств в компоненте TrackBar: TickMarkc = tmBoth; TickStyle = tmNone. Пока ни один видеоклип не загружен, TrackBar работать не должен, поэтому установите в нем свойство Enabled в значение False (рис. 8.26).

Шаг 7. Чтобы достичь эффекта перемотки видеоролика при перемещении ползунка пользователем, определите для компонента TrackBar следующий обработчик события OnChange:

procedure TVdeoPlayerForm. TrackBarChanqe (Sender : Tobject);

begin

MediaPlayer. Position: = TrackBar. Position;

end;

Шаг 8. Движение ползунка в процессе воспроизведения видеоклипа организуем с помощью таймера. Для этого поместите на форму компонент Timer, дайте ему имя Timer и установите его свойство interval в значение 100. Пока ни один видеоклип не загружен, таймер работать не должен, поэтому установите в компоненте Timer свойство Enabled в значение False ( рис.8.27)

Шаг 9. Затем определите для компонента Timer следующий обработчик события OnTimer :

procedure TvideoPlayerForm. TimerTimer( Sender: Tobject );

beqin

TrackBar Position: MediaPlayer. Position;

end;

Нам осталось реализовать выбор в диалоге интересующего видеоклипа (AVI – файла), и его установку в MediaPlayer для воспроизведения.

Шаг 10. Для этого поместите на панель ToolbarPanel компонент Button, назовите его OpenBtn и установите в нем свойство Caption в значение Open… .

Шаг 11. Поместите на форму компонент OpenDialog, реализующий диалог выбора файла, и установите его свойства: Name = OpenDialoq; DefaultExt = avi; Filter = Video Clip (* .avi)|* . avi (рис.8.28)

Шаг 12. Затем определите следующий обработчик события OnClick в кнопке OpenBtn:

procedure TvideoPlayerForm. OpenBtnClick( Sendtr: Tobject );

begin

If OpenDialog. Execute then

begin

MediaPlayer. EileName: = OpenDialog. FileName;

MediaPlayer. Open;

TrackBar. Max: = MediaPlayer. Length;

TrackBar. PageSize: MediaPlayer. Frames;

TrackBar. Enabled: True;

Timer. Enabled: = True;

Caption: = ‘Video Player – ‘ + MediaPlayer. FileName;

end;

end;

Шаг 13. Если вы желаете, чтобы изображение масштабировалось при изменении размеров окна просмотра, определите для компонента ScreenPanel следующий обработчик события OnResize;

procedure TvideoPlayerForm. ScreenPanelResize( Sender: Tobject );

begin

MediaPlayer. DisplayRect : = ScreenPanel. ClientRect ;

end;

Заметим, что масштабирование изображения достигается с помощью установки в компоненте MediaPlayer свойства DisplayRect. Это свойство содержит координаты прямоугольной области экрана, на которую проецируется изображение.

Шаг 14. Теперь выполните компиляцию проекта, и можете смотреть любые видеоклипы(рис. 8.29).