互斥
[與此頁面相關聯的功能 Windows Media Format 11 SDK是舊版功能。 來源讀取器和接收寫入器已取代它。 來源讀取器和接收寫入器已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用來源讀取器和接收寫入器,而不是Windows 媒體格式 11 SDK。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。
每個 ASF 檔案都包含一或多個資料流程,每個資料流程都包含數位媒體資料。 在一般情況下,每個資料流程都會與單一輸出相關聯。 在播放時,讀取器物件會為每個輸出提供範例。 因此,根據預設,ASF 檔案中的每個資料流程都會由讀取器在播放時傳遞。
在某些情況下,您不希望每個資料流程傳遞至用戶端。 例如,如果您建立包含五個音訊資料流程的視訊檔案,則每五種語言各有一個,您一次只想要傳遞其中一種語言。 相互排除是 Windows 媒體格式 SDK 的功能,可讓您指定一些互斥資料流程,這些串流全都等於相同的輸出。
相互排除定義于用來建立檔案的設定檔中。 您可以使用相互排除物件,在設定檔中設定相互排除。 您可以一次新增一個資料流程至相互排除物件、設定類型,並在設定檔中包含 物件。
Windows 媒體格式 SDK 可辨識四種類型的互斥:
- 位元速率
- 語言
- 簡報
- Unknown
依位元速率互斥
位元速率相互排除是特殊的互斥類型,通常稱為多個位元速率 (MBR) 相互排除。 MBR 互斥包含許多資料流程,這些資料流程全都源自相同的輸入,但會以不同的位元速率編碼。 使用 MBR 播放檔案時,讀取器會根據可用的頻寬判斷要使用的最佳資料流程。
Windows 媒體格式 SDK 支援適用于音訊和視訊串流的 MBR。 SDK 也支援稱為多個視訊大小 MBR 的特殊 MBR 視訊類型。 這就像一般的 MBR 影片,不同之處在于個別串流可以有不同的畫面大小。 例如,您可能在預設的 320 x 240 視訊大小有一些資料流程,有些則具有較高的位元速率和 640 x 480 視訊大小。
依語言互斥
以語言為基礎的互斥是設計來搭配內容使用, (通常是以數種語言錄製的音訊) 。 以語言為基礎的相互排除包含數個源自唯一輸入的資料流程。 每個輸入都是相同的內容,但使用不同的語言。
若要讓語言互斥才能運作,閱讀應用程式必須包含邏輯以選取適當的語言。 如果您撰寫應用程式來播放 ASF 檔案,而且您想要支援具有語言型互斥的檔案,您應該先選取適當的資料流程,再開始播放。
依簡報互斥
提供以簡報為基礎的互斥,以支援視訊串流,其中包含以不同外觀比例編碼的相同內容。 一般而言,在信件箱版本 (外觀比例 16:9) 中提供視訊,以及針對電視螢幕格式化, (外觀比例為 4:3) 時,會使用此方式。
要播放的簡報選擇最常由使用者決定。 如果您撰寫應用程式來播放 ASF 檔案,並想要支援具有簡報型互斥的檔案,您應該向使用者顯示選取要檢視的簡報類型選項。
未知的互斥
您可以根據您想要的任何準則來建立相互排除。 所有自訂互斥類型都應該使用未知的類型來建立。
進階互斥功能
您也可以使用相互排除,將串流指派給彼此互斥的群組。 例如,您可能想要使用多種語言的音訊串流,並將不同的視訊串流指派給每個資料流程。 您可以使用互斥來將每個音訊資料流程與其對應的視訊串流分組,並讓所有群組互斥。
讀取器會自動選取所有互斥的資料流程。 針對 MBR 和以語言為基礎的互斥以外的所有類型的互斥,讀取器一律會選取預設資料流程,這是設定檔中新增至相互排除物件的第一個資料流程。 針對 MBR,讀取器會選取最適合播放時可用頻寬的資料流程。 如果您不想使用預設資料流程,可以在開始讀取檔案之前,先將資料流程選取範圍設定為手動。
手動資料流程選取會套用至整個檔案。 當您在相同檔案中具有不同類型的相互排除時,可能會發生困難。 例如,檔案可以同時包含位速率型互斥和自訂互斥。 若要在自訂互斥中選取預設值以外的資料流程,您必須使用手動串流選取。 不過,如果您使用手動資料流程選取,讀取器將不會自動選取多個位元速率資料流程。 如果您打算在單一檔案中支援多種類型的相互排除,則必須在應用程式中規劃此最終性。 這通常表示建立您自己的串流選取常式,以用於一般自動類型的相互排除。
相關主題