HTML&CSSの初心者向け

HTML&CSS初心者向け(第23部):ウェブサイトのためのマルチメディア(2)

チュートリアルのすべてのビデオ HTML&CSS入?

オーディオファイルは、HTML5でビデオと同様に簡単に埋め込むことができます。 HTML5では、そのためにaudioという独自の要素が用意されています。

<audio src="song.mp3">
   ブラウザはこのaudio要素をサポートしていません。
</audio>

audio要素にはsrc属性を介して再生するファイルの名前が割り当てられます。ただし、ファイルはまだ再生されていません。そのためにはコントロール要素が必要です。

コントロール要素を表示するには、audio要素にcontrols属性を割り当てます。

<audio src="song.mp3" controls>
   ブラウザはこのaudio要素をサポートしていません。
</audio>



ブラウザ内では、次のように表示されるはずです:

HTML & CSS初心者向け(第23部): ウェブサイトのためのマルチメディア(2)

controlsがない場合、audio要素は表示されません。自分でJavaScriptを使って独自のコントロール要素を追加する場合には、属性を省略することが有用です。

audio要素の使用もまた問題があります。問題の原因はやはり、それぞれ異なるフォーマットをサポートしているブラウザです。次の表では、今現在の各ブラウザがどのフォーマットをサポートしているかを示しています。

ブラウザ
MP3

OGG

WAV

AU/SND

AIF

Firefox

いいえ

はい

はい

いいえ

いいえ

Safari

はい

いいえ

はい

はい

はい

Chrome

はい

はい

いいえ

いいえ

いいえ

Opera

いいえ

はい

はい

はい

いいえ



では、何をすればいいのでしょうか?audio要素では、さまざまなフォーマットを指定するための追加のsource要素を定義することができます。例:

<audio controls>  
    <source src="song.mp3">  
    <source src="song.ogg">  
</audio>



src属性には、異なる形式のファイルが割り当てられます。

controls以外にも、audio要素には追加の属性があります。その1つがautoplayです。

<audio controls autoplay>  
    <source src="song.mp3">  
    <source src="song.ogg">  
</audio>



この属性を設定すると、オーディオファイルが読み込まれると自動的に再生が開始されます。通常はこの属性を設定しないで、訪問者にオーディオファイルの再生タイミングを自由に選択させるべきです。

さらに興味深いのはloop属性です。この属性を設定すると、ファイルがループ再生されます。

ビデオの埋め込みと同様に、オーディオファイルにはtypemediaの2つの属性があります。ここでも、該当するMIMEタイプやコーデックを指定できます。HTML5仕様にはtype属性に対して次の典型的な設定がリストされています:

type='audio/ogg; codecs=vorbis'

type='audio/ogg; codecs=speex'

type='audio/ogg; codecs=flac'

source要素ではなく、audio要素でのみこれらの属性を使用できることに注意してください。

Flash & Co. の埋め込み

Flashファイルは、以前のHTMLバージョンではembedobjectの組み合わせを使用して埋め込むことができました。その結果、非常に見栄えの悪い構文が生まれました。例えば、次のようになります:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="800" height="600">
  <param name=movie value="intro.swf">
 <param name=quality value=high>
 <embed src="intro.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="800" height="600"> </embed>
 </object>

これが、objectembed要素を通じた古典的な方法で、非常に長い間HTMLで使用されてきた方法です。

HTML&CSSを初心者向けに(第23部):ウェブサイトのためのマルチメディア(2)



しかし、「古典的」という言葉でここを表現することは、W3Cによって過去に承認された方法であったことを意味しません。なぜなら、HTML 4ではInternet Explorerによって正しく解釈されたobject要素が推奨された一方で、Netscape Navigatorはembed要素を使用しました。この異なる解釈のため、objectembed要素の組み合わせが必要となりました。

HTML5では、アクティブコンテンツを埋め込むために公式にobjectembedの2つの要素が用意されています。

embedは、通常ブラウザプラグインが必要な非HTMLコンテンツの表示用のコンテナです。埋め込まれたコンテンツを表示するためには、通常ブラウザプラグインが必要です。

embedを使用すると、例えばFlash動画を標準準拠で埋め込むことができます。以下はその見本です。どのように見えるかの例です:

<embed
    src="http://www.youtube.com/v/v1PgiBpTtao?fs=1&hl=de_DE"
    type="application/x-shockwave-flash"
    width="384"
    height="313"
    allowscriptaccess="always"
    allowfullscreen="true"
  />



embed要素にはさまざまな属性を割り当てることができます。最も重要なのはもちろんsrc属性です。なぜなら、そこで最終的に組み込むファイルを指定するからです。またtype属性ではMIMEタイプが指定されます。

Flashの場合はapplication/x-shockwave-flashとなります。一方、LaTeXファイルを組み込みたい場合はapplication/x-latexと記述します。組み込まれるファイルの幅と高さはwidthheightで制御されます。

HTML&CSS初心者向け(第23弾):ウェブサイトのためのマルチメディア(2)

他にもHTML5には公式には属さない追加の属性があります。これらの属性により、使用されるプラグインを制御できます。前の例では、"Flash属性"のallowscriptaccessallowfullscreenを使用して、スクリプトアクセスとフルスクリーンモードが可能であることが定義されています。同様に、Flash動画のクオリティを決定するquality属性もあります。

<embed 
    src="flash.swf" 
    width="600" height="300" 
    type="application/x-shockwave-flash" 
    quality="high" 
 />

object要素

object要素は、内容のコンテナとしてembedと同様に機能します。ただし、embedとは異なり、objectには3つの異なる内容モデルがあります。ブラウザが直接表示可能な画像であると認識すると、img要素として扱います。参照されたオブジェクトがWebコンテンツである場合、その内容はiFrame内で表示されます。(iFrameについてはこのシリーズの後半で詳しく説明します)。他の内容の場合は、objectembedと同様に動作します。

以下の例は、object要素を使用してFlash動画を組み込む方法を示しています。

<object
    type="application/x-shockwave-flash"
    data="http://www.youtube.com/v/BzYBY_9rnuA?version=3&hl=de_DE&rel=0"
    width="400"
    height="300">
    <param name="allowscriptaccess" value="always" />
    <param name="allowfullscreen" value="true" />
    <p>
       In Ihrem Browser ist kein Flash-Plug-in vorhanden.
    </p>
 </object>

最後に、objectまたはembedを使用すべきかという問題があります。最初の見た目では、これら2つの要素はほぼ同じように見えます。実際、object要素はembed要素ができることはすべてできます。

HTMLとCSS入門(Part 23):ウェブサイトのマルチメディア(2)



コンテンツを組み込む場合(画像を除く)、通常はobject要素を使うべきです。なぜなら、この要素は、組み込まれた要素が読み込めない場合に表示される代替コンテンツを指定できるからです。