Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Тема Використання мультимедіа в C Builder

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 24.11.2024

Лабораторна робота 8

Тема. Використання мультимедіа в C++ Builder. Компонент MediaPlayer

Мета.Навчитись створювати програми, що забезпечують перегляд відеороликів і мультиплікації, відтворення музики, звукових ефектів, тощо.

Завдання до роботи:

Задача 1. Відтворення звуку. Створіть програму, використавши компонент MediaPiayer для відтворення звуку, за допомогою якої, можна прослуховувати звукові фрагменти, що супроводжують події Windows, — такі, як початок і завершення роботи, появу діалогового вікна та інші.

Програма повинна працювати таким чином: після запуску функція обробки події onCreate формує список звукових файлів (WAV, MID і RMI), які знаходяться в підкаталозі Media головного каталога Windows. За допомогою функцій FindFirst і FindNext забезпечити пошук файлів, що задовольняють критеріям. Після того, як список сформований, використати метод Play для відтворення звукових файлів.

Задача 2. Програвач компакт-дисків. На основі компоненту MediaPiayer створити програвач компакт-дисків. На початку роботи на індикаторі повинна виводитись інформація про час відтворення CD або повідомлення про необхідність вставити в дисковод Audio CD, або номер і тривалість трека, а також час від початку відтворення.

Теоретичні відомості

Більшість сучасних програм, що працюють в середовищі Windows, є мультимедійними. C++ Builder надає в розпорядження програміста два компоненти, які дозволяють розробляти мультимедійні програми:

  1. Animate — забезпечує виведення анімації без звуку;
  2. MediaPlayer — дозволяє вирішувати складніші завдання, наприклад відтворювати відеоролики, звук і супроводжувану звуком анімацію.

Теоретичні відомості

Компонента MediaPlayer

Компонента MediaPlayer забезпечує відтворення звукових файлів різних форматів (WAV, MID, RMI, МРЗ), повноцінної, супроводжуваної звуком анімації і відеороликів (AVI) і музичних компакт-дисків.

Значок компоненти MediaPlayer знаходиться на вкладці System.Компонента MediaPlayer є групою кнопок, подібних тим, які можна бачити на звичайномузичному аудіо- або відеоплеєрі. Властивості компоненти MediaPlayer, доступні під час розробки форми, наведені в таблиці 1.

Таблиця 1. Властивості компоненти MediaPlayer

Властивість

Опис

DeviceType

Тип пристрою. Визначає конкретний пристрій, який є компонентом MediaPlayer. Тип пристрою задається іменованою константою: dtAutoSelect — тип пристрою визначається автоматично по розширенню файлу; dtVaweAudio — програвач звуку; dtAVlvideo— відеопрогравач; dtCDAudio — CD-проигрыватель

FileName

Ім'я файлу, в якому знаходиться відтворний звуковий фрагмент або відеоролик

AutoOpen

Ознака автоматичного завантаження відразу після запуску програми файлу відеоролика або звукового фрагмента

Display

Визначає компонент, поверхня якого використовується як екран для відтворення відеоролика (зазвичай як екран для відображення відео використовують компонент Panel)

VisibleButtons

Складена властивість. Визначає видимі кнопки компоненту. Дозволяє зробити невидимими деякі кнопки

Окрім властивостей, доступних в процесі розробки форми, компонента MediaPlayer надає властивості, доступні під час роботи програми (таблиця 2), які дозволяють отримати інформацію про стан медіаплеєра, відтворений файл або трек Audio CD. Якщо MediaPlayer використовується для відтворення Audio CD, то інформація про відтворний трек може бути представлена у форматі tfTMSF (Track, Minute, Second, Frame — трек, хвилина, секунда, кадр).

Таблиця 2. Властивості компоненти MediaPlayer, які доступні під час роботи програми

Властивість

Опис

Length

Довжина (час, необхідний для відтворення) відкритого файлу (наприклад, WAV або AVI) або всіх треків Audio CD

Tracks

Кількість треків на відкритому пристрої (кількість композицій на Audio CD)

TrackLength

Довжина (тривалість) треків. Властивістю є масив

Position

Позиція (час від початку) в процесі відтворення трека

TimeFormat

Формат представлення значень властивостей Length, TrackLength і Position. Найбільш універсальним є формат tfMilliseconds. Якщо медиаплеер є програвачем звукових CD, то зручно використовувати формат tfTMSF

