КАТЕГОРИИ: Архитектура-(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 - Синхронное воспроизведение звука события. Функция PlaySound возвращается только после окончания воспроизведения. Флаги могут комбинироваться операцией о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 библиотеки компонентов. Он инкапсулирует интерфейс управления носителями (Media 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; Просмотров: 539; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |