JavaScript. Подробное руководство, 6-е издание, стр. 348

<b>&lt;video id=&quot;news&quot; width=640 height=480 controls preload&gt;</b>

<b>  &lt;!-- В формате WebM для Firefox и Chrome --&gt;</b>

<b>  &lt;source src=&quot;news.webm&quot; type='video/webm; codecs=&quot;vp8, vorbis'&quot;&gt;</b>

<b>  &lt;!-- В формате H.264 для IE и Safari --&gt;</b>

<b>  &lt;source src=&quot;news.mp4&quot; type='video/mp4; codecs=&quot;avc1.42E01E, mp4a.40.2'&quot;&gt;</b>

<b>  &lt;!-- Для совместимости с расширением Flash --&gt;</b>

<b>  &lt;object width=640 height=480 type=&quot;application/x-shockwave-flash&quot; </b>

<b>       data=&quot;flash_movie_player.swf&quot;&gt;</b>

<b>    &lt;!-- Здесь можно указать параметры настройки проигрывателя Flash --&gt;</b>

<b>    &lt;!-- Текстовое содержимое, используемое в самом худшем случае --&gt;</b>

<b>    &lt;div&gt;Элємeнт video не поддерживается и расширение Flash не установлено.&lt;/div&gt;</b>

<b>  &lt;/object&gt;</b>

<b>&lt;/video&gt;</b>

Элементы

<b>&lt;audio&gt;</b>
и
<b>&lt;video&gt;</b>
поддерживают атрибут
<b>controls</b>
. Если он присутствует (или соответствующее JavaScript-свойство имеет значение true), они будут отображать элементы управления, включая кнопки запуска на воспроизведение и паузы, регулятор громкости и т. д. Но кроме этого, элементы
<b>&lt;audio&gt;</b>
и
<b>&lt;video&gt;</b>
предоставляют прикладной интерфейс, обеспечивающий широкие возможности управления воспроизведением, с помощью которого вы можете добавлять простые звуковые эффекты в свои веб-приложения или создавать собственные панели управления воспроизведением. Несмотря на различия во внешнем виде, элементы
<b>&lt;audio&gt;</b>
и
<b>&lt;video&gt;</b>
предоставляют практически один и тот же прикладной интерфейс (единственное отличие между которыми состоит в том, что элемент
<b>&lt;video&gt;</b>
имеет свойства
<b>width</b>
и
<b>height</b>
), поэтому большая часть того, что рассказывается далее в этом разделе, в равной степени относится к обоим элементам.

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

Конструктор Audio()

Элементы

<b>&lt;audio&gt;</b>
не имеют визуального представления в документе, если не установить атрибут
<b>controls</b>
. И так же, как имеется возможность создавать неотображаемые изображения с помощью конструктора
<b>Image(),</b>
механизм поддержки мультимедиа, определяемый стандартом HTML5, позволяет создавать аудиоэлементы с помощью конструктора
<b>Audio(),</b>
передавая ему аргумент с URL-адресом источника данных:

<b>new Audio(&quot;chime.wav&quot;).play(); // Загрузить и проиграть звуковой эффект</b>

Конструктор

<b>Audio()</b>
возвращает тот же объект, который будет получен при обращении к элементу
<b>&lt;audio&gt;</b>
в документе или при создании нового аудиоэлемента вызовом
<b>document.сreateElement(&quot;audio&quot;).</b>
Обратите внимание, что все вышесказанное относится только к аудиоэлементам: механизм поддержки мультимедиа не имеет соответствующего конструктора
<b>Video()</b>
.

**************************************

21.2.1. Выбор типа и загрузка

Если вам потребуется проверить, способен ли мультимедийный элемент воспроизводить мультмедийные данные в определенном формате, передайте М1МЕ-тип этих данных (при необходимости с параметром

<b>codec</b>
) методу
<b>сапРlауТуре</b>
(). Элемент вернет пустую строку (ложное значение), если он не способен проигрывать мультимедийные данные в этом формате. В противном случае он вернет строку «maybe» (возможно) или «probably» (вероятно). Из-за сложной природы аудио-и видеокодеков проигрыватель в общем случае не может сообщить ничего более определенного, чем «probably» (вероятно), не предприняв фактическую попытку загрузить и воспроизвести данные указанного типа:

<b>var а = new Audio();</b>

<b>if (a.canPlayType(&quot;audio/wav&quot;)) {</b>

<b>  a.src = &quot;soundeffect.wav&quot;;</b>

<b>  a.play();</b>

<b>}</b>

Когда свойству

<b>src</b>
мультимедийного элемента присваивается значение, он начинает процесс загрузки мультимедийных данных. (Этот процесс не продвинется слишком далеко, если не установить в свойстве
<b>preload</b>
значение «auto».) Присваивание нового значения свойству
<b>src</b>
во время загрузки или воспроизведения других мультимедийных данных прервет загрузку или воспроизведение старых данных. Если вместо настройки атрибута
<b>src</b>
вы будете добавлять в мультимедийный элемент элементы
<b>&lt;source&gt;,</b>
то он не сможет приступить к выбору нужного элемента, так как не будет знать, когда закончится формирование полного комплекта элементов
<b>&lt;source&gt;,</b>
и не сможет начать загрузку данных, пока явно не будет вызван метод
<b>load()</b>
.