Mode

Стан пристрою відтворення. Пристрій може знаходитися в стані відтворення (mpPlaying). Процес відтворення може бути зупинений (mpStopped) або припинений (mpPaused). Пристрій може бути не готовий до роботи (mpNotReady) або в пристрої (CD-дисководі) може бути відсутнім носій (mpOpen)

Display

Екран — поверхня, на якій здійснюється відображення кліпу. Якщо значення властивості не задане, то відображення здійснюється в окремому, створюваному під час роботи програми вікні

DisplayRect

Розмір і положення області відображення кліпу на поверхні екрану

Play()

Активізує процес відтворення. Дія методу аналогічно клацанню на кнопці Play

Stop ( )

Зупиняє процес відтворення

Pause ( )

Припиняє процес відтворення

Next ( )

Перехід до наступного трека, наприклад до наступної композиції на Audio CD

Previous ( )

Перехід до попереднього трека, наприклад до наступної композиції на Audio CD

Step ( )

Перехід до наступного кадру

Back ( )

Перехід до попереднього кадру

Хід роботи

Задача 1. Відтворення звуку

  1.  Створити форму як діалогове вікно програми "Звуки Windows" (рисунок 1).

Рис. 1. Форма і діалогове вікно програми "Звуки Windows"

  1.  Задати властивості компонента MediaPlayer1

Таблиця 3. Значення властивостей компоненту MediaPlayer1

Властивості

Значення

DeviceType

dtAutoSelect

VisibleButtons .btNext

false

VisibleButtons . BtPrev

false

VisibleButtons .btStep

false

VisibleButtons. btBack

false

VisibleButtons .btRecord

false

VisibleButtons. btEject

false

  1.  Розмістити на форму компоненти ListBox1, який використовується для вибору звукового файлу, і два компоненти ТLabel, перший з яких використовується для виведення інформаційного повідомлення, другий, — для відображення імені файлу, вибраного користувачем.
  2.  Запрограмувати подію OnCreate для форми

void __fastcall TForml::FormCreate(TObject *Sender)

{

char *wd;//каталог Windows

wd = (char*)AllocMem(MAX_PATH);

GetWindowsDirectory(wd,MAX_PATH);

SoundPath = wd;

// звукові файли знаходяться в підкаталозі Media

SoundPath = SoundPath + "\\Media\\";

// формуємо список звукових файлів

TSearchRec sr;

if (FindFirst( SoundPath + "*.wav", faAnyFile, sr) == 0)

{

// знайдено файл з розширенням wav

ListBoxl->Items->Add(sr.Name);

// добляємо ім’я файла в список

while (FindNext(sr) == 0)

ListBoxl->Items->Add(sr.Name);

}

if (FindFirst( SoundPath + "*.mid", faAnyFile, sr) == 0) {

// знайдено файл з розширенням mid

ListBoxl->Items->Add(sr.Name);

while (FindNext(sr} = 0)

ListBoxl->Items->Add(sr.Name); }

if (FindFirstf SoundPath + "*.rmi", faAnyFile, sr) == 0) {

ListBoxl->Items->Add(sr.Name);

while (FindNext(sr) == 0)

ListBoxl->Items->Add(sr.Name); }

// виконати перший файл

if ( ListBoxl->Items->Count != 0)

{

Label2->Caption = ListBoxl->Items->Strings[1];

MediaPlayerl->FileName = SoundPath + ListBoxl->Items->Strings[l];

MediaPlayerl->Open();

MediaPlayerl->Play();

}

}

  1.  Запрограмувати подію OnClick компонента ListBoxl для клащання на елементі сиску

void__fastoall TForml::ListBoxlClick(TObject *Sender)

{

Label2->Caption = ListBoxl->Items->Strings[ListBoxl->ItemIndex];

MediaPlayerl->FileName = SoundPath + Label2->Caption;

MediaPlayerl->Open();

MediaPlayerl->Play() ;

}

Задача 2. Програвач компакт-дисків

1. Створити форму як на рисунку 2. Розмістіть кнопки Button1, Button2 і Button3 для керування плеєром і задайте для них властивості visible значення false.

Рис. 2. Форма програми CD Player

