共用方式為


使用交錯式視訊

[與此頁面相關聯的功能 Windows Media Format 11 SDK是舊版功能。 來源讀取器接收寫入器都已取代它。 來源讀取器接收寫入器 已針對 Windows 10 和 Windows 11 優化。 Microsoft強烈建議新程式碼儘可能使用 Source ReaderSink Writer 取代 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_底部欄位優先 當與WM_CT_INTERLACED旗標結合時,此旗標表示下場(範例中從第二行開始的場)首先呈現。
WM_CT_TOP_FIELD_FIRST 與WM_CT_INTERLACED旗標結合時,此旗標表示最上層欄位(從範例中的第一行開始的欄位)會先發生。
WM_CT_REPEAT_FIRST_FIELD 表示範例中的第一個字段應該在播放時重複。 這個旗標用於由電傳底片工藝從電影中建立的影片。如果此旗標未與字段順序旗標一起設定,則會假設頂端字段會先出現。

注意

如果未設定WM_CT_INTERLACED旗標,則會假設範例包含漸進式視訊畫面。

解碼交錯式影片

解碼隔行視訊時,您必須使用 IWMReaderAdvanced2::SetOutputSetting 方法,將 g_wszAllowInterlacedOutput 設定為 TRUE。 否則編解碼器會傳遞漸進式畫面。

內容類型資料單元的延伸將在輸出樣本中保留。 您應該將欄位方向傳遞至轉譯裝置,以確保適當的播放。

進階主題