Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Универсальный проигрыватель MediaPIayer




Звук

Мультимедиа и анимация

 

 

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

Наиболее простым звуковым файлом является волновой файл.wav. В нем за­писано цифровое представление информации о волновой форме электрического сигнала, соответствующего каждому звуку. Волновой файл «не знает» вообще ничего о том, что такое звук и что он означает; поэтому для хранения звукового кли­па приходится запоминать массу информации.

Другим часто применяемым типом файлов-носителей являются файлы цифро­вого интерфейса музыкальных инструментов (MIDI). Файлы.midi используются для хранения музыкальных фрагментов. В этих файлах звук хранится в виде дан­ных о том, на каких инструментах исполняются определенные ноты и как долго они звучат. Одним из главных преимуществ MIDI является то, что файлы получа­ются сравнительно небольшими.

Волновые и MIDI файлы могут хранить только звук или музыку. Для хране­ния видео информации разработан ряд форматов. Отметим среди них файлы AVI и MPEG. Большинство видеофайлов поддерживают также хранение звуковой дорож­ки, так что звук воспроизводится синхронно с картинкой.

Наиболее простой процедурой, управляющей звуком, является процедура Веер. Она не имеет параметров и воспроизводит стандартный звуковой сигнал, установленный в Windows, если компьютер имеет звуковую карту и стандартный сигнал задан (он устанавливается в программе Windows «Панель управления» по­сле щелчка на пиктограмме Звук). Если звуковой карты нет или стандартный сиг­нал не установлен, звук воспроизводится через динамик компьютера просто в виде короткого щелчка.

Откройте новое приложение, введите в него кнопку, в обработчике щелчка ко­торой напишите одно слово:

Веер;

Можете запустить приложение, щелкнуть на кнопке и прослушать стандартный звук Windows или просто щелчок, если стандартный звук не установлен. Более серьезной процедурой является MessageBeep. Она определена как

function MessageBeep (uType: word).: boolean;

Параметр uType указывает воспроизводимый звук как идентификатор разде­ла [sounds] -реестра, в котором записаны звуки, сопровождающие те или иные события в Windows. С помощью приложения Звук в «Контрольной панели» пользова­тель может удалить или установить соответствующие звуки.

После запроса звука функция MessageBeep возвращает управление вызвав­шей функции и воспроизводит звук асинхронно. Во время воспроизведения прило­жение может продолжать выполняться.

Если невозможно воспроизвести указанный в функции звук, делается попыт­ка воспроизвести стандартный системный звук, установленный по умолчанию. Если и это невозможно, то воспроизводится стандартный сигнал через динамик.

При успешном выполнении возвращается ненулевое значение. При аварийном завершении возвращается нуль.

Можете в своем тестовом приложении ввести еще одну кнопку и написать для нее обработчик:

MessageBeep(MB_OK);

Вы услышите тот же стандартный звук Windows, что и при выполнении про­цедуры Веер. Или услышите тот же тихий щелчок, если стандартный звук не уста­новлен. Попробуйте установить различные звуки с помощью «Панели управле­ния» и проверить MessageBeep при различных значениях ее параметра.

А теперь давайте займемся более серьезной функцией PlaySound, которая по­зволяет воспроизводить не только звуки событий Windows, но и любые волновые файлы. Это функция API Windows, параметры которой описаны в модуле mmsystem. Поэтому для использования этой функции в вашем приложении необходимо включить в его оператор uses ссылку на mmsystem, поскольку автоматически эту ссылку Delphi не включает.

Функция PlaySound определена следующим образом:

function PlaySound (pszSound:PChaf; hmod:HINST; fdwSound: Cardinal): boolean;

Параметр pszSound представляет собой строку с нулевым символом в конце и определяет воспроизводимый звук. Параметр hmod используется, если звук берет­ся из ресурса. А поскольку далее звуками из ресурса мы пользоваться не будем, то hmod всегда можно задавать равным nil или 0.

Параметр fdwSound является множеством флагов, которые определяют ре­жим воспроизведения и тип источника звука. Ниже приведены некоторые из этих флагов, наиболее важные для воспроизведения произвольных волновых файлов:

- SND_ASYNC - Звук воспроизводится асинхронно и функция PlaySound воз­вращается немедленно после начала воспроизведения. Чтобы прекратить асинхронное воспроизведение волнового файла, надо вызвать PlaySound с параметром pszSound, равным 0.

- SNDJLOOP - Воспроизведение звука постоянно повторяется, пока не вызо­вется PlaySound с параметром pszSound, равным 0. Одновре­менно надо установить флаг SND_ASYNC асинхронного вос­произведения звука.

- SND_NOSTOP - Если заданный звук не может быть воспроизведен, поскольку ресурсы, необходимые для воспроизведения, заняты воспроиз­ведением другого звука, функция PlaySound немедленно вер­нет false, не воспроизводя заданного звука. Если данный флаг не указан, функция PlaySound пытается остановить воспроиз­ведение другого звука, чтобы устройство могло быть использо­вано для воспроизведения нового звука.

