ビット レート調整の拡張性のウォークスルー

公開日: 2007 年 11 月 23 日 (作業者: saad (英語))

更新日: 2009 年 5 月 11 日 (作業者: saad (英語))

必要条件

IIS 7.0 用のビット レート調整拡張機能のインストールについては、「ビット レート調整の Readme (英語)」の「インストールに関する注意事項 (Installation Notes)」を参照してください。

メディア形式規則 (MFR) の作成

ビット レート調整では、メディア コンテンツのエンコード時のビット レートに基づくメディア形式の調整をサポートしています。 これを実現するための最初の手順として、対象となるメディア コンテンツのビット レートを特定する必要があります。

ビット レート調整には、メディア形式規則の概念があります。 この規則は XML 形式で表され、メディア コンテンツ ファイルのビット レート情報を取得するのに必要な情報を提供します。 ビット レート情報は、メディア ファイル内に、ビット レート フィールドの形式で含まれている場合と、再生時間フィールドの形式で含まれている場合があります。ファイル サイズを再生時間で除算することによって、およそのエンコード時のビット レートを求めることができます。ビット レート調整では、どちらの方法でもビット レート情報を取得できます。 メディア形式規則には、ビット レートと再生時間の 2 つの種類があります。 これら 2 つの規則を説明する前に、覚えておくと便利な一般的なガイドラインを示します。

MFR のガイドライン

メディア形式規則を使用するときには、次のようなガイドラインを覚えておいてください。

  1. 規則は形式固有である。規則は構成スキーマごとに特定のメディア形式の種類にのみ適用されます。 メディア形式の種類は、ファイル名拡張子によって決まります。
  2. 特定の形式に対して複数の規則が存在する場合がある。特定のメディア形式に複数の規則が存在する場合があります。 これは、一部の形式でオーディオとビデオで個別のビット レート情報が格納される場合があるためです。 これは、マルチ ビット レート (MBR) コンテンツでも使用されます。**
  3. 複数の規則は累積される。特定のメディア形式に対して複数の規則がある場合、ビット レートは、個々の規則すべての合計に基づいて計算されます。
  4. ビット レート規則は再生時間規則よりも優先される。特定の形式に対してビット レート規則と再生時間規則の両方を指定した場合、ビット レート規則が適用され、再生時間規則は無視されます。
  5. 作業の内容を理解せずにむやみに規則を変更しない。**これはとても重要な注意事項です。 これらの規則は非常に便利で、大きなメリットをもたらします。 同時に、これらの規則は特定のファイル名拡張子を持つすべてのファイルに影響します。 したがって、独自のメディア形式規則を作成する場合は、その潜在的な影響をよく理解しておくことが重要です。 メディア形式規則を作成または編集する前に、IIS 7.0 の ApplicationHost.config ファイルのバックアップ コピーを作成しておくことをお勧めします。

ビット レート規則

ビット レート規則では、メディア ファイル形式から直接ビット レート情報を取得する方法をビット レート調整に指示します。 この規則では、次の表に示されている属性をサポートしています。 ビット レート情報は、形式によって異なる方法で格納されます。

ビット レート規則には、次のフィールドが含まれています。

規則の属性

必須項目

設定可能な値

既定値

説明

searchPattern

いいえ

String

任意の文字列

なし

ビット レート情報を見つけるための検索文字列。 searchPattern 文字列の解釈は、searchPatternType 属性によって異なります。 searchPattern は、searchRangeStart と searchRangeEnd で定義された検索範囲内でのみ検索されます。

searchPatternType

いいえ

Enum

hexValue、stringValue

なし

searchPattern の型 (16 進値または文字列)。

hexValue: 検索パターンはファイル内の実際の 16 進値を表します。 たとえば、ファイル内の "bitrate" という文字列を検索する場合、searchPattern を "62697472617465" ("0x62" は "b"、"0x69" は "i" など) に設定する必要があります。

stringValue: 検索パターンは検索対象の文字列値を表します。 ASCII 文字のみ指定でき、大文字と小文字が区別されます。 たとえば、ファイル内の "bitrate" という文字列を検索する場合、searchPattern を "bitrate" に設定する必要があります。

searchRangeStart

いいえ

Int64

任意の 64 ビット整数

0

ファイルの先頭またはファイルの末尾を基準とした検索の開始オフセット (「searchFrom」も参照してください)。 正の数値のみ指定できます。

