共用方式為


輸入、串流和輸出

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

本檔中的「輸入」是應用程式使用適當 API 從來源傳遞至寫入器物件的任何數位媒體數據流(例如音訊或視訊)。 輸入必須以支援的格式傳遞。 支持數種標準 RGB 和 YUV 格式做為輸入,音訊編解碼器支援 PCM。 如果編解碼器原生不支援指定的輸入格式,寫入器物件會具現化音訊或視訊協助程序物件,該對象能夠將各種不同的格式轉換成編解碼器可以接受的格式。 針對音訊輸入,協助程式對象會視需要調整位深度、取樣率和通道數目。 針對視訊輸入,影片協助程序物件會執行色彩空間轉換和矩形大小調整。 在某些情況下,壓縮的音訊和視訊數據可以在輸入數據流中傳遞。 除了音訊和視訊以外,輸入可能是其他一些媒體類型,例如文字、腳本命令、靜止影像或任意檔案數據。

本檔中的「輸出」是指讀取器對象傳遞給應用程式以供轉譯的數據。 輸出相當於播放時的單一數據流。 如果您使用相互排除,則所有互斥數據流都會共用單一輸出。 一般而言,輸出數據的形式是未壓縮的音訊或視訊數據,不過它可以包含任何類型的數據。 本檔中的其他地方會列出支援的視訊輸出格式。

本檔中的「數據流」一詞是指 ASF 檔案中的數據,而不是寫入器對象處理輸入源數據之前的數據,以及讀取器物件解壓縮輸出數據之後的輸出數據。 ASF 數據流包含來自寫入器物件上單一輸入的數據,不過可以從相同的輸入建立多個數據流。 數據流具有從頭到尾的相同格式和壓縮設定。 簡單的 ASF 檔案有兩個數據流,一個用於音訊,一個用於視訊。 更複雜的檔案可能會有兩個音訊串流和數個視訊串流。 音訊串流可能具有相同的壓縮設定,但包含不同的內容,例如不同語言的旁白。 視訊串流可能包含相同的內容,但有不同的壓縮設定。 寫入器物件將套用至每個數據流的媒體格式和壓縮設定,都會在配置檔中指定。

輸入、數據流和輸出之間的關聯性可以是三種基本類型。 下列三個圖表說明關聯性。

在最基本的關聯性中,這是沒有相互排除的配置檔,每個輸入都會由寫入器處理,並插入 ASF 檔案作為單一數據流。 播放時,讀取器會讀取數據流,並以單一輸出的形式傳遞未壓縮的範例,如下圖所示。

圖表,其中顯示輸入、數據流和輸出之間的一般關聯性。

使用多個比特率互斥時,就會發生更複雜的關聯性。 在此情況下,寫入器會處理單一輸入,並以數個比特率編碼。 數據的每個編碼方式都會插入 ASF 檔案中做為個別數據流。 在播放時,讀取器會根據可用的頻寬決定要解壓縮的數據流。 讀取器接著會讀取選取的數據流,並以單一輸出的形式傳遞未壓縮的範例,如下圖所示。

圖表,顯示使用多個比特率互斥時,輸入、數據流和輸出之間的關聯性。

使用語言型或自定義互斥時,可能會發生第三種類型的關聯性。 在此關聯性中,讀取器會處理多個輸入,而且每個輸入都會以個別數據流的形式插入 ASF 檔案中。 在播放時,您的應用程式會根據您提供的邏輯手動選取要解壓縮的數據流。 讀取器接著會讀取選取的數據流,並以單一輸出的形式傳遞未壓縮的範例。 此程式可用於包含多種語言的配樂。 下圖說明此程式。

圖表,顯示使用自定義互斥時,輸入、數據流和輸出之間的關聯性。

先前所述的關聯性有一些變化。 例如,檔案可以包含這三個關聯性,或其中一或兩個關聯性。 您也可以壓縮某些輸入,在此情況下寫入器不會執行任何額外的壓縮。 讀取器也可以傳遞壓縮的樣本。 但是,當它這樣做時,您必須依數據流編號存取它們,而不是依輸出編號來存取它們。

注意

輸入、蒸汽和輸出都是由 Windows 媒體格式 SDK 的物件指派的數位。 串流有一個數據流編號,這是以 1 為基礎,您在配置檔中定義。 每個數據流也會指派數據流索引,以用於列舉配置檔中的數據流。 這些數位不保證彼此一致。 也就是說,輸入數位 1 可能不會對應數據流編號 1、數據流編號 1 可能不會對應至數據流索引 1 等等。

 

概念

互斥