プロトコル ロールオーバー
[このページに関連付けられている機能である Windows Media Format 11 SDK は、レガシ機能です。 これは、ソース リーダーとシンク ライターによって置き換えられます。 ソース リーダーとシンク ライターは、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、Windows Media Format 11 SDK ではなくソース リーダーとシンク ライターを使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
プロトコル ロールオーバーは、リーダー オブジェクトがサーバーから使用可能な最適なストリーミング プロトコルを検出するプロセスです。 リーダーは、"mms" スキームを含む URL を開くたびにプロトコル ロールオーバーを使用します。
リーダーは、いくつかのプロトコルをサポートしています。
- リアルタイム ストリーミング プロトコル (RTSP)
- ハイパーテキスト転送プロトコル (HTTP)
- Microsoft Media Server (MMS)
RTSP プロトコルと MMS プロトコルはどちらも 2 つのフレーバーで提供され、1 つは基になる配信プロトコルとして UDP を使用し、もう 1 つは TCP を使用します。
リーダー オブジェクトは、再生制御コマンドに常に TCP を使用しますが、ストリーミングされたコンテンツの配信には TCP または UDP を使用できます。 UDP は、TCP よりも帯域幅のオーバーヘッドが少ないため、コンテンツ配信に適しています。 TCP プロトコルは、"仮想回線" を使用して信頼性の高いトランスポートを確保しますが、これを行うコストは、TCP がデジタル メディア ストリームに適していないという意味です。帯域幅の効率的な使用は、パケットが失われることがより重要になります。
URL で "mms://" が指定されている場合、リーダーは次の順序でデータ配信に次のプロトコルを使用しようとします。
- RTSPU (UDP を使用した RTSP)
- RTSPT (TCP を使用した RTSP)
- MMSU (UDP を使用した MMS)
- MMST (TCP を使用した MMS)
- HTTP
HTTP は TCP に基づく一方向プロトコルであり、Web サーバーで使用されるプロトコルです。 HTTP を使用したストリーミングは、RTSP を使用する方が効率的ではありません。 ただし、ほとんどのファイアウォールは HTTP 要求を受け入れるように構成されていますが、通常は他のストリーミング プロトコルを拒否します。
Microsoft Windows Server 2003 Windows Media サービス 9 シリーズでは、RTSP が優先ストリーミング プロトコルであるため、Windows Media Format SDK リーダーからの MMSU または MMST 要求は拒否されます。 バージョン 4.1 以前Windows Media サービス RTSP はサポートされていません。 この場合、リーダー オブジェクトは MMSU または HTTP にフォールバックします。
URL スキームで RTSPU の "rtspu://" や HTTP の "https://" などの特定のプロトコルが提供される場合、プロトコル ロールオーバーは適用されません。 URL スキームが "rtsp://" の場合、リーダーは RTSPU と RTSPT を試みますが、それ以外は試行しません。
リーダーがファイルを開いたら、リーダーで IWMReaderAdvanced2::GetProtocolName メソッドを呼び出すことで、使用しているプロトコルを照会できます。 コンテンツのストリーミングまたはダウンロード中、このメソッドはコンテンツが完全にキャッシュされるとすぐに名前を返し、 GetProtocolName メソッドは文字列 "Cache" を返します。
リーダーがサポートするすべての Windows Media サーバー プロトコルの名前を取得するには、リーダーの IWMReaderNetworkConfig::GetSupportedProtocolName メソッドを呼び出します。 IWMReaderNetworkConfig インターフェイスを使用して、リーダーのプロトコル ロールオーバー リストで 1 つ以上のプロトコルを無効にすることができます。 たとえば、 IWMReaderNetworkConfig::SetEnableTCP メソッドは TCP ベースのプロトコルを有効または無効にし、 IWMReaderNetworkConfig::SetEnableUDP は UDP ベースのプロトコルを有効または無効にします。 これらのメソッドは、プロトコル ロールオーバーにのみ適用されます。URL スキームに特定のプロトコルが含まれている場合、プロトコルは引き続き使用できます。 通常、プロトコル ロールオーバーで使用されるプロトコルのいずれかを無効にする理由はありません。これにより、パフォーマンスが低下する可能性があります。 ただし、テストに役立つ場合があります。