searchRangeEnd

いいえ

Int64

任意の 64 ビット整数

4096

ファイルの先頭またはファイルの末尾を基準とした検索の終了オフセット (「searchFrom」も参照してください)。 正の数値のみ指定できます。

searchFrom

いいえ

Enum

beginning、end、both

beginning

ファイルを基準とした検索方向を指定します。

beginning: これは順方向検索を表します。 ファイルの先頭から検索を実行することを意味します。 たとえば、ファイルの最初の 1000 バイトに含まれるデータを検索する場合は、searchRangeStart を 0 に、searchRangeEnd を 1000 に、searchFrom を "beginning" に設定します。

end: これは逆方向検索を表します。 ファイルの末尾から先頭に向って検索を開始することを意味します。 たとえば、ファイルの最後の 1000 バイトに含まれるデータを検索する場合は、searchRangeStart を 0 に、searchRangeEnd を 1000 に、searchFrom を "end" に設定します。

both: ファイルの先頭とファイルの最後の両方から検索を実行することを意味します。 たとえば、searchRangeStart を 0 に、searchRangeEnd を 1000 に、searchFrom を "both" に設定した場合、まず、ファイルの最初の 1000 バイトが検索された後、ファイルの最後の 1000 バイトが検索されます。 ファイルの先頭での検索が成功した場合は、ファイルの最後からの検索はスキップされることに注意してください。

dataOffset

いいえ

Uint

任意の符号なし整数

0

検索位置からのオフセット ビット。 searchPattern が指定されている場合、この値は検索パターンの最後からのオフセットを指定します。

dataType

はい

Enum

uint16、uint32、float、double

なし

dataOffset の位置にあるデータの型 (前の dataOffset を参照)。

unit16: 16 ビット符号なし

unit32: 32 ビット符号なし

float: 32 ビット単精度浮動小数点数

double: 64 ビット倍精度浮動小数点数

endianness

いいえ

Enum

bigEndian、littleEndian

bigEndian

バイト オーダー。

unitBitPerSecond

いいえ

Uint

任意の符号なし整数

1

ビット レートの乗数。 たとえば、このパラメーターの値が 1 の場合はビット レート データがビット/秒 (bps) 単位で表されることを意味し、値が 1000 の場合はビット レート データがキロビット/秒 (kbps) で表されることを意味します。

表 1: ビット レート規則の属性

ビット レート規則の例を以下に示します。

<add fileExtension=".asf">
        <bitrateRules enabled="true"> 
            <add searchPattern="A1DCAB8C47A9CF118EE400C00C205365" searchPatternType="hexValue" searchRangeStart="0" searchRangeEnd="4096" dataOffset="84" dataType="uint32" endianness="littleEndian" unitBitPerSecond="1" /> 
        </bitrateRules> 
    </add> 
 

    <add fileExtension=".wma"> 
        <bitrateRules enabled="true"> 
            <add searchPattern="A1DCAB8C47A9CF118EE400C00C205365" searchPatternType="hexValue" searchRangeStart="0" searchRangeEnd="4096" dataOffset="84" dataType="uint32" endianness="littleEndian" unitBitPerSecond="1" /> 
        </bitrateRules> 
    </add> 
 

    <add fileExtension=".wmv"> 
        <bitrateRules enabled="true"> 
            <add searchPattern="A1DCAB8C47A9CF118EE400C00C205365" searchPatternType="hexValue" searchRangeStart="0" searchRangeEnd="4096" dataOffset="84" dataType="uint32" endianness="littleEndian" unitBitPerSecond="1" /> 
        </bitrateRules> 
    </add> 
    

    <add fileExtension=".flv"> 
        <bitrateRules enabled="true"> 
            <add searchPattern="videodatarate" searchPatternType="stringValue" searchRangeStart="9" searchRangeEnd="4096" dataOffset="1" dataType="double" endianness="bigEndian" unitBitPerSecond="1000" /> 
            <add searchPattern="audiodatarate" searchPatternType="stringValue" searchRangeStart="9" searchRangeEnd="4096" dataOffset="1" dataType="double" endianness="bigEndian" unitBitPerSecond="1000" />                    
        </bitrateRules> 
    </add> 
 

    <add fileExtension=".rmvb"> 
        <bitrateRules enabled="true"> 
            <add searchPattern="PROP" searchPatternType="stringValue" searchRangeStart="0" searchRangeEnd="4096" dataOffset="6" dataType="uint32" endianness="bigEndian" unitBitPerSecond="1" /> 
        </bitrateRules> 
    </add> 
 

    <add fileExtension=".rm"> 
        <bitrateRules enabled="true"> 
            <add searchPattern="PROP" searchPatternType="stringValue" searchRangeStart="0" searchRangeEnd="4096" dataOffset="10" dataType="uint32" endianness="bigEndian" unitBitPerSecond="1" /> 
        </bitrateRules> 
    </add> 
    

