МУЛЬТИМЕДИА-ПРИЛОЖЕНИЯ
ТЕРМИНОЛОГИЯ
Мультимедиа... Этот термин сейчас очень популярен и применяется ко всему, что участвует в рождении качественного звука и изображения на компьютере. Это прежде всего мультимедиа-устройства и мультимедиа-программы. Под звуком понимается не убогое пищание из стандартного динамика вашего компьютера, а высококачественная человеческая речь, пение, музыка из внешних или встроенных в монитор 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).