共用方式為


使用交錯式視訊

[與此頁面相關聯的功能 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

欄位順序

大部分交錯式視訊的來源,例如視訊擷取卡,都會提供包含兩個欄位彼此交錯的視訊範例。 結果就像是完整的視訊畫面,不同之處在于奇數和偶數行會稍微移動一些時間。 沒有通用標準,因為交錯的視訊範例中第一次發生欄位。

您應該讓使用者在將交錯範例傳遞至應用程式時指定欄位順序。

編碼交錯視訊

若要使用交錯編碼,請執行下列步驟:

  1. 藉由呼叫 IWMStreamConfig2::AddDataUnitExtension 方法,在設定檔中設定視訊串流,以使用內容類型資料單位延伸模組。 內容類型延伸模組的範例延伸模組 GUID 是WM_SampleExtensionsGUID_ContentType。
  2. 在設定檔中設定資料流程,並使用設定檔一般設定寫入器。
  3. 將交錯範例傳遞至寫入器之前,請先呼叫 IWMWriterAdvanced2::SetInputSetting 方法,將g_wszInterlacedCoding輸入設定設為 TRUE
  4. 針對您傳遞給寫入器的每個交錯範例,呼叫 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。 否則編解碼器會提供漸進式畫面。

內容類型資料單位延伸模組會在輸出範例上維護。 您應該將欄位方向傳遞至轉譯裝置,以確保正確播放。

進階主題