輸入、資料流程和輸出

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

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

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

本檔中的「資料流程」一詞是指 ASF 檔案中的資料,而不是在寫入器物件處理輸入來源資料之前,先 (1) 輸入來源資料, (2) 讀取器物件解壓縮輸出資料。 ASF 資料流程包含來自寫入器物件上單一輸入的資料,雖然可以從相同的輸入建立多個資料流程。 資料流程具有從頭到尾的相同格式和壓縮設定。 簡單的 ASF 檔案有兩個數據流,一個用於音訊,另一個用於視訊。 更複雜的檔案可能有兩個音訊資料流程和數個視訊串流。 音訊串流可能具有相同的壓縮設定,但包含不同的內容,例如不同語言的朗讀。 視訊串流可能包含相同的內容,但有不同的壓縮設定。 寫入器物件將套用至設定檔中每個資料流程的媒體格式和壓縮設定。

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

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

此圖顯示輸入、資料流程和輸出之間的一般關聯性。

使用多個位元速率互斥時,就會發生更複雜的關聯性。 在此情況下,寫入器會處理單一輸入,並以數個位元速率編碼。 資料的每個編碼都會以個別資料流程的形式插入 ASF 檔案中。 在播放時,讀取器會根據可用的頻寬決定要解壓縮的資料流程。 然後讀取器會讀取選取的資料流程,並以單一輸出的形式傳遞未壓縮的樣本,如下圖所示。

此圖顯示使用多個位元速率互斥時,輸入、資料流程和輸出之間的關聯性。

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

圖表顯示使用自訂互斥時,輸入、資料流程和輸出之間的關聯性。

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

注意

輸入、資料流程和輸出都是由 Windows 媒體格式 SDK 的物件指派的數位。 資料流程具有資料流程編號,這是您在設定檔中定義的 1 個基底。 每個資料流程也會指派資料流程索引,以用於列舉設定檔中的資料流程。 這些數位不保證彼此一致。 也就是說,輸入數位 1 可能不會對應到資料流程編號 1、資料流程編號 1 可能未對應至資料流程索引 1 等等。

 

概念

互斥