再生時間規則

再生時間規則はビット レート規則に似ていますが、メディア ファイルから取得される値がビット レートではなく、コンテンツの再生時間を表します。 属性の面でも、再生時間規則はビット レート規則に似ていますが、異なる点が 1 つあります。 再生時間規則の場合、unitBitPerSecond 属性がなく、代わりに単位は timeScale 要素によって決まります。 timeScale 要素は基本的には再生時間フィールドの単位を指定しますが、ファイルから検索して取得することもできます。これは、再生時間でもビット レートでも同じです。 あるいは、timeScale を、constScale 属性で指定した固定値にすることもできます。

再生時間規則には、durationtimeScale の 2 つの部分があります。

  • duration: このサブ規則には、メディア形式の再生時間の (時間の単位による) 値を決定するすべての情報が含まれます。
  • timeScale: このサブ規則には、duration を表すために使用される時間の単位を決定するすべての情報が含まれます。この情報は、再生時間規則の検索結果を秒単位に変換するための乗数として使用できます。

この 2 つの部分は、スキーマでは別の要素として表されます。 要素の属性の定義を以下の表に示します。

規則の属性

必須項目

設定可能な値

既定値

説明

searchPattern

いいえ

String

任意の文字列

なし

再生時間情報を見つけるための検索文字列。 searchPattern 文字列の解釈は、searchPatternType 属性によって異なります。

searchPatternType

いいえ

Enum

hexValue、stringValue

なし

searchPattern の型 (16 進値または文字列)。

hexValue: 検索パターンはファイル内の実際の 16 進値を表します。

stringValue: 検索パターンは検索対象の文字列値を表します。 ASCII 文字のみ指定でき、大文字と小文字が区別されます。

searchRangeStart

いいえ

Int64

任意の 64 ビット整数

0

ファイルの先頭またはファイルの末尾を基準とした検索の開始オフセット (「searchFrom」も参照してください)。

searchRangeEnd

いいえ

Int64

任意の 64 ビット整数

4096

ファイルの先頭またはファイルの末尾を基準とした検索の終了オフセット (「searchFrom」も参照してください)。

searchFrom

いいえ

Enum

beginning、end、both

beginning

ファイルを基準とした検索方向を指定します。

beginning: これは順方向検索を表します。 ファイルの先頭から検索を実行することを意味します。 たとえば、ファイルの最初の 1000 バイトに含まれるデータを検索する場合は、searchRangeStart を 0 に、searchRangeEnd を 1000 に、searchFrom を "beginning" に設定します。

end: これは逆方向検索を表します。 ファイルの末尾から先頭に向って検索を開始することを意味します。 たとえば、ファイルの最後の 1000 バイトに含まれるデータを検索する場合は、searchRangeStart を 0 に、searchRangeEnd を 1000 に、searchFrom を "end" に設定します。

both: ファイルの先頭とファイルの最後の両方から検索を実行することを意味します。 たとえば、searchRangeStart を 0 に、searchRangeEnd を 1000 に、searchFrom を "both" に設定した場合、まず、ファイルの最初の 1000 バイトが検索された後、ファイルの最後の 1000 バイトが検索されます。 ファイルの先頭での検索が成功した場合は、ファイルの最後からの検索はスキップされることに注意してください。

dataOffset

いいえ

Uint

任意の符号なし整数

0

検索位置からのオフセット ビット。 searchPattern が指定されている場合、この値は検索パターンの最後からのオフセットを指定します。

dataType

はい

Enum

uint16、uint32、float、double

なし

dataOffset の位置にあるデータの型 (前の dataOffset を参照)。

unit16: 16 ビット符号なし

unit32: 32 ビット符号なし

float: 32 ビット単精度浮動小数点数

double: 64 ビット倍精度浮動小数点数

endianness

いいえ

Enum

bigEndian、littleEndian

bigEndian

バイト オーダー。

表 2: duration 要素の属性

 

規則の属性

必須項目

設定可能な値

既定値

説明

constScale

いいえ

Uint

任意の符号なし整数

0

この種類のすべてのファイルについて固定の timeScale を使用するか、この種類の各ファイルについて timeScale を計算するかを指定します。 この属性に 0 (ゼロ) 以外の値を指定した場合、他の属性はすべて無視され、この値が timeScale として使用されます。 指定した数値は、再生時間データを秒数に変換するための乗数として使用されます。 たとえば、"duration" 要素から解析された数値がこの種類のすべてのファイルでミリ秒数を意味している場合、timeScale を 1000 と指定する必要があります。

searchPattern

いいえ

String

任意の文字列

なし

タイム スケール情報を見つけるための検索文字列。 searchPattern 文字列の解釈は、searchPatternType 属性によって異なります。

searchPatternType

いいえ

Enum

hexValue、stringValue

なし

searchPattern の型 (16 進値または文字列)。

hexValue: 検索パターンはファイル内の実際の 16 進値を表します。

stringValue: 検索パターンは検索対象の文字列値を表します。 ASCII 文字のみ指定でき、大文字と小文字が区別されます。

searchRangeStart

いいえ

Int64

任意の 64 ビット整数

0

ファイルの先頭またはファイルの末尾を基準とした検索の開始オフセット (「searchFrom」も参照してください)。

searchRangeEnd

いいえ

Int64

任意の 64 ビット整数

4096

ファイルの先頭またはファイルの末尾を基準とした検索の終了オフセット (「searchFrom」も参照してください)。

searchFrom

いいえ

Enum

beginning、end、both

beginning

ファイルを基準とした検索方向を指定します。

beginning: これは順方向検索を表します。 ファイルの先頭から検索を実行することを意味します。 たとえば、ファイルの最初の 1000 バイトに含まれるデータを検索する場合は、searchRangeStart を 0 に、searchRangeEnd を 1000 に、searchFrom を "beginning" に設定します。

end: これは逆方向検索を表します。 ファイルの末尾から先頭に向って検索を開始することを意味します。 たとえば、ファイルの最後の 1000 バイトに含まれるデータを検索する場合は、searchRangeStart を 0 に、searchRangeEnd を 1000 に、searchFrom を "end" に設定します。

both: ファイルの先頭とファイルの最後の両方から検索を実行することを意味します。 たとえば、searchRangeStart を 0 に、searchRangeEnd を 1000 に、searchFrom を "both" に設定した場合、まず、ファイルの最初の 1000 バイトが検索された後、ファイルの最後の 1000 バイトが検索されます。 ファイルの先頭での検索が成功した場合は、ファイルの最後からの検索はスキップされることに注意してください。

dataOffset

いいえ

Uint

任意の符号なし整数

0

検索位置からのオフセット ビット。 searchPattern が指定されている場合、この値は検索パターンの最後からのオフセットを指定します。

dataType

はい

Enum

uint16、uint32、float、double

なし

dataOffset の位置にあるデータの型 (前の dataOffset を参照)。

unit16: 16 ビット符号なし

unit32: 32 ビット符号なし

float: 32 ビット単精度浮動小数点数

double: 64 ビット倍精度浮動小数点数

endianness

いいえ

Enum

bigEndian、littleEndian

bigEndian

バイト オーダー。

表 3: timeScale の属性

再生時間規則の例を以下に示します。

<add fileExtension=".flv">
         <durationRule enabled="true"> 
            <duration searchPattern="duration" searchPatternType="stringValue" searchRangeStart="0" searchRangeEnd="4096" dataOffset="1" dataType="double" endianness="bigEndian" /> 
            <timeScale constScale="1" /> 
        </durationRule> 
    </add> 
 

    <add fileExtension=".mov"> 
        <durationRule enabled="true"> 
            <duration searchPattern="mvhd" searchPatternType="stringValue" searchRangeStart="0" searchRangeEnd="65536" searchFrom="both" dataOffset="16" dataType="uint32" endianness="bigEndian" /> 
            <timeScale searchPattern="mvhd" searchPatternType="stringValue" searchRangeStart="0" searchRangeEnd="65536" searchFrom="both" dataOffset="12" dataType="uint32" endianness="bigEndian" /> 
        </durationRule> 
    </add> 
 

    <add fileExtension=".mp4"> 
        <durationRule enabled="true"> 
            <duration searchPattern="mvhd" searchPatternType="stringValue" searchRangeStart="0" searchRangeEnd="65536" searchFrom="both" dataOffset="16" dataType="uint32" endianness="bigEndian" /> 
            <timeScale searchPattern="mvhd" searchPatternType="stringValue" searchRangeStart="0" searchRangeEnd="65536" searchFrom="both" dataOffset="12" dataType="uint32" endianness="bigEndian" /> 
        </durationRule> 
    </add> 

