Чтение онлайн

на главную - закладки

Жанры

Шрифт:

Как можно заметить из листинга 5.7, после получения позиции в файле и его имени данные о времени воспроизведения и путь к файлу попадают на индикаторы lbMainTime и lbFileName соответственно.

Открытие и загрузка файла в мультимедийный компонент происходит при выполнении кода из листинга 5.8. Кроме того, обработчик вызывает известную нам процедуру UpdateViewTime и включает таймер (tmTimer. Enabled:= true).

...

Листинг 5.8.

Открытие файла

procedure TSoundPlayerForm.bnOpenFileClick(Sender: TObject);

begin

if opdOpenDialog.Execute=true then

begin

//Открываем

файл

mdpSoundPlayer.FileName := opdOpenDialog.FileName;

mdpSoundPlayer.Open;

//Устанавливаем значения в индикаторах

UpdateViewTime;

//Включаем таймер

tmTimer.Enabled := true;

end;

end;

Процедура обработки срабатывания таймера заключается в вызове функции обновления значений индикаторов (UpdateViewTime) (листинги 5.9 и 5.10).

...

Листинг 5.9.

Событие таймера

procedure TSoundPlayerForm.tmTimerTimer(Sender: TObject);

begin

//Обновление значений экрана

UpdateViewTime;

end;

...

Листинг 5.10.

Обработчик активизации формы

procedure TSoundPlayerForm.FormActivate(Sender: TObject);

begin

//Временное выключение таймера

tmTimer.Enabled := false;

//Задание значений

lbMainTime.Caption := \'00:00\

lbFileName.Caption := \'no file…\

// Установка фильтров для диалога

opdOpenDialog.Filter :=

\'MP3 music (*.mp3)|*.MP3|Wav files (*.wav)|*.WAV\

end;

Перемотка осуществляется при помощи двух кнопок. Для перемотки вперед на десять секунд необходимо нажать», назад – «(листинги 5.11 и 5.12).

...

Листинг 5.11.

Перемотка вперед

procedure TSoundPlayerForm.bnNextStClick(Sender: TObject);

begin

if mpCanPlay in mdpSoundPlayer.Capabilities then

begin

if (mdpSoundPlayer.Position+perem)<=mdpSoundPlayer.Length then

mdpSoundPlayer.Position := mdpSoundPlayer.Position + perem

else

mdpSoundPlayer.Position := mdpSoundPlayer.Length;

mdpSoundPlayer.Play;

end;

end;

...

Листинг 5.12.

Перемотка назад

procedure TSoundPlayerForm.bnPrevStClick(Sender: TObject);

begin

if mpCanPlay in mdpSoundPlayer.Capabilities then

begin

if mdpSoundPlayer.Position>=perem then

mdpSoundPlayer.Position := mdpSoundPlayer.Position – perem

else

mdpSoundPlayer.Position := 0;

mdpSoundPlayer.Play;

end;

end;

Таким образом, разработанный проигрыватель располагает набором минимальных функций и возможностей. Но он обладает важным преимуществом, а именно простотой реализации. Как вы могли заметить, созданная программа может проигрывать и МРЗ-файлы. Это становится возможным благодаря использованию специального программного обеспечения – кодеков, установленных в операционной системе. Современная и достаточно распространенная операционная система Windows ХР содержит такие кодеки в комплекте базовой поставки. При использовании созданного проигрывателя в других операционных

системах типа Windows, вероятно, понадобится самостоятельная установка кодеков.

На этом этапе принцип построения проигрывателя звуковых записей вам известен. Что касается просмотра видеозаписей, то благодаря универсальности компонента MediaPLayer он схож с воспроизведением звуковых файлов.

5.5. Видеопроигрыватель

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

Учитывая то, что среда Delphi предоставляет высокоуровневый доступ к мультимедийным возможностям компьютера, сам принцип построения проигрывателя не меняется. Как и в случае со звуковым проигрывателем, будет использоваться знакомый вам ранее компонент MediaPLayer. Особенностью воспроизведения видео является только вывод изображения на экран в дополнение к звуковому сопровождению. Таким образом, необходимо определить, какие именно компоненты могу т служить в качестве контейнеров для воспроизведения в них видеопотока.