2. Задати значки на кнопках керування: текст, зображений шрифтом Webdings. При використанні цього шрифту, наприклад, цифрі 4 відповідає значок Play. Відповідність значків Webdings і звичайних символів відображено в таблиці 4.

Таблиця 4. Зображення символів шрифту Webdings

Символ Webdings

Звичайний символ — наприклад, шрифт Arial

Код символу (шістнадцятковий)

9

39

4

34

:

<

3. За допомогою директив припроцесора запрограмувати, щоб на кнопках плеєра відображались символи шрифту Webdings

#define Webdings

#ifdef Webdings

#define PLAY "4"

#define STOP "<"

#define PREVIOUS "9"

#define NEXT ":"

#else

// текст на кнопках при використанні звичайного шрифта, наприклад, Arial

#define PLAY "Play"

#define STOP "Stop"

#define PREVIOUS "Previous"

#define NEXT "Next"

#endif

4. За допомогою директив припроцесора запрограмувати переведення інтервалу часу, який виражається в мілісекундах в хвилини і секунди

#define MINUTE(ms) ( (ms/1000)/60)

#define SECOND,(ms) ( (ms/1000) %60)

5. Розмістити на форму компонент Timer та запрограмуйте обробку події OnTimer, яка виводитиме на індикатор (у полі мітки Label1) номер трека і час відтворення.

void __fastcall TForml::TimerTimer(TObject *Sender)

{

int trk;// трек

int min, sec;

AnsiString st;

if ( MediaPlayer->Mode == mpPlaying)

{ // одержати номер трека, що виконується

trk = MCI_TMSF_TRACK(MediaPlayer->Position);

if ( trk != Track)//відбулася зміна трека

{ TrackInfo0 ;

Track = trk; if { Track == 2)

Button2->Enabled = true;

if ( Track == MediaPlayer-XTracks)

Button3->Enabled = false;}

min = MCI_TMSF_MINUTE(MediaPlayer->Position);

sec = MCIJTMSF_SECOND(MediaPlayer->Position);

st.printf("%d:%.2d",min,sec); Label2->Caption = st; return;

}

if ( (MediaPlayer->Mode == mpStopped) && (MediaPlayer-XTracks > 1))

{Timer->Enabled = false;

Buttonl->Caption = PLAY;

Buttonl->Enabled = true;

Buttonl-XTag = 0;

MediaPlayer->Notify = true;

// одержати інформацію про час звучання CD

MediaPlayer-XTimeFormat = tfMilliseconds;

int ms = MediaPlayer->Length;

AnsiString st = "Audio CD. Час звучання: ";

st = st + IntToStr(MINUTE(ms));

st = st + ":" + IntToStr(SECOND(ms)};

Labell->Caption = st;

MediaPlayer-XTimeFormat = tfTMSF;

Labell->Visible = true; Track = 0;

return;

}

if (( MediaPlayer->Mode == mpOpen)||

(MediaPlayer->Mode == mpStopped) && (MediaPlayer->Tracks == 1))

{ Labell->Caption = "Вставьте Audio CD";

if ( Labell->Visible) Labell->Visible = false; else Labell->Visible = true;

}

}

6. Запрограмувати подію OnCreate для форми

void __fastcall TForml::FormCreate(TObject *Sender)

{ Buttonl->Caption = PLAY;

Button2->Caption = PREVIOUS;

Button3->Caption = NEXT;

MediaPlayer->Notify = true; // дозволити подію Notify }

7. Запрограмувати подію Notify для зміни стану плеєра

void __fastcall.TForml::MediaPlayerNotifу(TObject *Sender)

{

switch ( MediaPlayer->Mode)

{case mpOpen: // користувач відкрив дисковод (

Buttonl->Enabled = false;

Button1->Caption = PLAY;

Button1->Tag = 0;

Button2->Enabled = false;

Button3->Enabled = false;

Label2->Caption = "00:00";

//по сигналу від таймера будемо перевіряти стан дисковода

Timer->Enabled = True; }

}

MediaPlayer->Notify = true;

}

8. Запрограмувати натиснення на кнопку Play/Stop

void _fastcall TForml::ButtonlClick(TObject *Sender)