構成ストアへの MFR の適用

これらの規則は IIS 7.0 の構成ファイル ApplicationHost.config に格納されます。追加のメディア形式をサポートする規則を作成した後、ApplicationHost.config ファイルに追加する必要があります。 この作業を行うために推奨される方法として、次の 2 つがあります。

手動での編集

  1. テキスト エディターを使用して、IIS 7.0 のインストール ルート ディレクトリにあるファイル (%windir%\system32\inetsrv\config\ApplicationHost.config) を開きます。
  2. System.webserver の media セクションにある mediaformats セクションを見つけます。
  3. ファイルの </mediaformats> タグの直前に新しいメディア形式規則 (<add> .... </add>) を手動で追加します。

AppCmd

AppCmd.exe を使用して規則を追加します。 たとえば、次の規則を追加します。

<add fileExtension=".asf">
    <bitrateRules enabled="true"> 
        <add searchPattern="A1DCAB8C47A9CF118EE400C00C205365" searchPatternType="hexValue" searchRangeStart="0" searchRangeEnd="4096" dataOffset="84" dataType="uint32" endianness="littleEndian" unitBitPerSecond="1" /> 
    </bitrateRules> 
</add>

この場合、AppCmd のコマンドは次のようになります。

C:\Windows\System32\inetsrv\> appcmd set config /section:bitrateThrottling /+mediaFormats.[fileExtension='asf']

C:\Windows\System32\inetsrv\> appcmd set config /section:bitrateThrottling /mediaFormats.[fileExtension='.asf'].bitrateRules.enabled:true

C:\Windows\System32\inetsrv\> appcmd set config /section:bitrateThrottling /+mediaFormats.[fileExtension='.asf'].bitrateRules.[searchPattern='A1DCAB8C47A9CF118EE400C00C205365',searchPatternType='hexValue',searchRangeStart='0',searchRangeEnd='4096',dataOffset='84',dataType='uint32',endianness='littleEndian',unitBitPerSecond='1']

サーバー変数による調整

特定の状況では、プログラムによって、要求ごとに明示的な調整レートを指定することが望ましい場合や必要な場合があります。 このような場合は、ここで説明するサーバー変数を SetServerVariable メソッドで設定することによって対応できます。 サーバー変数の値は、変数の対象となる特定の応答の構成よりも優先されます。

サーバー変数

  • ResponseThrottler-Enabled: 特定の要求に対する調整を有効または無効にします。 値 0 は無効であることを、その他の値はビット レート調整が有効であることを意味します。 
  • ResponseThrottler-InitialSendSize: 初期送信サイズ。キロバイト (KB) 単位で指定します。ファスト スタートのエクスペリエンスを実現するために、調整されていないレートで最初にクライアントに送信されるサイズです。 この変数は、ResponseThrottler-Rate と共に使用できます。
  • ResponseThrottler-Rate: 調整レート。キロビット/秒 (kbps) 単位で指定します。指定されたファスト スタートの配信が終了した後、応答はこのレートに調整されます。 この変数は、ResponseThrottler-InitialSendSize と共に使用できます。
  • ResponseThrottler-FileExtension: 要求のファイル名拡張子を指定する文字列 (wmv など)。 この変数は、ResponseThrottler-EncodedBitRateKbps と共に指定する必要があります。 これは、メディア応答にのみ適用できます。
  • ResponseThrottler-EncodedBitRateKbps: 応答で提供されるコンテンツのエンコード時のビット レート (1000 など)。 この変数は、ResponseThrottler-FileExtension と共に指定する必要があります。これは、メディア応答にのみ適用できます。
  • ResponseThrottler-ThrottleRatePercentage: 要求に適用される調整レートをパーセントで指定します (110 など)。 これは、メディア応答にのみ適用できます。 この変数は、ResponseThrottler-InitialBufferTimeSeconds と共に使用できます。
  • ResponseThrottler-InitialBufferTimeSeconds: ファスト スタートのために応答が調整されない初期バッファー時間を指定します (20 など)。 これは、メディア応答にのみ適用できます。 この変数は、ResponseThrottler-ThrottleRatePercentage と共に使用できます。

   サーバー変数が機能するには、ビット レート調整が有効になっている必要があります。

