IWMReaderNetworkConfig2
COM公式ドキュメント
IWMReaderNetworkConfig2 インターフェイスは、高度なネットワーク機能を提供します。IWMReaderNetworkConfig2 インターフェイスは、すべてのリーダーオブジェクトに対して存在します。
メソッド 13
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetEnableContentCaching メソッドは、コンテンツキャッシュが有効かどうかを照会します。コンテンツキャッシュが有効な場合、ストリーミングコンテンツをローカルにキャッシュできます。
| pfEnableContentCaching | BOOL* | out | コンテンツキャッシュが有効な場合に True となる Boolean 値へのポインター。 |
戻り値
このメソッドは HRESULT を返します。有効な値には次の表の値が含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| NULL ポインター引数です。 |
解説(Remarks)
このメソッドは、Windows Media Services を実行しているサーバーからストリーミングされているコンテンツにのみ適用されます。
SetEnableContentCaching メソッドは、コンテンツキャッシュを有効または無効にします。コンテンツキャッシュが有効な場合、ストリーミングされているコンテンツをローカルにキャッシュできます。
| fEnableContentCaching | BOOL | in | コンテンツキャッシュを有効にする場合は True となる Boolean 値。 |
戻り値
このメソッドは HRESULT を返します。有効な値には次の表の値が含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドは、Windows Media Services を実行しているサーバーからストリーミングされているコンテンツにのみ適用されます。
GetEnableFastCache メソッドは、Fast Cache ストリーミングが有効かどうかを照会します。Fast Cache ストリーミングを使用すると、帯域幅が許す場合に、ネットワークコンテンツを再生速度よりも速くストリーミングできます。
| pfEnableFastCache | BOOL* | out | Boolean 値を受け取る変数へのポインター。Fast Cache ストリーミングが有効な場合は True、そうでない場合は False になります。 |
戻り値
このメソッドは HRESULT を返します。有効な値には次の表の値が含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| NULL ポインター引数です。 |
解説(Remarks)
この機能を使用するには、コンテンツキャッシュも有効になっている必要があります。Fast Cache は、Windows Media Services を実行しているサーバーからストリーミングされているコンテンツにのみ適用されます。
SetEnableFastCache メソッドは、Fast Cache ストリーミングを有効または無効にします。Fast Cache ストリーミングを使用すると、帯域幅が許す場合に、ネットワークコンテンツを再生速度よりも速くストリーミングできます。
| fEnableFastCache | BOOL | in | Fast Cache ストリーミングを有効にするか無効にするかを指定します。値が True の場合は Fast Cache を有効にし、False の場合は無効にします。 |
戻り値
このメソッドは HRESULT を返します。有効な値には次の表の値が含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドを使用すると、サーバーも対応している場合に、リーダーが Fast Cache ストリーミングを使用できるようになります。この機能は、Windows Media Services を実行しているサーバーからコンテンツをストリーミングする場合にのみサポートされます。詳細については、クライアントからの Fast Cache ストリーミングの有効化を参照してください。
このメソッドで設定された Fast Cache の状態にかかわらず、ユーザーは URL の末尾に "?WMCache=1" を追加することでこの機能を有効にできます。ただし、IWMReaderNetworkconfig2::SetEnableContentCaching の呼び出しによってキャッシュが有効になっていない限り、Fast Cache はまったく有効化できません。
GetAcceleratedStreamingDuration メソッドは、現在の高速化ストリーミング期間を取得します。
| pcnsAccelDuration | ULONGLONG* | out | 高速化ストリーミング期間を 100 ナノ秒単位で受け取る QWORD へのポインター。これは、コンテンツの先頭で高速なレートでストリーミングされるデータ量です。既定値はバッファリング期間の 2 倍です。 |
戻り値
このメソッドは HRESULT を返します。有効な値には次の表の値が含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| NULL ポインター引数です。 |
解説(Remarks)
Fast Start を使用する場合、Windows Media Services を実行しているサーバーは、コンテンツの先頭の一部のデータを、コンテンツのビットレートで指定された速度よりも速いレートで送信します。
SetAcceleratedStreamingDuration メソッドは、高速化ストリーミング期間を設定します。この期間は、Windows Media Services の Fast Start 機能に適用されます。Fast Start を使用すると、長い初期バッファリングを待たずにコンテンツをすばやく再生できます。
| cnsAccelDuration | ULONGLONG | in | 高速化ストリーミング期間を 100 ナノ秒単位で指定します。最大値は 1,200,000,000 です。これは、コンテンツの先頭で高速なレートでストリーミングされるデータ量です。 |
戻り値
このメソッドは HRESULT を返します。有効な値には次の表の値が含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
Fast Start を使用する場合、Windows Media Services を実行しているサーバーは、コンテンツの先頭の一部のデータを、コンテンツのビットレートで指定された速度よりも速いレートで送信します。
GetAutoReconnectLimit メソッドは、予期しない切断が発生した場合にリーダーがサーバーへの再接続を試みる最大回数を取得します。
| pdwAutoReconnectLimit | DWORD* | out | 自動再接続の上限回数を格納する DWORD へのポインター。 |
戻り値
このメソッドは HRESULT を返します。有効な値には次の表の値が含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| NULL ポインター引数です。 |
SetAutoReconnectLimit メソッドは、予期しない切断が発生した場合にリーダーがサーバーへの再接続を試みる最大回数を設定します。
| dwAutoReconnectLimit | DWORD | in | リーダーオブジェクトが再接続を試みる最大回数を指定します。自動再接続を無効にするには、この値を 0 に設定します。 |
戻り値
このメソッドは HRESULT を返します。有効な値には次の表の値が含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドは、Fast Reconnect 機能を構成します。Fast Reconnect を使用すると、リーダーオブジェクトが接続を失った場合に自動的にサーバーへ再接続できます。可能な場合、再生はストリームの同じ位置から再開されます。その精度は、ソースファイルにインデックスが付けられているかどうかに依存する場合があります。ライブコンテンツの場合、ストリームに欠落が生じることがあります。
リーダーは、中断が予期しないものである場合にのみ再接続を試みます。たとえば、認証の失敗によってサーバーがアクセスを拒否した場合、クライアントの非アクティブによってサーバーが接続を終了した場合、サーバー管理者が接続を終了した場合などには、再接続を試みません。
このメソッドは、URL に WMReconnect 修飾子を設定することと同等です。例:
mms://MyServer/MyVideo.wmv?WMReconnect=5
GetEnableResends メソッドは、再送信が有効かどうかを確認します。
| pfEnableResends | BOOL* | out | 再送信が有効な場合に True に設定される Boolean 値へのポインター。 |
戻り値
このメソッドは HRESULT を返します。有効な値には次の表の値が含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| NULL ポインター引数です。 |
解説(Remarks)
この機能は、MMSU または RTSPU プロトコルを使用して Windows Media Services を実行しているサーバーからストリーミングされるコンテンツに対してのみ利用できます。
SetEnableResends メソッドは、再送信を有効または無効にします。
| fEnableResends | BOOL | in | 再送信を有効にする場合に True となる Boolean 値へのポインター。 |
戻り値
このメソッドは HRESULT を返します。有効な値には次の表の値が含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
この機能は、MMSU または RTSPU プロトコルを使用して Windows Media Services を実行しているサーバーからストリーミングされるコンテンツに対してのみ利用できます。
GetEnableThinning メソッドは、Intelligent Streaming が有効かどうかを確認します。Intelligent Streaming は、リーダーとストリーミングサーバーとの間の通信であり、利用可能な帯域幅に基づいてサーバーが送信するコンテンツを変更できるようにします。
| pfEnableThinning | BOOL* | out | Boolean 値を受け取る変数へのポインター。間引き (thinning) が有効な場合は TRUE、無効な場合は FALSE になります。 |
戻り値
このメソッドは HRESULT を返します。有効な値には次の表の値が含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| NULL ポインター引数です。 |
解説(Remarks)
Intelligent Streaming が有効な場合、リーダーは帯域幅が不足すると、次のいずれかの手法を使用してビットレートを下げるようサーバーに要求することで対応します。ある手法で問題が解決しない場合、リーダーは次の手法を試みます。
- ファイルが複数ビットレート (MBR) でエンコードされている場合、帯域幅不足を是正するためにリーダーが最初に行うのは、より低いビットレート版のストリームを要求することです。
- ファイルが MBR でない場合、または低いビットレートのストリームを使用しても帯域幅要件が十分に減らない場合、リーダーはビデオストリームを間引く (thin) ようサーバーに要求します。これは、サーバーがストリーミングするビデオのフレームレートを下げることを意味します。
- ビデオストリームの間引きでも帯域幅要件が十分に減らない場合、リーダーはビデオストリームの送信を停止するようサーバーに要求します。
この機能は、Windows Media Services を実行しているサーバーからストリーミングされるコンテンツにのみ適用されます。
SetEnableThinning メソッドは、Intelligent Streaming を有効または無効にします。Intelligent Streaming は、リーダーとストリーミングサーバーとの間の通信であり、利用可能な帯域幅に基づいてサーバーが送信するコンテンツを変更できるようにします。
| fEnableThinning | BOOL | in | 間引き (thinning) を有効にする場合は True、無効にする場合は False を指定します。 |
戻り値
このメソッドは HRESULT を返します。有効な値には次の表の値が含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
Intelligent Streaming が有効な場合、リーダーは帯域幅が不足すると、次のいずれかの手法を使用してビットレートを下げるようサーバーに要求することで対応します。ある手法で問題が解決しない場合、リーダーは次の手法を試みます。
- ファイルが複数ビットレート (MBR) でエンコードされている場合、帯域幅不足を是正するためにリーダーが最初に行うのは、より低いビットレート版のストリームを要求することです。
- ファイルが MBR でない場合、または低いビットレートのストリームを使用しても帯域幅要件が十分に減らない場合、リーダーはビデオストリームを間引く (thin) ようサーバーに要求します。これは、サーバーがストリーミングするビデオのフレームレートを下げることを意味します。
- ビデオストリームの間引きでも帯域幅要件が十分に減らない場合、リーダーはビデオストリームの送信を停止するようサーバーに要求します。
この機能は、Windows Media Services を実行しているサーバーからストリーミングされるコンテンツにのみ適用されます。
このメソッドは、URL に WMThinning 修飾子を指定することと同等です。修飾子 WMThinning=1 は間引きを有効にし、WMThinning=0 は無効にします。例:
mms://MyServer/MyVideo.wmv?WMThinning=1
WMThinning URL 修飾子を使用すると、このメソッドで指定された設定が上書きされます。
GetMaxNetPacketSize メソッドは、ネットワーク経由でストリーミングされるパケットの最大サイズを取得します。
| pdwMaxNetPacketSize | DWORD* | out | ネットワークパケットの最大サイズをバイト単位で格納する DWORD へのポインター。 |
戻り値
このメソッドは HRESULT を返します。有効な値には次の表の値が含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| NULL ポインター引数です。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWMReaderNetworkConfig2 "{D979A853-042B-4050-8387-C939DB22013F}" #usecom global IWMReaderNetworkConfig2 IID_IWMReaderNetworkConfig2 "{}" #comfunc global IWMReaderNetworkConfig2_GetEnableContentCaching 36 var #comfunc global IWMReaderNetworkConfig2_SetEnableContentCaching 37 int #comfunc global IWMReaderNetworkConfig2_GetEnableFastCache 38 var #comfunc global IWMReaderNetworkConfig2_SetEnableFastCache 39 int #comfunc global IWMReaderNetworkConfig2_GetAcceleratedStreamingDuration 40 var #comfunc global IWMReaderNetworkConfig2_SetAcceleratedStreamingDuration 41 int64 #comfunc global IWMReaderNetworkConfig2_GetAutoReconnectLimit 42 var #comfunc global IWMReaderNetworkConfig2_SetAutoReconnectLimit 43 int #comfunc global IWMReaderNetworkConfig2_GetEnableResends 44 var #comfunc global IWMReaderNetworkConfig2_SetEnableResends 45 int #comfunc global IWMReaderNetworkConfig2_GetEnableThinning 46 var #comfunc global IWMReaderNetworkConfig2_SetEnableThinning 47 int #comfunc global IWMReaderNetworkConfig2_GetMaxNetPacketSize 48 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IWMReaderNetworkConfig2 "{D979A853-042B-4050-8387-C939DB22013F}" #usecom global IWMReaderNetworkConfig2 IID_IWMReaderNetworkConfig2 "{}" #comfunc global IWMReaderNetworkConfig2_GetEnableContentCaching 36 sptr #comfunc global IWMReaderNetworkConfig2_SetEnableContentCaching 37 int #comfunc global IWMReaderNetworkConfig2_GetEnableFastCache 38 sptr #comfunc global IWMReaderNetworkConfig2_SetEnableFastCache 39 int #comfunc global IWMReaderNetworkConfig2_GetAcceleratedStreamingDuration 40 sptr #comfunc global IWMReaderNetworkConfig2_SetAcceleratedStreamingDuration 41 int64 #comfunc global IWMReaderNetworkConfig2_GetAutoReconnectLimit 42 sptr #comfunc global IWMReaderNetworkConfig2_SetAutoReconnectLimit 43 int #comfunc global IWMReaderNetworkConfig2_GetEnableResends 44 sptr #comfunc global IWMReaderNetworkConfig2_SetEnableResends 45 int #comfunc global IWMReaderNetworkConfig2_GetEnableThinning 46 sptr #comfunc global IWMReaderNetworkConfig2_SetEnableThinning 47 int #comfunc global IWMReaderNetworkConfig2_GetMaxNetPacketSize 48 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。