IIS 7.0 用 Web プレイリスト - 単純なプレイリストの作成

公開日: 2008 年 2 月 27 日 (作業者: vsood (英語))

更新日: 2009 年 9 月 9 日 (作業者: vsood (英語))

必要条件

IIS 7.0 用 Web プレイリスト拡張機能をインストールするには、Web プレイリストの Readme (英語) で、インストールに関する注意 (Installation Notes) をお読みください。

単純なプレイリストの作成

プレイリストとは、メディア エントリのリストです。 各エントリには、シーク、前へスキップ (進む)、後へスキップ (戻る) という、可能なクライアント再生コントロールのリストが付きます。これらのコントロールはサーバー側から強制できます。 これらのコントロールは、クライアント上でのメディア エントリの再生を制限するような場合に便利です。たとえば、RIAA へのコンプライアンス、マネタイズ (広告)、その他のニーズ (トレーニングなど) を含むメディア エントリの再生を制限できます。

IIS マネージャーでのプレイリストの作成

まず、メディア エントリのリストを作成します。また必要に応じて、クライアントでのシーク、前へスキップ、後へスキップの実行を制限するプロパティをメディア エントリに適用します。ここで実行する手順は次のとおりです。

  1. 空のプレイリストを作成します。
  2. プレイリストにメディア エントリを追加します。
    1. プレイリストのメディア エントリを、一度に 1 つずつ、またはまとめて選択します。
    2. 要素のプロパティを設定し、プレイリストに追加します。
  3. プレイリスト内でメディア エントリの順序が正しいことを確認します。
  4. プレイリストのプロパティを設定します。
  5. [適用] をクリックします。

シナリオ: 次のセクションでは、先頭にシーク/スキップ不可の広告、その次にシーク/スキップ可能なメディア ファイルを含むプレイリストを作成する手順を示します。

空のプレイリストの作成

1. IIS マネージャーで、プレイリストを作成する Web サイトに移動し、[Media Services] カテゴリの [プレイリスト] 機能を開きます。Ee890786.Wp1(ja-jp,TechNet.10).jpg

2. [操作] ウィンドウで、[プレイリストの追加] をクリックします。

Ee890786.walk9(ja-jp,TechNet.10).jpg 

Ee890786.Wp3(ja-jp,TechNet.10).jpg

プレイリストのプロパティの設定

設定できるプロパティは次のとおりです。

  • [名前]: プレイリストのファイル名です。 他のプレイリストと重ならない、一意名である必要があります。
  • [タイトル] (省略可能): プレイリストのタイトルです。
  • [説明] (省略可能): プレイリストの作成者は、後で他のプレイリストと区別できるように、このプロパティに情報を登録しておくことができます。 この情報はクライアントには渡されません。
  • [メディア エントリ]: 「プレイリストへのメディア エントリの追加」を参照してください。

プレイリストへのメディア エントリの追加

1. [プレイリストの追加/編集] ページの [メディア エントリ] 領域で、[追加] をクリックし、[メディア エントリの追加] ダイアログ ボックスを開きます。 このダイアログ ボックス内の詳細は、選択したすべてのメディア エントリに適用されます。

