自 Creators Update 發行以來,Windows 已更新以支援透過現有Wi-Fi網路的無線投影。 它會在執行 Creators Update 的所有 Windows 裝置上實作,包括 Windows、Surface Hub、Surface Hub 2S 和 Xbox。
透過現有網路功能的 Windows 無線投影會利用 Miracast 原本所提供的功能,例如使用 Wi-Fi Direct 進行探索,以及使用 RTSP 傳輸視訊串流,但包含可透過現有網路連線識別接收者路由的個別機制。
我們建議 Miracast 接收製造商遵循規格,如 MS-MOUSE 中所定義,以及下一節中提供的指導方針,以實作類似的接收端功能。
透過現有Wi-Fi網路進行無線投影的必要層面
隨著時間MS_MICE規格成長,隨著新增其他功能而變得更複雜。 本檔的下一節旨在協助實作者瞭解在接收者上透過現有網路方法傳遞無線投影所需的最低基準功能。
只有少數變更需要對接收者進行,才能透過現有網路支援無線投影。 它們會細分如下:
修改接收者發出的資訊元素 (IE)
啟用 mDNS 回應程式以傳送適當的回應
在埠 7250 上實作 TCP 接聽程式,並處理 2 個特定訊息
修改接收者中的 IDE
您應該對接收者所做的第一組變更是實作 MS-MOUSE 規格第 2.2.3 節中定義的 Vendor 擴充屬性。接收者傳送的每個指標和探查回應都必須包含 Vendor Extension 屬性。
在廠商擴充屬性中,您需要定義兩個子屬性,才能啟用基本功能:
主機名稱屬性
功能屬性
此外,在 [功能屬性] 中,只需要設定兩個值:
A - MiracastOverInfrastructureSupport (1 位) :0 = 不支援,1 = 支援
C - 版本 (3 位) :此通訊協定的版本0x1
所有其他位都可以設定為 0
回應 mDNS 查詢
Miracast 接收者必須向接收者的本機 mDNS 實作註冊下列記錄。
與埠 7250 相關聯的 SRV 記錄
<實例名稱 > ._display._tcp.local
<其中實例名稱 > 是接收者的易記名稱
以及下列 TXT 機碼/值組
索引鍵:container_id
值:識別接收者的 GUID。
通訊協定處理
接收者必須執行兩個步驟:
接收者必須在 TCP 埠 7250 上開始接聽輸入連線。
接收者必須能夠接收和回應下一節中所定義的最小通訊協定訊息集。
雖然 MS-MOUSE 規格中定義了 6 則訊息,但接收者只需要接收並回應下列 2 則訊息,才能實作基本功能:
SOURCE_READY
STOP_PROJECTION
訊息 | 區段 | 描述 |
---|---|---|
SOURCE_READY 0x01 | [2.2.1] | 表示 Miracast 來源已準備好接受 RTSP 埠上的連線。 強制性 |
STOP_PROJECTION 0x02 | [2.2.2] | 表示投影的結尾。 強制性 |
SECURITY_HANDSHAKE 0x03 | [2.2.3] | 用來交換 DTLS 交握訊息,以起始與多媒體資料流程加密的連線。 選擇性 |
SESSION_REQUEST 0x04 | [2.2.4] | 指出 Miracast 來源想要使用指定的選項連線到接收。 選擇性 |
PIN_CHALLENGE 0x05 | [2.2.5] | 由 Miracast 來源傳送,以使用 Miracast 接收所顯示的 PIN 起始會話。 選擇性 |
PIN_RESPONSE 0x06 | [2.2.6] | 由 Miracast 接收,以回應從 Miracast 來源收到的PIN_CHALLENGE。 選擇性 |
雖然 MS-MOUSE 規格中定義了 7 個 TLV,但基本功能只需要下列 3 個 TLV:
FRIENDLY_NAME
RTSP_PORT
SOURCE_ID
TLV | 區段 | 描述 |
---|---|---|
FRIENDLY_NAME 0x00 | [2.2.7.1] | 指定 Miracast 來源的易記名稱。 強制性 |
RTSP_PORT 0x02 | [2.2.7.2] | 指定來源正在接聽 RTSP 連線的埠。 強制性 |
SOURCE_ID 0x03 | [2.2.7.3] | 指定 Source 的識別碼,此識別碼用於 Miracast 會話期間傳送的所有訊息。 強制性 |
SECURITY_TOKEN 0x04 | [2.2.7.4] | 包含 DTLS 交握訊息。 選擇性 |
SECURITY_OPTIONS 0x05 | [2.2.7.5] | 指定資料流程加密和/或 PIN 專案是否將用於會話。 選擇性 |
PIN_CHALLENGE 0x06 | [2.2.7.6] | 當 PIN 專案用來建立連線時,會包含 PIN 的 Salt 雜湊。 選擇性 |
PIN_RESPONSE_REASON 0x07 | [2.2.7.7] | 指定 PIN 回應是否指出連線成功。 選擇性 |