優先順位

SetServerVariable で指定された調整レートは、ApplicationHost.config ファイルや web.config ファイルで設定済みのすべての調整値よりも優先されます。 ただし、新しい調整レートも [最大調整レート] の値 (指定されている場合) の影響を受けます。SetServerVariable によって指定された調整レートは要求ごとのみです。 レートは要求間で維持されません。

優先順位は次のような順序になります。

  1. ビット レート調整が無効である場合、サーバー変数は何も適用されません。
  2. ResponseThrottler-Enabled の値が 0 である場合、他のどのサーバー変数も考慮されず、応答は調整されません。 この変数の値が 0 以外である場合は、応答の調整が有効であることを意味します。
  3. ResponseThrottler-Rate が指定されている場合は、要求の調整レートとして使用されます。 変数 ResponseThrottler-InitialSendSize が追加で指定および使用される場合があります。 これらの変数が指定されている場合、以下のすべての変数は評価されません。
  4. ResponseThrottler-Rate が指定されていない場合、他のメディア固有の変数は次の順序で指定できます。
    1. ResponseThrottler-FileExtension および ResponseThrottler-EncodedBitRateKbps は一緒に指定する必要があります。 これは、ビット レート調整でのコンテンツ検出よりも優先されます。 ファイル名拡張子を使用して config から規則が検索され、調整レートを計算するときにはエンコード時のビット レートが使用されます。
    2. ResponseThrottler-ThrottleRatePercentage が指定されている場合、その値が使用され、config 内の値は無効になります。 さらに、ResponseThrottler-InitialBufferTimeSeconds を使用して、ファスト スタートの間隔が指定されます。
  5. サーバー変数が何も指定されていない場合は、保存されている構成を使用して調整の動作が決定されます。

プログラムによるサーバー変数の設定

ビット レート調整を動的に制御するには、C++ のコードとマネージ コードのいずれかを使用できます。

  1. IIS モジュールを構築します。IIS モジュールは、以前のバージョンの IIS の ISAPI フィルターに似ています。 プログラムによる調整を任意の規則に基づいて一部またはすべての要求に適用する場合は、モジュールを使用します。
  2. IIS ハンドラーを構築します。IIS ハンドラーは、以前のバージョンの IIS の ISAPI 拡張機能に似ています。 プログラムによる調整を、特定の URL やファイルの種類に対する要求にのみ適用する場合は、ハンドラーを使用します。

マネージ コードを使用してモジュールを作成する場合は、HttpRequest.ServerVariables プロパティを使用します。 このモジュールは、次のサンプル コードのようになります。ここで、

  • BeginRequestapp.Context.Request.PhysicalPath は、おそらくファイルの種類に基づいて、適切な調整レートを決定します。
  • 'foo' は ResponseThrottler-InitialSendSize または ResponseThrottler-Rate です。
  • 'bar' は、それぞれ対応する初期送信サイズまたは調整レート (6000 または 300 など) です。
class MyModule : IHttpModule 
   public void Dispose() { 
   }
   public void Init(HttpApplication context) {
      context.BeginRequest += new EventHandler(OnContextBeginRequest);
   }
void OnContextBeginRequest(object sender, EventArgs e) {
HttpApplication app = (HttpApplication)sender;
app.Context.Request.ServerVariables.Set("foo", "bar");
   }
} 

C++ の場合、API はにていますが、IHttpContext::SetServerVariable メソッドを使用して CHttpModule を構築します。マネージ モジュールを構築している場合は、System.Web.IHttpHandler インターフェイスを使用して、調整する特定のコンテンツ用の HTTP 応答を生成します。

パフォーマンスの面では、C++ を使用することをお勧めします。これにより、不必要なマネージ コードの移行を行う必要がないからです。ただし、簡素化の面では、マネージ コードを構築すると、必要なコードは非常に少なく、コンパイルも不要で、%systemdrive%\inetpub\wwwroot\App_Code ディレクトリに保存するだけで済みます。

付録: ビット レート調整のスキーマ

ビット レート規則と再生時間規則を指定するためのスキーマを以下に示します。