{ if ( Buttonl-XTag = 0) {

MediaPlayer->Play();

Buttonl->Caption = STOP;

Buttonl->Hint = "Стоп";

Buttonl->Tag = 1;

Button3->Enabled = true;

MediaPlayer->Notify = true;

Timer->Enabled = true;

Tracklnfо();

} else {

Buttonl->Caption = PLAY;

Buttonl->Hint = "Відтворення";

Buttonl->Tag = 0;

MediaPlayer->Notify = true;

MediaPlayer->Stop();

Timer->Enabled = false; } }

9. Запрограмувати виведення в полі Label1 інформацію про поточний трек

void __fastcall TForml::TrackInfo()

{ int ms;

AnsiString st;

Track = MCI_TMSF_TRACK(MediaPlayer->Position);

MediaPlayer->TimeFormat = tfMilliseconds;

ms = MediaPlayer-XTrackLength[Track];

MediaPlayer->TimeFormat = tfTMSF;

st = "Трек "+ IntToStr(Track);  

st = st +  ". Длительность "+ IntToStr(MINUTE(ms));

st = st + ":" + IntToStr(SECOND(ms));

Label1->Caption = st; }

10. Запрограмувати кнопку «Наступний трек»

void__fastcall TForml::Button3Click(TObject *Sender)

{ MediaPlayer->Next();

// якщо перейшли до останнього треку, то кнопку Next зробити недоступною

if ( MCI_TMSF_TRACK(MediaPlayer->Position) == MediaPlayer->Tracks)

Button3->Enabled = false;

if (! Button2->Enabled) Button2->Enabled = true;

Tracklnfо();

Label2->Caption = "0:00";

}

11. Запрограмувати кнопку «Попередній трек»

void__fastcall TForml::Button2Click(TObject *Sender)

{

MediaPlayer->Previous(); // на початок поточного треку

MediaPlayer->Previous(); // на початок попереднього треку

if ( MCI_TMSF_TRACK(MediaPlayer->Position) == 1)

Button2->Enabled = false;

if ( ! Button3->Enabled) Button3->Enabled = true;

Tracklnfо();

Label2->Caption = "0:00"; }

12. Запрограмувати закриття прогрми та зупинки плеєра

void __fastcall TForml::FormClose(TObject *Sender, TCloseAction SAction)

{ MediaPlayer->Stop();

MediaPlayer->Close(); }

13. Розглянути вигляд вікна програми після її запуску ( рис. 3).

Рис. 3. Вигляд вікна під час виконання програми

14. Запустити програму на виконання, протестувати її та продемонструвати результат викладачу.

Контрольні запитання

  1.  Яка властивість компоненту MediaPlayer задає тип пристрою?
    1.  Яка ознака відповідає за автоматичне завантаження після запуску програми файлу відеоролика або звукового фрагмента?
      1.  Яка властивість компоненту MediaPlayer дозволяє зробити невидимими деякі кнопки?
      2.  Які властивості компоненту MediaPlayer доступні під час роботи програми?
      3.  Для чого використовується властивість Display компоненти MediaPlayer?




1. Евгений Онегин Герой нашего времени Мертвые души Отцы и дети
2. Изготовление печатных форм Электрографический способ
3. Тема 1. Предмет и метод мировой экономики.
4. Yer student of the Fculty of Telecommuniction
5. старый Каир ажурные минареты мечети Мохаммеда Али или мечети Султана Калауна гигантский акведук от Нила к.html
6. Дирака. Функция плотности состояний
7. тематический факультет очно
8. Задание 1 Сформулируйте закон- 3акон Ома для участка цепи Задание 2 Нарисовать векторную диаграмму по эл
9. Ns Flush BTELI Чай черный байховый листовой из плантации Ассама
10. Первые Рюриковичи исторические портреты (Ольга, Святослав, Владимир)
11. Тема- Специальные мероприятия в системе связей с общественностью презентации конференции церемонии открыт
12. Тема 3 маркетингові стратегії сегментації і вибір цільових сегментів 3.html
13. Чем выше коэффициент оборачиваемости запасов тем меньше размер денежных средств связанных в запасах
14.  Характеристика и ассортимент колбасных изделий 2
15. Обучающе-контроллирующая система для подготовки студентов
16. Музыка в конце XIX начале XX века.html
17. Реферат- Совершенствование стимулирования труда за счет улучшения рабочих мест
18. ~а~тар 2014 ж Атырау м~най ж~не газ технологиялы~ колледжіні~ директоры Б
19. Доказательственное право Общая характеристика
20. тема выборов в Государственную Думу