Засоби створення мультимедійних додатків b> p>
Зміст b> p>
Огляд p>
Що таке мультимедіа p>
Мультимедіа в Delphi p>
Компонент TMediaPlayer p>
Два види програм, що використовують мультимедіа p>
Приклад програми з мультимедіа p>
Огляд b> p>
Delphi дозволяє легко і просто включати в
програму такі мультимедійні об'єкти, як звуки, відео і музику. У
даному уроці обговорюється, як це зробити, використовуючи вбудований в Delphi
компонент TMediaPlayer. Докладно розглядаються управління цим
компонентом у програмі та отримання інформації про поточний стан.
Що таке мультимедіа b>
Точного визначення, що ж це таке, немає. Але в
даний момент і в даному місці, напевно, краще дати по-можливості
найбільш загальне визначення і сказати, що "мультимедіа" - це термін
що відноситься до майже всім формам анімації, звуків, відео, які
використовуються на комп'ютері.
Даючи таке загальне визначення, потрібно сказати, що в даному уроці ми маємо справу з підмножиною мультимедіа, яке включає: p>
1. Показ відео у форматі Microsoft's Video for Windows (AVI). P>
2. Відтворення звуків і музики з MIDI і WAVE файлів. P>
Дану задачу можна виконати за допомогою динамічної бібліотеки Microsoft Multimedia Extensions для Windows
(MMSYSTEM.DLL), методи якої інкапсульовані в компоненті TMediaPlay, що знаходиться на сторінці System Палітри Компонент Delphi. p>
Для програвання мультимедійних файлів може бути потрібно наявність деякого обладнання та програмного забезпечення. Так
для відтворення звуків потрібна звукова карта. Для відтворення AVI в Windows 3.1 (або WFW) потрібно встановити ПО Microsoft Video. P>
Мультимедіа в Delphi b>
У Delphi є компонент TMediaPlayer, який
дає Вам доступ до всіх основних можливостей програмування мультимедіа.
Цей компонент дуже простий у використанні. Фактично, він настільки
простий, що багатьом починаючим програмістам буде простіше створити свою
першу програму, програвати відео або музику, ніж показує
класичну напис "Hello World".
Простоту використання можна сприймати двояко: p>
· З одного боку - це дає можливість будь-якому створювати мультимедіа програми. p>
· З іншого боку, можна виявити, що в компоненті реалізовані не всі можливості. Якщо ви захочете використовувати
низькорівневі функції, то доведеться копатися досить глибоко, використовуючи мову Delphi. p>
У цьому уроці не описуються подробиці внутрішніх викликів мультимедійних функцій при роботі компонента. Все що потрібно
знати - це те, що компонент називається TMediaPlayer, і що він дає доступ до набору підпрограм, створених Microsoft і званих Media Control Interface
(MCI). Ці підпрограми дають програмісту простий доступ до широкого кола пристроїв мультимедіа. Власне робота з TMediaPlayer інтуїтивно зрозуміла і
очевидна. p>
Компонент TMediaPlayer b>
Для початку давайте створимо новий проект, потім помістимо компонент TMediaPlayer (стор. System Палітри) на форму, як показано на рис.1. p>
p>
Рис.1: Компонент TMediaPlayer на формі. b> p>
Компонент TMediaPlayer оформлений, як панель управління пристроєм з кнопками. Як і на магнітофоні, тут є кнопки "відтворення",
"Перемотування", "запис" та ін p>
Помістивши компонент на форму, Ви побачите, що Інспектор Об'єктів містить властивість "FileName" (див. рис.2). Клацніть двічі p>
p>
Рис.2: Властивості TMediaPlayer в інспектор об'єктів b> p>
на цю властивість і виберіть ім'я файлу з розширенням AVI, WAV або p>
MID. На рис.2 обраний AVI файл DELPHI.AVI. Далі потрібно встановити властивість AutoOpen в True. P>
Після виконання цих кроків програма готова до запуску. Запустивши програму, натисніть зелену кнопку "відтворення" (крайня зліва) і Ви побачите
відеоролик (якщо вибрали AVI) або почуєте звук (якщо вибрали WAV або MID). Якщо цього не сталося або з'явилося повідомлення про помилку, то можливі два
варіанти: p>
Ви ввели неправильне ім'я файлу.
Ви не налаштували правильним чином мультимедіа в Windows. Це
означає, що або у Вас немає відповідного "заліза", або не
встановлені потрібні драйвери. Встановлення і налагодження драйверів проводиться
в Control Panel, вимоги до "заліза" приводяться в будь-якій книзі по
мультимедіа (потрібна звукова карта, наприклад сумісна з Sound Blaster).
Отже, Ви маєте можливість програвати AVI, MIDI і WAVE файли просто вказуючи ім'я файлу. p>
Ще одна важлива властивість компонента TMediaPlayer - Display. Спочатку воно не заповнено і відео відтворюється в окремому віконці. Однак, як
екрану для показу ролика можна використовувати, наприклад, панель. На форму потрібно помістити компонент TPanel, прибрати текст з св-ва Caption. Далі, для
TMediaPlayer, у властивості Display вибрати зі списку Panel1. Після цього треба запустити програму і натиснути кнопку "відтворення" (див. рис.3) p>
p>
Рис.3: Відтворення AVI на панелі. b> p>
Два види програм мультимедіа b>
· Іноді доводиться надавати користувачам
простий шлях для програвання максимально широкого кола файлів. Це
означає, що Вам потрібно буде дати користувачеві доступ до жорсткого диска
або CD-ROM, і потім дозволити йому вибрати та відтворити відповідний
файл. У цьому випадку, на формі звичайно розташовується TMediaPlayer,
що надає можливість управління відтворенням.
· Іноді програміст може захотіти приховати від користувача існування компонента TMediaPlayer. Тобто, відтворити звук
або відео без того, щоб користувач дбав про їх джерелі. Зокрема, звук може бути частиною презентації. Наприклад, показ якого-небудь графіка на
екрані може супроводжуватися поясненням, записаним в WAV файл. Протягом презентації користувач навіть не знає про існування TMediaPlayer. Він
працює у фоновому режимі. Для цього компонент робиться невидимим (Visible = False) і управляється програмно. P>
Приклад програми з мультимедіа b>
У цьому розділі ми розглянемо приклад побудови програми з мультимедіа першого типу. Створіть новий проект (File | New Project). Помістіть
TMediaPlayer на форму; помістіть компоненти TFileListBox, TDirectoryListBox, TDriveComboBox, TFilterComboBox для вибору файлу. У властивості FileList для
DirectoryListBox1 і FilterComboBox1 поставте FileListBox1. У св-ве DirList для DriveComboBox1 поставте DirectoryListBox1. У св-ве Filter для FilterComboBox1
вкажіть необхідні розширення файлів: p>
AVI File (*. avi) | *. avi p>
WAVE File (*. wav) | *. wav p>
MIDI file (*. MID) | *. mid p>
Хай по подвійному кліку мишкою в FileListBox1 вибраний файл буде відтворюватися. У обробнику події OnDblClick для FileListBox1 вкажіть p>
Procedure TForm1.FileListBox1DblClick (Sender: TObject); p>
begin p>
with MediaPlayer1 do p>
begin p>
Close; p>
FileName: = FileListBox1.FileName; p>
Open; p>
Play; p>
end; p>
end; p>
Зовнішній вигляд форми представлений на мал.4 p>
p>
Рис.4: Початковий вигляд проекту b> p>
Збережіть проект, запустіть його, виберіть потрібний файл і двічі клацніть на нього мишкою. MediaPlayer повинен відтворити це фото в окремому вікні. p>
Як вже говорилося вище, відеоролик можна відтворювати всередині форми, наприклад, на панелі. Давайте трохи модифікуємо проект і додамо туди панель
TPanel (див. рис.5). У св-ве Display для MediaPlayer1 вкажіть Panel1. Потрібно прибрати напис з панелі (Caption) p>
і св-во BevelOuter = bvNone. Щоб перемикатися при відтворенні з вікна на панель - помістіть TСheckBox на форму і в обробнику події OnClick для
нього запишіть: p>
procedure TForm1.CheckBox1Click (Sender: TObject); p>
var p>
Start_From: Longint; p>
begin p>
with MediaPlayer1 do begin p>
if FileName =''then Exit; p>
Start_From: = Position; p>
Close; p>
Panel1.Refresh; p>
if CheckBox1.Checked then p>
Display: = Panel1 p>
else p>
Display: = NIL; p>
Open; p>
Position: = Start_From; p>
Play; p>
end; p>
end; p>
Запустіть проект і відтворіть відеоролик. Поклацувати мишкою на CheckBox. P>
p>
· · Рис.5: Додана панель для відтворення відео і перемикач вікно/панель. b> p>
Під час виконання програми може бути потрібно відобразити поточний стан об'єкта MediaPlayer і самого ролика (час, що минув з початку
відтворення, довжину ролика). Для цього в об'єкта TMediaPlayer є відповідні властивості та події: Length, Position, OnNotify та ін Давайте
додамо в проект прогрес-індикатор (TGauge), що відобразить у відсотках, скільки минуло часу (див. рис.6). Для оновлення показань індикатора можна
скористатися таймером. Помістіть на форму об'єкт TTimer, встановіть для нього Interval = 100 (100 мілісекунд). У обробнику події OnTimer потрібно записати: p>
procedure TForm1.Timer1Timer (Sender: TObject); p>
begin p>
with MediaPlayer1 do p>
if FileName''then p>
Gauge1.Progress: = Round (100 * Position/Length); p>
end; p>
Запустіть проект, виберіть файл (AVI) і клацніть на ньому два рази мишкою. При відтворенні ролика прогрес-індикатор повинен відображати відсоток,
відповідний пройшов часу (див. рис.6). p>
p>
· · Рис.6: Закінчений додаток для відтворення AVI, WAV і MDI файлів. b> p>