- SND_NOWAIT - Если драйвер занят, функция сразу вернется без воспроизве­дения заданного звука

- SND_PURGE - Останавливается воспроизведение любых звуков, вызванных в данной задаче. Если pszSound не 0, останавливаются все эк­земпляры указанного звука. Если pszSound равен 0, то оста­навливаются все звуки, связанные с данной задачей.

- SND_SYNC - Синхронное воспроизведение звука события. Функция PlaySo­und возвращается только после окончания воспроизведения.

Флаги могут комбинироваться операцией оr.

Звук, указанный параметром pszSound, должен помещаться в доступную па­мять и должен подходить для установленного драйвера устройства воспроизведе­ния волновых файлов. Функция PlaySound ищет файл звука в следующих катало­гах: текущем, каталоге Windows, системном каталоге Windows, каталогах, пере­численных в переменной среды PATH, в списке каталогов, предоставляемых сетью. Если указанный звук не находится, функция PlaySound воспроизводит системный звук по умолчанию. Если функция не может найти и его, то воспроизведения не будет, а вернется значение false.

Приведем примеры использования функции PlaySound.

Оператор

PlaySound('c:\win98\media\3вукMicrosoft.wav',О,SND_ASYNC);

воспроизводит асинхронно и однократно стандартный звук Microsoft, который вы обычно можете слышать при открытии Windows. В процессе воспроизведения про­должается выполнение приложения.

Чтобы опробовать функцию PlaySound, введите в свое приложение диалог OpenDialog и кнопку со следующим обработчиком щелчка:

if OpenDialogl.Execute then PlaySound (PChar (Open Dialogl.FileName),0,SND_ASYNC);

Запустите приложение, выберите файл какой-нибудь приятной музыки и ра­ботайте со своим приложением, наслаждаясь попутно выбранной мелодией.

В предыдущих примерах звук задавался именем его волнового файла. Функ­ция PlaySound позволяет воспроизводить и системные звуки, просто называя их псевдонимы. Например, оператор

PlaySound('SystemStart',0,SND_ASYNC);

воспроизведет тот же звук открытия Windows, что и приведенный ранее оператор, указывавший имя и путь к нему. Оператор

PlaySound('с:\win98\media\3вук Microsoft.wav', 0, SND_ASYNC or SND_LOOP);

многократно асинхронно воспроизводит стандартный звук Microsoft, начиная его снова и снова, как только он заканчивается. Если вы ввели в свое приложение по­добный оператор (пусть даже и с очень приятной музыкой), вам надо предусмот­реть еще и какую-нибудь кнопку, по которой воспроизведение прерывается зада­нием нового звука или выполнением оператора

PlaySound(0,0, SND_PURGE);

Оператор

