共用方式為


通訊協定變換

[與此頁面相關聯的功能 Windows Media Format 11 SDK是舊版功能。 來源讀取器接收寫入器已取代它。 來源讀取器接收寫入器 已針對 Windows 10 和 Windows 11 優化。 Microsoft強烈建議新程式代碼盡可能使用 來源讀取器接收寫入器,而不是 Windows Media Format 11 SDK。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]

通訊協定變換是一個程式,可讓讀取器物件探索伺服器中可用的最佳串流通訊協定。 每當讀取器開啟包含 「mms」 配置的 URL 時,讀取器就會使用通訊協定變換。

讀取器支援數種通訊協定:

  • 即時串流通訊協定 (RTSP)
  • 超文字傳輸通訊協定 (HTTP)
  • Microsoft媒體伺服器 (MMS)

RTSP 和 MMS 通訊協定都採用兩種類型,一種是使用 UDP 作為基礎傳遞通訊協定,另一種則使用 TCP。

讀取器物件一律會使用 TCP 來播放控制命令,但它可以使用 TCP 或 UDP 來傳遞串流內容。 UDP 優先用於內容傳遞,因為它的頻寬額外負荷比 TCP 少。 TCP 通訊協定會透過使用「虛擬線路」來確保可靠的傳輸,但這樣做的成本表示 TCP 不適合數位媒體串流,其中有效使用頻寬對於偶爾遺失的封包更為重要。

當 URL 指定 「mms://」時,讀取器會嘗試使用下列通訊協議來傳遞數據,順序如下:

  1. RTSPU (使用 UDP 的 RTSP)
  2. RTSPT (使用 TCP 的 RTSP)
  3. MMSU (使用 UDP 的多媒體簡訊)
  4. MMST (使用 TCP 的多媒體簡訊)
  5. HTTP

HTTP 是以 TCP 為基礎的單向通訊協定,而且是 Web 伺服器所使用的通訊協定。 使用 HTTP 進行串流比使用 RTSP 的效率較低。 不過,大部分防火牆都設定為接受 HTTP 要求,而它們通常會拒絕其他串流通訊協定。

Microsoft Windows Server 2003 中的 Windows 媒體服務 9 系列將會拒絕來自 Windows 媒體格式 SDK 讀取器的任何 MMSU 或 MMST 要求,因為 RTSP 是慣用的串流通訊協定。 Windows 媒體服務 4.1 版和更早版本不支援 RTSP。 在此情況下,讀取器物件會回復為MMSU或 HTTP。

如果 URL 配置提供特定通訊協定,例如 RTSPU 的「rtspu://」或 HTTP 的「https://」,則不適用通訊協定變換。 如果 URL 配置為 「rtsp://」,讀取器會嘗試 RTSPU 和 RTSPT,但沒有其他配置。

讀取器開啟檔案之後,您可以藉由在讀取器上呼叫 IWMReaderAdvanced2::GetProtocolName 方法來查詢它所使用的通訊協定。 當內容正在串流或下載時,此方法會在內容完全快取后立即傳回名稱,GetProtocolName 方法會傳回字串 “Cache”。

若要取得讀取器支援的所有 Windows 媒體伺服器通訊協定名稱,請在讀取器上呼叫 IWMReaderNetworkConfig::GetSupportedProtocolName 方法。 您可以使用 IWMReaderNetworkConfig 介面,在讀取器的通訊協定變換清單中停用一或多個通訊協定。 例如,IWMReaderNetworkConfig::SetEnableTCP 方法會啟用或停用 TCP 型通訊協定,IWMReaderNetworkConfig::SetEnableUDP 啟用或停用 UDP 型通訊協定。 這些方法僅適用於通訊協定變換;如果 URL 配置包含特定通訊協定,則通訊協定仍然可以使用。 通常沒有理由停用通訊協定變換中使用的任何通訊協定;這樣做可能會降低效能。 不過,它可能有助於測試。