共用方式為


互斥

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

每個 ASF 檔案都包含一或多個數據流,每個數據流都包含數位媒體數據。 在正常情況下,每個數據流都會與單一輸出相關聯。 播放時,讀取器物件會提供每個輸出的範例。 因此,根據預設,ASF 檔案中的每個數據流都會由讀取機在播放時傳遞。

在某些情況下,您不希望每個數據流傳遞至用戶端。 例如,如果您建立具有五個音訊數據流的視訊檔案,每五種語言各有一個,則一次只想要傳遞其中一個。 相互排除是 Windows 媒體格式 SDK 的功能,可讓您指定一些互斥數據流,這些數據流全都等同於相同的輸出。

互斥定義於用來建立檔案的配置檔中。 您可以使用相互排除物件,在配置檔中設定相互排除。 您可以一次將一個數據流新增至互斥對象、設定類型,並將物件包含在配置檔中。

Windows 媒體格式 SDK 可辨識四種類型的互斥:

  • 比特率
  • 語言
  • 介紹
  • 未知

依比特率相互排除

位速率互斥是一種特殊的互斥類型,通常稱為多重比特率 (MBR) 相互排除。 MBR 互斥包含許多數據流,這些數據流全都來自相同的輸入,但會以不同的比特率編碼。 使用 MBR 播放檔案時,讀取器會根據可用的頻寬決定要使用的最佳數據流。

Windows 媒體格式 SDK 支援適用於音訊和視訊串流的 MBR。 SDK 也支援稱為多個視訊大小 MBR 的特殊 MBR 視訊類型。 這就像一般的 MBR 視訊,不同之處在於個別串流可以有不同的畫面大小。 例如,您可能有一些數據流,預設為 320 x 240 視訊大小,有些則具有較高的比特率和 640 x 480 視訊大小。

依語言互斥

以語言為基礎的互斥是設計來搭配使用數種語言錄製的內容(通常是音訊)。 以語言為基礎的互斥包含數個源自唯一輸入的數據流。 每個輸入都是相同的內容,但使用不同的語言。

若要讓語言互斥運作,閱讀應用程式必須包含邏輯以選取適當的語言。 如果您撰寫應用程式來播放 ASF 檔案,而且您想要支援以語言為基礎的互斥檔案,您應該先選取適當的數據流,再開始播放。

依簡報互斥

提供以簡報為基礎的互斥,以支持視訊串流,其中包含以不同外觀比例編碼的相同內容。 通常,當以信箱版本 (外觀比例 16:9) 提供視訊,以及格式化為電視螢幕時,會使用此選項(外觀比例為 4:3)。

要播放的簡報選擇最常由用戶決定。 如果您撰寫應用程式來播放 ASF 檔案,並想要支援具有以簡報為基礎的互斥檔案,則應該向使用者顯示選取簡報類型以供檢視的選項。

未知的互斥

您可以根據您想要的任何準則來建立相互排除。 所有自定義互斥類型都應該使用未知的類型來建立。

進階互斥功能

您也可以使用互斥將數據流指派給彼此互斥的群組。 例如,您可能想要使用多種語言的音訊串流,並將不同的視訊串流指派給每個語言。 您可以使用互斥來將每個音訊數據流與其對應的視訊串流分組,並讓所有群組互斥。

讀取器會自動選取所有互斥的數據流。 針對 MBR 和以語言為基礎的互斥以外的所有類型的互斥,讀取器一律會選取預設數據流,這是新增至配置檔中相互排除物件的第一個數據流。 針對 MBR,讀取器會選取最適合播放時可用頻寬的數據流。 如果您不想使用預設數據流,可以在開始讀取檔案之前,先將數據流選取項目設定為手動。

手動串流選取會套用至整個檔案。 當您在同一個檔案中具有不同類型的相互排除時,可能會發生困難。 例如,檔案可以同時包含以比特率為基礎的相互排除和自定義互斥。 若要在自定義互斥中選取預設值以外的數據流,您必須使用手動串流選取。 不過,如果您使用手動串流選取,讀取器將不會自動選取多個比特率數據流。 如果您打算在單一檔案中支持多種相互排除類型,則必須在應用程式中規劃此最終。 這通常表示建立您自己的數據流選取例程,以用於通常自動類型的相互排除。

ASF 檔案功能

使用互斥