PlaySound('с:\win98\media\3вук Microsoft.wav, 0, SND_SYNC);

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

Все рассмотренные ранее операторы прерывали при своем выполнении звук, который асинхронно воспроизводился в момент вызова PlaySound. Если же вы вы­полните оператор с флагом SND_NOSTOP, например:

PlaySound('с:\win98\media\3вук Microsoft.wav',0, SND_SYNC or. SND_NOSTOP)

то в случае, если в этот момент драйвер занят воспроизведением другого звука, это воспроизведение не будет прерываться, а функция PlaySound сразу вернет false. Впрочем, заказанного этим оператором звука вы в этом случае не услышите, т.к. в очередь он не встанет.

 

 

В Delphi имеется компонент MediaPIayer — универсальный проигрыватель аудио- и видео-информации. Этот медиа-плеер расположен на странице System биб­лиотеки компонентов. Он инкапсулирует интерфейс управления носителями (Me­dia Control Interface — MCI) Windows 95/98/2000 и Windows NT.

Компонент можно использовать в двух режимах. Во-первых, можно предоста­вить пользователю возможность управлять воспроизведением информации с помо­щью кнопочного интерфейса, напоминающего панель управления различными проигрывателями. Во-вторых, можно сделать сам компонент невидимым и управ­лять воспроизведением информации с помощью его методов.

Пользовательский интерфейс медиа-плеера представлен на рис. 12. Он имеет ряд кнопок, управляемых мышью или клавишей пробела и клавишами-стрелками.

 

 

 

Рис. 12. Панель компонента MediaPIayer

 

Назначение кнопок (перечисляются слева направо):

- Play – Воспроизведение

- Pause - Пауза воспроизведения или записи. Если медиа-плеер в момент щел­чка уже в состоянии паузы, то воспроизведение или запись возобнов­ляются

- Stop - Остановка воспроизведения или записи

- Next - Переход на следующий трек или на конец

- Prev - Переход на предыдущий трек или на начало

- Step - Перемещение вперед на заданное число кадров

- Back - Перемещение назад на заданное число кадров

- Record - Начало записи

- Eject - Освобождение объекта, загруженного в устройство

Каждой кнопке медиа-плеера соответствует метод, осуществляющий по умол­чанию требуемую операцию: Play, Pause, Stop, Next, Previous, Step, Back, Start-cording, Eject.

Тип устройства мультимедиа, с которым работает медиа-плеер, определяется его свойством DeviceType. Если устройство мультимедиа хранит объект воспроиз­ведения в файле, то имя файла задается свойством FileName. По умолчанию свой­ство DeviceType имеет значение dtAutoSelect. Это означает, что медиа-плеер пы­тается определить тип устройства исходя из расширения имени файла FileName.

Еще одно свойство MediaPlayer — AutoOpen. Если оно установлено в true, то медиа-плеер пытается открыть устройство, указанное свойством DeviceType, авто­матически во время своего создания в процессе выполнения приложения.

Воспроизведение видео информации по умолчанию производится в окно, кото­рое создает само открытое устройство мультимедиа. Однако это можно изменить, если в свойстве Display указать оконный элемент, в котором должно отображаться изображение. Это может быть, например, форма или панель. Можно также задать в свойстве DisplayRect типа TRect (свойство только времени выполнения) прямо­угольную область этого окна, в которую должно выводиться изображение. Для за­дания свойства DisplayRect можно использовать функцию Rect. Однако, в данном свойстве использование этого типа не совсем обычно. Первые две координаты, как и обычно, задают положение левого верхнего угла изображения. А два следующих числа задают ширину и высоту изображения, а не координаты правого нижнего угла. Например, оператор.

MediaPlayer1.DisplayRect:=Rect (10,10,200, 200);

задает для вывода область с координатами левого верхнего угла (10, 10), длиной и шириной, равными 200.

В компоненте MediaPlayer определены события OnClick и OnNotify. Первое из них происходит при выборе пользователем одной из кнопок медиа-плеера и определено как

type

TMPBtnType=(btPlay,btPause,btStop,btNext,btPrev,btStep,btBack,

btRecord, btEject);

procedure(Sender rTObject; Button:TMPBtnType; var DoDefault: Boolean);

Параметр Button указывает выбранную кнопку. Параметр DoDefault, переда­ваемый как var, определяет выполнение (при значении true по умолчанию) или отказ от выполнения стандартного метода, соответствующего выбранной кнопке.

Событие OnNotify происходит после возвращения очередного метода, если свойство медиа-плеера Notify было установлено в true. Способ возврата любого ме­тода медиа-плеера определяется свойством Wait. Если установить Wait равным false, то возвращение управления в приложение происходит сразу после вызова метода, не дожидаясь завершения его выполнения. Таким образом, задав Notify равным true и Wait равным false, можно обеспечить немедленный возврат в приложение и отображение пользователю текущего состояния объекта мультимедиа.

Свойства Notify и Wait действуют только на один очередной метод. Поэтому их значения надо каждый раз восстанавливать в обработчиках событий OnClick или OnNotify.

В обработчиках событий можно читать свойство Mode, характеризующее те­кущее состояние устройства мультимедиа. Можно также читать и устанавливать ряд свойств, характеризующих размер воспроизводимого файла и текущую пози­цию в нем.

Вот, собственно, в конспективном виде основная информация о компоненте MediaPlayer. А теперь попробуйте все это на практике. Простое и в то же время мощное приложение можно сделать очень легко. Начните новый проект и перенесите на форму компоненты MediaPlayer, MainMenu, Label и OpenDialog. В фильтре компонента OpenDialog можно, например, задать:

- аудио (*.wav, *.mid)

- видео (*.avi)

- все файлы (*.*)

В меню достаточно задать одну команду: Файл Открыть. Обработчик события OnClick этой команды может содержать оператор

if OpenDialogl.Execute then with MediaPlayerl do begin

Labell.Caption:= 'Файл: ' + OpenDialogl.FileName;

FileName:= OpenDialogl.FileName;

Open; end;

который открывает устройство мультимедиа, соответствующее выбранному поль­зователем файлу. При этом надо проследить, чтобы в компоненте MediaPlayer свойство DeviceType равнялось dtAutoSelect. Это обеспечит автоматический вы­бор соответствующего устройства мультимедиа исходя из расширения выбранного файла.

В компоненте MediaPlayer при желании можно указать имя файла FileName, открываемого в момент начала выполнения приложения. Тогда надо установить свойство AutoOpen в true. Впрочем, это, конечно, не обязательно.

Вот и все. Можете выполнять свое приложение и наслаждаться музыкой или фильмами, если, конечно, все вопросы, связанные с настройкой мультимедиа на вашем компьютере решены.

 




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


Дата добавления: 2015-03-29; Просмотров: 511; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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