Использование звука на веб-странице
Добавление звукового оформления
В предыдущих главах мы рассмотрели оформление веб-страниц с помощью таблиц стилей CSS и графических элементов. Однако есть еще один декоративный компонент – звук. Конечно, встречаются веб-сайты, на которых он превращается из декоративного в основной – например, таковы сайты музыкальной тематики, музыкальные архивы и т. п.
Существует великое множество форматов звуковых файлов, но далеко не все они используются на веб-страницах. На форматах музыкальных фай лов мы остановимся несколько позже, а сначала посмотрим, какими способами можно поместить тот или иной музыкальный объект на страницу. Естественно, что пользователь услышит музыку лишь в том случае, если у него установлена звуковая карта.
Фоновая музыка
Для воспроизведения фоновой музыки проще всего применить тег <BGSOUND>. Правда, он работает только в браузерах Internet Explorer и Mosaic, зато очень удобен. Если написать так:
<
BGSOUND
SRC
=
"beethl.mid"
LOOP
=
"-1"
BALANCE”
"-5000"
VOLUME
=
"0"
>
…то на веб-странице в качестве фоновой музыки будет исполняться файл beeth.mid, который указан в атрибуте SRC=. Атрибут LOOP= нужен для того, чтобы определить, что делать, когда музыкальный фрагмент завершится. Значение LOOP="-1" или LOOP="infinite" означает, что музыкальный файл будет проигрываться от начала до конца бесконечное количество раз (пока пользователь не покинет веб-страницу). Значением атрибута LOOP= может быть положительное число, означающее количество повторов звукозаписи. Например, при LOOP="4" файл будет проигран четыре раза.
Для браузера Internet Explorer версии 4 (и более поздних) можно применять еще два атрибута: VOLUME= и BALANCE=. С помощью атрибута VOLUME= можно уменьшить громкость звучания. Именно уменьшить, поскольку значение этого атрибута по умолчанию равно нулю, что соответствует максимальной громкости. Теоретически, предельное значение атрибута VOLUME= равно -10 000, однако обычно в использовании значений менее -1000 особого смысла нет.
Атрибут BALANCE= задает смещение звука по панораме. Его значение равное “-10 000” соответствует крайнему левому положению, а “10 000” – крайнему правому. Значение по умолчанию равно нулю, что соответствует расположению звука по центру, в большинстве случаев является оптимальным решением.
Существует еще один атрибут тега <BGSOUND>, работающий только в браузере Mosaic. Это атрибут DELAY=, который определяет паузу перед нача лом звучания фонового музыкального файла. Интересно, что значение DELAY= нужно указывать в секундах (а не в миллисекундах, как обычно). Применение этого атрибута имеет смысл только для не больших аудиоклипов, поскольку обычно музыкальный файл все равно начинает звучать после некоторой задержки, так как загружается довольно долго, особенно если это файл формата WAVE или AIFF.
Звуковые объекты
Другой способ помещения музыкального объекта на страничку заключается в применении более универсального тега <OBJECT>. Вообще говоря, этот тег может использоваться не только для встраивания звуковых объектов. Он появился в свое время в Internet Explorer для встраивания объектов ActiveX/COM (что было альтернативой возможности запуска Java-апплетов в браузерах Netscape с помощью тега <APPLET>). Если музыкальный объект размещен на веб-странице с помощью тега <OBJECT>, браузер в некоторых случаях может сообщить об отсутствии средств воспроизведения файлов такого типа. Иногда это вызывает удивление, так как те же файлы прекрасно воспроизводятся на том же компьютере, однако здесь требуется не любое средство воспроизведения, а только встроенное в данный браузер. В таких случаях необходимо доустановить модуль просмотра в браузер (может быть, предварительно загрузив его из Интернета).
Для помещения музыкального объекта на страничку используется такой синтаксис тега <OBJECT>:
<
OBJECT
DATA
=
"SOUNDS/MyI')OLLY.mp3"
TYPE
=
"audio/wav"
>
<
/
OBJECT
>
Как видите, атрибут DATA= определяет файл – источник музыки, а атрибут TYPE= определяет его тип (формат). О форматах мы поговорим ниже.
Если при использовании тега <BGSOUND> музыка исполняется в качестве фона, то при использовании тега <OBJECT> объект можно наблюдать на экране, как правило, в виде встроенного проигрывателя с кнопками Пуск, Стоп и другими элементами управления. Поэтому для тега <OBJECT> возможно использование таких атрибутов, как ALIGN= (со значениями top, middle, bottom, left, right), WIDTH=, HEIGHT=, HSPACE=, VSPACE= и даже USEMAP=. Все эти атрибуты нам уже знакомы по тегу <IMG>. Кстати, с помощью тега <OBJECT> действительно можно вставлять в тексты веб-страниц графические объекты и видеоклипы. При этом список форматов существенно расширяется (например, можно просматривать картинки в форман тах TIFF и WMF), лишь бы только к браузеру был подключен соответствующий модуль просмотра. Кстати, можно вкладывать несколько элементов <OBJECT> друг в друга. Это приводит к следующему результату: если в браузере имеется средство просмотра внешнего объекта, будет отображен именно он, а если нет – браузер попытается отобразить внутренний объект, и т. д. Например, можно написать так:
<
OBJECT
DATA
=
"MyClip.mpg"
TYPE
=
"video/x-mpeg"
>
<
OBJECT
DATA
=
"MySound.aiff"
TYPE
=
"audio/x-aiff"
>
<
OBJECT
DATA
=
"MyPicturel.tiff"
TYPE
=
"image/tiff"
>
<
OBJECT
DATA
=
"MyPicture2.gif"
TYPE
=
"image/gif"
>
Здесь должен быть видеоклип...
<
/
OBJECT
>
<
/
OBJECT
>
<
/
OBJECT
>
<
/
OBJECT
>
В этом примере браузер сначала попытается воспроизвести видеоклип (файл в формате MPEG). Если это ему удастся, то все, что находится внутри данного тега, игнорируется, а если нет – браузер попытается воспроизвести музыкальный файл в формате АIFF. Если же он не найдет модуля вос произведения и для этого файла, он попытается отобразить рисунок в формате TIFF, а уж если и это не получится, то в формате GIF. При таком невероятном стечении обстоятельств, что браузеру и это не удастся сделать, на месте объекта будет просто отображен текст Здесь должен быть видеоклип… И еще один момент. В теге <OBJECT> можно установить атрибут STANDBY=, значение которого (текстовая строка) будет отображаться на экране до тех пор, пока объект не загрузится целиком. Например, вполне целесообразно написать так:
<
OBJECT
DATA
=
"sound.wav"
TYPE
=
"audio/wav"
STANDBY
=
"Загружаю звуковой объект, подождите немного..."
>
Если файл sound, wav имеет достаточно большой размер, пользователь увидит на экране надпись о происходящей загрузке.