Приступим к созданию проигрывателя видео (рис. 5.4). Как и в случае звукового проигрывателя, нам понадобятся: компонент MediaPLayer, диалог для открытия файлов OpenDiaLog, компонент-контейнер для вывода изображения (используем GroupBox). Настраиваем форму приложения. Убираем кнопку максимизации, в данном случае она является лишней: присваиваем свойству biMaximaze, которое находится на вкладке Borderlcons, значение False. Устанавливаем BorderStyle равным bsSingle. Это не позволит пользователю изменять размеры формы. Для удобства использования проигрыватель появляется в центре экрана, следовательно, свойство Position устанавливаем KaKpoScreenCenter. В компоненте MediaPLayer оставляем видимыми только кнопки начала, паузы и остановки воспроизведения (аналогичным образом, как в проигрывателе звука). Помещаем на форму компонент GroupBox, свойство Caption устанавливаем пустой строкой, так как именно в этот компонент будет выводиться изображение.

Рис. 5.4. Вид видеопроигрывателя

Рассмотрим некоторые особенности созданного видеопроигрывателя. В качестве элемента-контейнера для динамического изображения использовался компонент GroupBox, поэтому его необходимо было назначить элементом вывода видео для MediaPLayer. Этот процесс сводится к присваиванию свойству Display компонента MediaPLayer экземпляра компонента GroupBox. Происходит это во время активизации формы (листинг 5.13).

...

Листинг 5.13.

Назначение элемента вывода изображения

procedure TFormVideoPlayer.FormActivate(Sender: TObject);

begin

//Устанавливаем область воспроизведения

mpVideoPlayer.Display := gbViewVideo;

end;

В предложенном фрагменте текста программы переменная gbViewVideo является экземпляром компонента GroupBox.

В качестве доказательства простоты, удобства и гибкости использования компонента MediaPLayer приведем весь исходный текст приложения (листинг 5.14).

Поделиться:
Популярные книги

Изгой Проклятого Клана. Том 6

Пламенев Владимир
6. Изгой
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Изгой Проклятого Клана. Том 6

Вечная Война. Книга II

Винокуров Юрий
2. Вечная война.
Фантастика:
юмористическая фантастика
космическая фантастика
8.37
рейтинг книги
Вечная Война. Книга II

Недотепа

Лукьяненко Сергей Васильевич
Фантастика:
фэнтези
5.80
рейтинг книги
Недотепа

Неудержимый. Книга XXIX

Боярский Андрей
29. Неудержимый
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Неудержимый. Книга XXIX

Ну привет, заучка...

Зайцева Мария
Любовные романы:
эро литература
короткие любовные романы
8.30
рейтинг книги
Ну привет, заучка...

Граф

Ланцов Михаил Алексеевич
6. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Граф

Черный Маг Императора 12

Герда Александр
12. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 12

Я еще барон. Книга III

Дрейк Сириус
3. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я еще барон. Книга III

Адвокат империи

Карелин Сергей Витальевич
1. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
фэнтези
5.75
рейтинг книги
Адвокат империи

Тринадцатый XIII

NikL
13. Видящий смерть
Фантастика:
городское фэнтези
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Тринадцатый XIII

Боярышня Дуняша 2

Меллер Юлия Викторовна
2. Боярышня
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Боярышня Дуняша 2

Крестоносец

Ланцов Михаил Алексеевич
7. Помещик
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Крестоносец

Старый, но крепкий 8

Крынов Макс
8. Культивация без насилия
Фантастика:
рпг
уся
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Старый, но крепкий 8

Жена неверного маршала, или Пиццерия попаданки

Удалова Юлия
Любовные романы:
любовно-фантастические романы
4.25
рейтинг книги
Жена неверного маршала, или Пиццерия попаданки