Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Пример программы с мультимедиа




Два вида программ мультимедиа

Иногда приходится предоставлять пользователям простой путь для проигрывания максимально широкого круга файлов и затем позволить ему выбрать и воспроизвести подходящий файл. В этом случае, на форме обычно располагается TMediaPlayer, предоставляющий возможность управления воспроизведением.

Иногда программист может захотеть скрыть от пользователя существование компонента TMediaPlayer. То есть, воспроизвести звук или видео без того, чтобы пользователь заботился об их источнике. В частности, звук может быть частью презентации. Например, показ какого-нибудь графика на экране может сопровождаться объяснением, записанным в WAV-файл. В течении презентации пользователь даже не знает о существовании TMediaPlayer. Он работает в фоновом режиме. Для этого компонент делается невидимым (Visible:= False;) и управляется программно.

 

В данной главе мы рассмотрим пример построения приложения с мультимедиа первого типа. Создайте новый проект (File | New Project). Поместите TMediaPlayer на форму; поместите (страница WIN 3.1) компоненты TFileListBox, TDirectoryListBox, TDriveComboBox, TFilterComboBox для выбора файла. В свойстве FileList для DirectoryListBox1 и FilterComboBox1 поставьте FileListBox1. В свойстве DirList для DriveComboBox1 поставьте DirectoryListBox1. В свойстве Filter для FilterComboBox1 укажите требуемые расширения файлов:

AVI File (*.avi) | *.avi

WAVE File (*.wav) | *.wav

MIDI file (*.MID) | *.mid

Пусть мы хотим по двойному щелчку мышкой на компоненте FileListBox1 воспроизводить выбранный файл. Тогда в обработчике события OnDblClick для FileListBox1 следует записать:

 

Procedure TForm1.FileListBox1DblClick(Sender:TObject);

begin

with MediaPlayer1 do

begin

Close;

FileName:= FileListBox1.FileName;

Open;

Play;

end;

end;

 

Внешний вид формы представлен на рис.4.

 

Рис.4. Начальный вид проекта

 

Сохраните проект, запустите его, выберите нужный файл и дважды щелкните на него мышкой. MediaPlayer должен воспроизвести этот файл в отдельном окне.

Как уже говорилось выше, видеоролик можно воспроизводить внутри формы, например, на панели. Давайте слегка модифицируем проект и добавим туда панель TPanel (см. рис.5). В свойстве Display для MediaPlayer1 укажите Panel1. Нужно убрать надпись с панели (Caption) и присвоить свойству BevelOuter:= bvNone;

Чтобы переключаться при воспроизведении с окна на панель - поместите TСheckBox на форму и в обработчике события OnClick для него запишите:

 

procedure TForm1.CheckBox1Click(Sender: TObject);

var

Start_From: Longint;

begin

with MediaPlayer1 do

begin

if FileName ='' then Exit;

Start_From:= Position;

Close;

Panel1.Refresh;

 

if CheckBox1.Checked then Display:= Panel1

else Display:= NIL;

Open;

Position:= Start_From;

Play;

end;

end;

 

Запустите проект и воспроизведите видеоролик. Пощелкайте мышкой на компоненте CheckBox.

 

Рис.5. Добавлена панель для воспроизведения видео

и переключатель окно/панель

 

Во время выполнения программы может потребоваться отобразить текущее состояние объекта MediaPlayer и самого ролика (время, прошедшее с начала воспроизведения, длину ролика). Для этого у объекта TMediaPlayer есть соответствующие свойства и события: Length, Position, OnNotify и др.

Давайте добавим в проект прогресс-индикатор (TGauge), который отобразит в процентах, сколько прошло времени (см. рис.6). Для обновления показаний индикатора можно воспользоваться таймером. Поместите на форму объект TTimer и установите для него

Interval:= 100; (100 миллисекунд).

В обработчике события OnTimer нужно записать:

 

procedure TForm1.Timer1Timer(Sender: TObject);

begin

with MediaPlayer1 do

if FileName<>'' then

Gauge1.Progress:= Round(100*Position/Length);

end;

 

Запустите проект, выберите файл (AVI) и щелкните на нем два раза мышкой. При воспроизведении ролика прогресс-индикатор должен отображать процент, соответствующий прошедшему времени (см. рис.6).

 

Листинг DEMOVideo приведен ниже.

 

Unit DEMOVideo;

interface

uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,

Forms, Dialogs, ExtCtrls, Gauges, FileCtrl, StdCtrls, MPlayer;

 

type

TForm1 = class(TForm)

MediaPlayer1: TMediaPlayer;

CheckBox1: TCheckBox;

FileListBox1: TFileListBox;

DirectoryListBox1: TDirectoryListBox;

DriveComboBox1: TDriveComboBox;

FilterComboBox1: TFilterComboBox;

Panel1: TPanel;

Gauge1: TGauge;

Timer1: TTimer;

Button1: TButton;

procedure FileListBox1DblClick(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure CheckBox1Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

{$R *.DFM}

 

procedure TForm1.FileListBox1DblClick(Sender: TObject);

begin

with MediaPlayer1 do

begin

Close;

Panel1.Refresh;

FileName:= FileListBox1.FileName;

Open;

Play;

end;

end;

 

procedure TForm1.Timer1Timer(Sender: TObject);

begin

with MediaPlayer1 do

if FileName<>'' then

Gauge1.Progress:= Round(100*Position/Length);

end;

 

procedure TForm1.CheckBox1Click(Sender: TObject);

var

Start_From: Longint;

begin

with MediaPlayer1 do

begin

if FileName ='' then Exit;

Start_From:= Position;

Close;

Panel1.Refresh;

 

if CheckBox1.Checked then

Display:= Panel1

else

Display:= NIL;

 

Open;

Position:= Start_From;

Play;

end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

if FileListBox1.FileName ='' then Exit;

with MediaPlayer1 do

begin

Close;

Panel1.Refresh;

FileName:= FileListBox1.FileName;

Open;

end;

end;

 

end.

 

Рис.6. Законченное приложение для воспроизведения AVI, WAV

и MDI файлов




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 688; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.019 сек.