2. [メディア エントリの追加] ダイアログ ボックスで、次の詳細を追加してメディア エントリを追加します。

  • [場所の種類]: ドロップダウン リストから、プレイリストで参照するメディア コンテンツがローカルであるかリモートであるかを選択します。
    • ローカル コンテンツは、ローカル ディスク ([相対 URI] または [物理パス]) 上、またはプレイリスト ハンドラーがアクセスできる UNC 共有 ([物理パス]) 上にあるコンテンツです。
    • リモート コンテンツは、メディア ファイルへの URL (例: http://<myServer>/myfile.wmv)、または他のプレイリスト ファイルへの URL です。Web プレイリストでは、リモート コンテンツに対してシーク/スキップ動作を制御することはできません。

この記事の後の方で、ネスト化されたプレイリストを追加し、Web アプリケーションと統合してコンテンツの場所を取得する方法を説明していますので、参照してください。

  • [コンテンツの場所]: [参照] ボタンを使用して、コンテンツ アイテムをコンマ区切りリストに追加します。 複数のアイテムを一度に選択してプレイリストに追加できます。 隣接しているアイテムを選択するには、Shift キーを押しながら選択します。 隣接していないアイテムを選択するには、Ctrl キーを押しながら選択します。

メモ: IIS マネージャーを使用してリモート サーバーに接続している場合は、リモート コンピューターへのパスであることを確認してください。 この場合、[参照] ボタンは無効になります。

  • [タイトル] (省略可能): プレイリストのタイトルです。
  • [次へスキップを無効にする] (省略可能): 現在のエントリが再生されるまでは次のエントリを再生できないように、コンテンツのスキップを無効にします (たとえば、サイト上のすべての広告をスキップできないようにする場合に使用します)。

メモ: 次へスキップを無効にする機能は、次へスキップを有効にするタイミングを指定するプレイリスト ハンドラー属性 allowSkipAfterMinPercent と依存関係にあります。 たとえば、この属性の値が 80 に設定されている場合、プレーヤーではコンテンツの 80% が再生された後に [前へスキップ] が有効になり (無効になっていた場合)、ユーザーはプレイリスト内の次のアイテムをスキップできるようになります。 この動作を許可しない場合は、この値を 100 に設定しておきます。

  • [前へスキップを無効にする] (省略可能): コンテンツをもう一度最初から再生できないように、コンテンツのスキップを無効にします。 この機能は、オンライン ラジオ局など、メディア アイテムが繰り返し視聴されないようにする場合に便利です。
  • [シークを無効にする] (省略可能): コンテンツ内のシークを無効にします。 ほとんどのプレーヤーで [シーク] バーは無効になりますが、 有効な場合、Web サーバーからシークを無効にします。

Ee890786.Wp4-new(ja-jp,TechNet.10).jpg

Ee890786.Wp5-new(ja-jp,TechNet.10).jpg

 

プレイリスト内でのメディア エントリの順序が正しいことの確認

プレイリストはメディア エントリの表示順序どおりに再生されるため、プレイリスト内の順序は重要です。 再生順序は上から下、 つまり、上にあるコンテンツが再生されてから、下にあるコンテンツが再生されます。 このため、プレイリスト内の順序が正しいことを確認することが重要です。 たとえば、コンテンツ ユーザーが必ず広告を再生してからコンテンツを再生するようにするには、プレイリスト内で広告をコンテンツの上に配置する必要があります (広告の再生を強制する場合は、これに加え、次へスキップを無効にすることもできます)。

メディア エントリを追加したら、プレイリスト内のエントリの順序を変更できます。変更するには、エントリを選択し、[上に移動] ボタンと [下に移動] ボタンを使用してプレイリスト内のメディア エントリの位置を変更します。

Ee890786.Wp6(ja-jp,TechNet.10).jpg

ネスト化されたプレイリスト

ネスト化されたプレイリストとは、他のプレイリストにメディア エントリとして追加されたプレイリストです。 ユーザーから見ると、ネスト化されたプレイリストは、クライアント側のプレイリスト (拡張子 .asx のファイル) が別のクライアント側のプレイリストに入っている状態に見えます。 ネスト化されたプレイリスト内のメディア エントリは、プレイリストに動的な機能が追加されていない限り、ユーザーが要求したときにだけ表示されます。 ネスト化されたプレイリストでサポートされている既定のネスト階層数は 5 です。これは Silverlight と Windows Media Player でサポートされている既定数です。

メモ: Web プレイリストには動的モデルがあるため、再生開始の時点で階層数を知ることはできません。ネスト階層数が 6 以上の場合は、一部のコンテンツが配信されないことがあります。その場合、要求は失敗します。

ネスト化されたプレイリストには、他のメディア エントリと同じように、プレイリスト機能を使用してエントリを追加できます。 たとえば、[コンテンツの場所] ボックスで、プレイリストへのパスまたは URL (C:\media\play.isx、http:\\media\play.isx など) を指定できます。

ネスト化されたプレイリストの構成設定

ネスト化されたプレイリストの機能には、次の構成エントリが使用されます。

  • maximumPlaylistDepth: ネスト化されたプレイリストのサポート階層数を定義します。 既定値は 5 です。この場合、5 階層までがサポートされます。 このエントリは、IIS マネージャーの機能では構成できません。

ネスト化されたプレイリストのプレイリスト設定

プレイリストがネスト化されている場合は、マスター プレイリストの設定が使用されます。 この理由は、他のプレイリストを含むメディア エントリ全体をセットとして扱うにはマスター プレイリストを使用するのが最適だからです。 ネスト化されたプレイリストの設定は無視されます。

  • [プレイリストの有効期間のタイムアウトを有効にする]: プレイリストの有効期間です。 この属性の値は、一番外側のプレイリストに設定されたものがセッション全体に適用されます。 ネスト化されたプレイリストの属性値は無視されます。 この値により、プレイリストのセッション有効期間が決まります。
  • [プレイリストの無効のタイムアウトを有効にする]: プレイリストのセッション情報が無効になるまでの時間です。 この属性の値は、一番外側のプレイリストに設定されたものがセッション全体に適用されます。 ネスト化されたプレイリストの属性値は無視されます。 この値により、非アクティブなセッションでのプレイリストのタイムアウトが決まります。

ネスト化されたプレイリストの再生の制御

プレーヤーの再生コントロールは一般に、それらが関連付けられているメディア エントリにのみ有効です。

ネスト化されたプレイリストがメディア エントリの場合、ネスト化されたプレイリストであるそのメディア エントリをスキップできるかどうかは、メディア エントリのフラグによって決まります。 ネスト化されたプレイリストの再生がクライアントで始まると、スキップ/シークのロジックは、そのネスト化されたプレイリスト内のメディア エントリによって決定されます。 この時点で、親プレイリストは完了していないため、親プレイリストのフラグはまだ有効です。 ネスト化されたメディア エントリが完了としてマークされるのは、プレイリスト全体が再生された後です。

ネスト化されたプレイリストがメディア エントリの場合、プレーヤーの [シーク] コントロールは無視されます。

HTTPD メディア エントリの追加

Web プレイリストでは、httpd:// という URL プレフィックスで始まるメディア エントリを使用できます。この場合、ASP ページ、ASP.NET、PHP アプリケーションといった外部アプリケーションに対し、正しい配信パスまたは URL を計算することを要求します。 アプリケーションへの要求には {var_name} 構文を使用しますが、URL にサーバー変数を含めることができます (例、httpd://{SERVER_NAME}:{SERVER_PORT}/pre.aspx)。 リモート アプリケーションは、この情報を使用して、正しい配信コンテンツを決定できます。 この呼び出しの流れは次の図のとおりです。

Ee890786.httpd(ja-jp,TechNet.10).jpg
 
IIS マネージャーの Web プレイリスト機能では、httpd:// で始まるメディア エントリに対し、どのような場所の種類でも使用できます。 [場所の種類] には、要求を処理したリモート アプリケーションから返されるコンテンツの場所と一致する種類を設定します。 たとえば、リモート アプリケーションから C:\media\file.asf のような物理パスが返される場合は、[場所の種類] を [物理パス] に設定します。

IIS マネージャーの Web プレイリスト機能で、[コンテンツの場所] フィールドに、httpd:// 構文を使用したメディア エントリを追加します。

プレイリストと Web アプリケーションの例

たとえば、次のようなプレイリストがあるとします。

<!DOCTYPE smil PUBLIC "-//W3C//DTD SMIL 2.1//EN" "http://www.w3.org/2005/SMIL21/SMIL21.dtd"[]>
<smil xmlns="http://www.w3.org/2005/SMIL21/Language">
    <head>
        <meta name="title" content="httpd entry " />
        <meta name="description" content="This is just a description" />
    </head>
    <body>
        <seq>
        <ref src="httpd://{SERVER_NAME}:{SERVER_PORT/pre.aspx">
            <param name="srcType" value="relativeURI" />
            <param name="canSkipForward" value="False" />
            <param name="canSkipBack" value="False" />
            <param name="canSeek" value="False" />
            <param name="extraParam" value="" />
            <param name="title" value="Httpd entry" />
        </ref>
        <ref src="C:\inetpub\wwwroot\DieHard.wmv">
            <param name="srcType" value="physicalPath" />
            <param name="canSkipForward" value="True" />
            <param name="canSkipBack" value="True" />
            <param name="canSeek" value="True" />
            <param name="extraParam" value="" />
            <param name="title" value="Die Hard Preview" />
        </ref>
        </seq>
    </body>
</smil> 

この例の場合、再生中にクライアントが最初のエントリを要求すると、Web プレイリストでは pre.aspx ページから応答がダウンロードされます。この要求では SERVER_NAMESERVER_PORT という 2 つのサーバー変数が使用されますが、これらは ASPX ページを要求する際、適切な値に置き換えられます。

単純な pre.aspx ページは次のようになります。

<%@ Page ContentType="text/plain" Language="c#"  %>
advertisement.wmv

この ASPX ページでは advertisement.wmv へのパスが返されますが、任意のロジックを指定して、正しいパスまたは URL が計算されて返されるようにすることもできます。 たとえば、要求パラメーターに基づいてデータベースから値を取得したり、 要求内に IP アドレスのような他のサーバー変数を含めて渡し、既存のアーキテクチャに含まれる任意のデータベースから場所固有のデータを取得したりすることができます。

メモ: Web プレイリストに対しては、ContentTypetext/plain に設定することが重要です。

プレイリストの XML 形式

Web プレイリストのリリース候補 (RC) 版では、既定の実装での Web プレイリストの形式が、プレーン XML から SMIL ベースの形式に変更されました。

Web プレイリストで使用されるプレイリストの形式は、こちら (英語) に記載されている SMIL 仕様に従っています。 ただし、Web プレイリストに SMIL 仕様は完全には実装されておらず、SMIL のサポートはサブセットに限定されています。 Web プレイリストでサポートされるモジュールのセットは以下のとおりです。

サポートされる SMIL モジュール

IIS の Web プレイリストでは、次の SMIL モジュールが限定的にサポートされます (これらのモジュールの詳細については、こちら (英語)にある SMIL 仕様を参照してください)。

  • 構造モジュール - sumil、head、および body タグ
  • メディア オブジェクト モデル - ref、audio、video、および param タグのみの限定サポート
  • メタ情報モジュール - meta タグのみの限定サポート
  • タイミングおよび同期モジュール - seq タグのみの限定サポート

サポートされる SMIL 要素

Web プレイリストでは、次の SMIL 要素が限定的にサポートされます。

  • Doctype: このタグはバックエンドでは無視されますが、UI では記述されます。
  • smil: メイン タグです。有効な Web プレイリスト ファイルを識別するために使用します。
  • head: プレイリストに関するすべてのメタ情報 (タイトルなど) を含むタグです。
  • body: XHTML 変換をサポートするために、SMIL 作成者が使用します。 プレイリストの処理では、このタグは無視されます。 メモ: UI ではプレイリストの記述中にこのタグが追加されます。
  • audio: オーディオ参照を追加するときに使用できます。
  • video: ビデオ参照を追加するときに使用できます。
  • ref: オーディオとビデオの両方に使用できる汎用エントリです。 メモ: UI ではすべてのエントリが ref タグのみを使用して追加されます。
  • param: ref タグ内で、カスタム プロパティを追加するために使用します。 Web プレイリストでは、次のフラグを指定するために使用します。
    • canSeek フラグ (先頭小文字は重要です)
    • canSkipForward フラグ (先頭小文字は重要です)
    • canSkipBack フラグ (先頭小文字は重要です)
    • srcType フラグ: プレイリストのコンテキストにおけるエントリの種類 (物理パス、相対パス、またはリモート エントリ) を表します。
  • meta: head タグ内で使用し、説明のほか、非アクティブ タイムアウト、アイドル タイムアウトのようなセッション属性を指定します。 これは省略可能な属性です。
    • "description" フィールドに、管理に使用するサーバー側のテキスト説明を入力します。
  • seq: プレイリスト内での順序を指定するために使用します。

SMIL ベースの Web プレイリストの例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE smil PUBLIC "-//W3C//DTD SMIL 2.1//EN" "http://www.w3.org/2005/SMIL21/SMIL21.dtd"[]>
<smil xmlns="http://www.w3.org/2005/SMIL21/Language">
    <head>
        <meta name="extraParam" content="<AUTHOR>IIS Team</AUTHOR>" />
        <meta name="title" content="Hello Playlist!" />
        <meta name="description" content="This is just a description" />
    </head>
    <body>
        <seq>
            <ref src="ad.wmv">
                <param name="srcType" value="relativeURI" />
                <param name="canSkipForward" value="False" />
                <param name="canSkipBack" value="True" />
                <param name="canSeek" value="True" />
                <param name="extraParam" value="<DURATION VALUE="00:00:05" />" />
                <param name="title" value="Advertisement" />
            </ref>
            <ref src="C:\inetpub\wwwroot\DieHard.wmv">
                <param name="srcType" value="physicalPath" />
                <param name="canSkipForward" value="True" />
                <param name="canSkipBack" value="True" />
                <param name="canSeek" value="True" />
                <param name="extraParam" value="<COPYRIGHT>IIS Media Services</COPYRIGHT>" />
                <param name="title" value="Die Hard Preview" />
            </ref>
            <ref src="George.wmv">
                <param name="srcType" value="relativeURI" />
                <param name="canSkipForward" value="True" />
                <param name="canSkipBack" value="True" />
                <param name="canSeek" value="True" />
                <param name="extraParam" value="" />
                <param name="title" value="George Preview" />
            </ref>
            <ref src="http://iismp-demo/George.wmv">
                <param name="srcType" value="remoteURL" />
                <param name="canSkipForward" value="True" />
                <param name="canSkipBack" value="True" />
                <param name="canSeek" value="True" />
                <param name="extraParam" value="" />
                <param name="title" value="Remote Preview" />
            </ref>
        </seq>
    </body>
</smil>
     

 

資格情報で保護されたエントリの追加

プレイリストに追加する必要のあるメディア エントリが、資格情報 (ユーザー名およびパスワード) で保護されていることがあります。 プレイリストからこれらのエントリにアクセスするには、プレイリスト構成で偽装設定のオプションを使用します。 これらの設定は、IIS マネージャーの UI で設定できます。

偽装設定により、パスがユーザー名およびパスワードへマップされます。 これらはグローバルな設定であり、サイト階層の中で、指定したレベル以下にあるすべてのプレイリストに適用されます。

以下の手順で、特定パス用の資格情報を追加できます。

1. [操作] ウィンドウで、[偽装設定の編集] をクリックします。

Ee890786.walk10(ja-jp,TechNet.10).jpg 

2. [追加] をクリックします。

Ee890786.wp8(ja-jp,TechNet.10).jpg

3. [権限借用設定の追加] ダイアログ ボックスで、資格情報を指定するパスを入力し、ログオン方法を選択します。 パスは、UNC パスと単純なローカル パスのどちらでも指定できます。 ログオン方法は、仮想ディレクトリに使用されるログオン方法と同じです。 詳細については、この記事の後の方にある「その他の情報」を参照してください。

4. [設定] をクリックします。

Ee890786.Wp9(ja-jp,TechNet.10).jpg

5. [資格情報の設定] ダイアログ ボックスで、前の手順で指定したパス用のユーザー名とパスワードを指定します。

Ee890786.Wp10(ja-jp,TechNet.10).jpg

6. これで、パスの偽装設定が設定されました。

Ee890786.Wp11(ja-jp,TechNet.10).jpg

7. プレイリスト ハンドラーでは、パスを基に、使用する正しい資格情報が決定されます。 次の図を参照してください。Ee890786.Wp12(ja-jp,TechNet.10).jpg

プレイリストの再生

前に挙げた SMIL プレイリストは、サーバーで読み取られ、クライアント側のプレイリスト (拡張子 .asx のファイル) の形式でクライアントに送られます。 クライアント側のプレイリスト ファイル (.asx) を作成するために、プレイリスト ハンドラーでは以下のことが行われます。

  1. meta タグで title として指定された内容が、ASX 要素の下の TITLE 要素にマップされます。
  2. ASX の下の PARAM 要素として、LastModified というパラメーターが追加されます。 これは、サーバー上のプレイリストの最終更新日時を示します。
  3. プレイリストの meta タグに extraParam として指定された内容が、追加の処理を行うことなく、そのままプレイリストの ASX 構文にサブ要素としてマップされます (下のプレイリストの AUTHOR 要素)。
  4. エントリ名が、ASX 構文の ENTRY の TITLE としてマップされます。
  5. SMIL の ref 要素が、サーバーによってわかりにくい URL へと変換され、ASX の ENTRY の REF 要素として渡されます。
  6. False となっている canSkipForward が、ASX の PARAM タグに CANSKIPFORWARD としてマップされます。
  7. False となっている canSkipBack が、ASX の PARAM タグに CANSKIPBACK としてマップされます。
  8. False となっている canSeek が、ASX の PARAM タグに CANSEEK としてマップされます。
  9. canSkipFwd、canSkipBack、および canSeek の 3 つがいずれも False の場合、それらは ASX の ENTRY の CLIENTSKIP 属性としてマップされます。
  10. URL をわかりにくくし、サーバー セッションに関連付けるため、出力形式に sessionId が追加されます。関連付けられたセッションでは、クライアントのダウンロード内容が記録されます。 この内容は、サーバーでシーク/スキップ オプションを強制するために使用されます。

前の例で示したプレイリストは、クライアントからのアクセスの際、次の ASX に書き換えられます。

<ASX VERSION="3.0">
    <TITLE>Hello Playlist!</TITLE>
    <PARAM NAME="LastModified" VALUE="2008-09-09T16:24:37Z" />
    <AUTHOR>IIS Team</AUTHOR>
    <ENTRY>
        <PARAM NAME="CANSKIPFORWARD" VALUE="NO"/><TITLE>Advertisement</TITLE>
        <REF href="http://iismp-demo/file.isx?sessionId=261276a9-99c2-4af6-b81d-47e88b7ce18c;entryId=1" />
        <DURATION VALUE="00:00:05" />
    </ENTRY>
    <ENTRY>
        <TITLE>Die Hard Preview</TITLE>
        <REF href="http://iismp-demo/file.isx?sessionId=261276a9-99c2-4af6-b81d-47e88b7ce18c;entryId=2" />
        <COPYRIGHT>IIS Media Services</COPYRIGHT>
    </ENTRY>
    <ENTRY>
        <TITLE>George Preview</TITLE>
        <REF href="http://iismp-demo/file.isx?sessionId=261276a9-99c2-4af6-b81d-47e88b7ce18c;entryId=3" />
    </ENTRY>
    <ENTRY>
        <TITLE>Remote Preview</TITLE>
        <REF href="http://iismp-demo/file.isx?sessionId=261276a9-99c2-4af6-b81d-47e88b7ce18c;entryId=4" />
    </ENTRY>
</ASX>

 

プレーヤーでプレイリストを再生しようとするときには、上の PARAM タグがプレーヤーまたはプレーヤーを記述する開発者のヒントになります。 ヒントを無視しようとすると、サーバー側のロジックによって、[次へスキップを無効にする]、[前へスキップを無効にする]、および [シークを無効にする] の各メディア コントロールの指定が反映されます。

プレイリストのリリース候補 (RC) 版では、クライアント側のプレイリスト形式 asx に加えて、XSL 変換を使用したその他の xml 形式やテキスト形式での出力もサポートされます。 「XSLT を使用した出力形式の拡張」の手順を参照してください。

その他の情報

関連コンテンツ

記事