使用交錯式視訊
[與此頁面相關聯的功能 Windows Media Format 11 SDK是舊版功能。 來源讀取器和接收寫入器已取代它。 來源讀取器和接收寫入器已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用來源讀取器和接收寫入器,而不是Windows Media Format 11 SDK。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
視訊編碼有兩種基本類型:漸進式和交錯式。 在漸進式編碼中,每個畫面都是一個視訊畫面的編碼標記法。 在交錯編碼中,每個畫面都是視訊中所有偶數圖元列或奇數列的編碼標記法。 每個交錯框架稱為 欄位,因此有奇數位段甚至欄位。 交錯式顯示器 (類似電視) 一次轉譯一個欄位,交替欄位。 漸進式顯示器會一次轉譯畫面格。
Windows Media Video 9 進階設定檔編解碼器支援在壓縮資料流程中維護交錯。
使用交錯式視訊的時機
只有在內容顯示在交錯式裝置上時,編碼交錯式視訊才有用。 想要透過設定頂端方塊或其他) 裝置 (在電視 (上檢視的內容,可能需要交錯。 要以獨佔方式在電腦顯示器上檢視的內容不應編碼為交錯。
若要將交錯式視訊編碼為漸進式視訊,您必須設定輸入設定。 如需詳細資訊,請參閱 To Deinterlace Video。
欄位順序
大部分交錯式視訊的來源,例如視訊擷取卡,都會提供包含兩個欄位彼此交錯的視訊範例。 結果就像是完整的視訊畫面,不同之處在于奇數和偶數行會稍微移動一些時間。 沒有通用標準,因為交錯的視訊範例中第一次發生欄位。
您應該讓使用者在將交錯範例傳遞至應用程式時指定欄位順序。
編碼交錯視訊
若要使用交錯編碼,請執行下列步驟:
- 藉由呼叫 IWMStreamConfig2::AddDataUnitExtension 方法,在設定檔中設定視訊串流,以使用內容類型資料單位延伸模組。 內容類型延伸模組的範例延伸模組 GUID 是WM_SampleExtensionsGUID_ContentType。
- 在設定檔中設定資料流程,並使用設定檔一般設定寫入器。
- 將交錯範例傳遞至寫入器之前,請先呼叫 IWMWriterAdvanced2::SetInputSetting 方法,將g_wszInterlacedCoding輸入設定設為 TRUE。
- 針對您傳遞給寫入器的每個交錯範例,呼叫 INSSBuffer3::SetProperty 方法來設定內容類型。 內容類型值是下表中旗標的組合。
旗標 | 描述 |
---|---|
WM_CT_INTERLACED | 編碼交錯內容時,請一律設定此旗標。 如果您使用此旗標而不設定欄位順序旗標, (WM_CT_BOTTOM_FIELD_FIRST或WM_CT_TOP_FIELD_FIRST) 編解碼器會假設前一個欄位為第一個。 如果編解碼器使用錯誤的欄位順序,則不會影響影像品質,但編碼效率將會受到影響。 |
WM_CT_BOTTOM_FIELD_FIRST | 與WM_CT_INTERLACED旗標結合時,此旗標表示底部欄位 (範例中第二行開頭的欄位,) 第一次發生。 |
WM_CT_TOP_FIELD_FIRST | 與 WM_CT_INTERLACED 旗標結合時,此旗標表示頂端欄位 (範例中第一行開頭的欄位,) 第一次發生。 |
WM_CT_REPEAT_FIRST_FIELD | 指出範例中的第一個欄位應該在播放時重複。 此旗標是用於由電話化程式從電影建立的視訊。如果未將此旗標設定為欄位順序旗標,則會假設第一次發生頂端欄位。 |
注意
如果未設定WM_CT_INTERLACED旗標,則會假設範例包含漸進式視訊畫面。
解碼交錯視訊
解碼交錯視訊時,您必須使用IWMReaderAdvanced2::SetOutputSetting方法,將g_wszAllowInterlacedOutput設定為TRUE。 否則編解碼器會提供漸進式畫面。
內容類型資料單位延伸模組會在輸出範例上維護。 您應該將欄位方向傳遞至轉譯裝置,以確保正確播放。