<element name="mediaFormats"> 
      <collection addElement="add" clearElement="clear" removeElement="remove"> 
          <attribute name="fileExtension" required="true" isUniqueKey="true" type="string" /> 
          <element name="bitrateRules"> 
              <attribute name="enabled" type="bool" defaultValue="false" /> 
              <collection addElement="add">                                        <attribute name="searchPattern" type="string" /> 
                  <attribute name="searchPatternType" type="enum"> 
                      <enum name="hexValue" value="0" /> 
                          <enum name="stringValue" value="1" /> 
                  </attribute> 
                  <attribute name="searchRangeStart" type="int64" defaultValue="0" /> 
                  <attribute name="searchRangeEnd" type="int64" defaultValue="4096" /> 
                  <attribute name="searchFrom" type="enum" defaultValue="beginning"> 
                      <enum name="beginning" value="0" /> 
                          <enum name="end" value="1" /> 
                      <enum name="both" value="2" /> 
                  </attribute> 
                  <attribute name="dataOffset" type="uint" defaultValue="0" /> 
                  <attribute name="dataType" type="enum" required="true" > 
                      <enum name="uint16" value="0" /> 
                          <enum name="uint32" value="1" /> 
                      <enum name="float" value="2" /> 
                      <enum name="double" value="3" /> 
                  </attribute> 
                  <attribute name="endianness" type="enum" defaultValue="bigEndian"> 
                      <enum name="bigEndian" value="0" /> 
                          <enum name="littleEndian" value="1" /> 
                  </attribute> 
                  <attribute name="unitBitPerSecond" type="uint" defaultValue="1" />                    </collection> 
          </element> 
          <element name="durationRule"> 
              <attribute name="enabled" type="bool" defaultValue="false" /> 
              <element name="duration">                                    <attribute name="searchPattern" type="string" /> 
                  <attribute name="searchPatternType" type="enum"> 
                      <enum name="hexValue" value="0" /> 
                          <enum name="stringValue" value="1" /> 
                  </attribute> 
                  <attribute name="searchRangeStart" type="int64" defaultValue="0" /> 
                  <attribute name="searchRangeEnd" type="int64" defaultValue="4096" /> 
                  <attribute name="dataOffset" type="uint" defaultValue="0" /> 
                  <attribute name="searchFrom" type="enum" defaultValue="beginning"> 
                      <enum name="beginning" value="0" /> 
                          <enum name="end" value="1" /> 
                      <enum name="both" value="2" /> 
                  </attribute> 
                  <attribute name="dataType" type="enum" > 
                      <enum name="uint16" value="0" /> 
                          <enum name="uint32" value="1" /> 
                      <enum name="float" value="2" /> 
                      <enum name="double" value="3" /> 
                  </attribute> 
                  <attribute name="endianness" type="enum" defaultValue="bigEndian"> 
                      <enum name="bigEndian" value="0" /> 
                          <enum name="littleEndian" value="1" /> 
                  </attribute> 
              </element>                <element name="timeScale"> 
                  <attribute name="constScale" type="uint" defaultValue="0"/> 
                  <attribute name="searchPattern" type="string" /> 
                  <attribute name="searchPatternType" type="enum"> 
                      <enum name="hexValue" value="0" /> 
                          <enum name="stringValue" value="1" /> 
                  </attribute> 
                  <attribute name="searchRangeStart" type="int64" defaultValue="0" /> 
                  <attribute name="searchRangeEnd" type="int64" defaultValue="4096" /> 
                  <attribute name="searchFrom" type="enum" defaultValue="beginning"> 
                      <enum name="beginning" value="0" /> 
                          <enum name="end" value="1" /> 
                      <enum name="both" value="2" /> 
                  </attribute> 
                  <attribute name="dataOffset" type="uint" defaultValue="0" /> 
                  <attribute name="dataType" type="enum" > 
                      <enum name="uint16" value="0" /> 
                          <enum name="uint32" value="1" /> 
                      <enum name="float" value="2" /> 
                      <enum name="double" value="3" /> 
                  </attribute> 
                  <attribute name="endianness" type="enum" defaultValue="bigEndian"> 
                      <enum name="bigEndian" value="0" /> 
                          <enum name="littleEndian" value="1" /> 
                  </attribute>  
              </element>
          </element>
      </collection>
  </element>
  

関連コンテンツ

記事