[與此頁面相關聯的功能 Windows Media Format 11 SDK是舊版功能。 Source Reader 和 Sink Writer已取代它。 來源讀取器 和 接收寫入器 已針對 Windows 10 和 Windows 11 優化。 Microsoft強烈建議新程式碼盡可能使用 Source Reader 和 Sink Writer,而不是 Windows Media Format 11 SDK。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]
影片影像串流是包含一系列靜止影像的視訊。 影像可以在畫面內移動,而且每個影像都可以混合到下一個影像中。 視訊影像串流會使用 Windows Media Video 9 Image v2 編解碼器進行編碼。 輸出影片類似於 Windows Media Video 9 編解碼器產生的影片。
若要建立包含視訊影像串流的配置檔,請從列舉視訊編解碼器開始,如 從編解碼器取得串流設定資訊中所述。 搜尋支援WMMEDIASUBTYPE_WVP2子類型的編解碼器。
在寫入器對象上設定配置檔之後,請呼叫 IWMWriter::GetInputProps,以取得視訊影像輸入數據流的媒體屬性。 從媒體屬性物件取得媒體類型,方法是呼叫 IWMMediaProps::GetMediaType,並將子類型變更為 WMMEDIASUBTYPE_VIDEOIMAGE。 您應該將視訊寬度和高度設定為包含要新增至數據流之影像所需的最大尺寸。 然後使用修改的輸入類型呼叫 IWMMediaProps::SetMediaType。 現在您已準備好開始將範例傳送至寫入器物件。
每個範例都必須以 WMT_VIDEOIMAGE_SAMPLE2 結構開頭。 此外,範例可能包含位圖影像。 影像只會附加至第一個顯示影像的範例。 使用該影像的所有其他畫面只需要 結構中的資訊。 輸入點陣圖必須格式化為 RGB,每像素 24 位。
位圖檔案會儲存影像數據,讓影像的每個數據列的數據會以四個字節為單位來分隔。 (這稱為位圖的步幅。這會將每個視訊數據列的開頭強制到 DWORD 界限,讓複製更有效率。 如果影像數據列不會平均除以四個字節,則數據列會填補到下一個四個字節的最高倍數。 當您附加影像數據時,必須移除每個數據列數據結尾處存在的任何填補。
Windows Media Video 9 Image v2 編解碼器會一次維護最多兩個記憶體中的影像。 這些影像稱為上一個影像和目前的影像。 每個影像在 WMT_VIDEOIMAGE_SAMPLE2 結構中都有一組成員,決定影像在畫面中的呈現方式。 您可以將 WMT_VIDEOIMAGE_SAMPLE2 的 dwControlFlags 成員設定為 WMT_VIDEOIMAGE_SAMPLE_INPUT_FRAME,以新增圖像。 當您將輸入框架傳遞至編解碼器時,該影像會變成目前的影像。 在先前範例中,當前的影像通常會變成上一個影像,而先前的影像則會被捨棄。 您可以將 bKeepPrevImage 成員設定為 TRUE,將編解碼器設定為保留舊映像。 在此情況下,會捨棄先前範例中的目前影像。
視訊影像畫面的基本組合是由每個影像的兩個因素所決定:感興趣的區域和混合係數。 影像感興趣的區域是由原點、寬度和高度所定義。 感興趣區域描述的影像部分會填滿輸出畫面。 如果感興趣的區域大小與輸出框架不同,編解碼器會調整其大小。 影像的混合係數決定兩個影像的混合。 目前和先前影像的混合係數必須總計 1.0。 例如,如果 fCurrBlendCoef 設定為 0.5,且 fPrevBlendCoef 設定為 0.5,則輸出框架是由這兩個影像中感興趣的區域相等混合所組成。
藉由調整影像的感興趣區域,您即可建立平移和縮放效果。 混合係數可讓您在影像之間交叉淡出(溶解)。 除了這些效果之外,您還可以使用其中一個預先定義的轉換來建立更複雜的畫面。 本文件 影片轉換 一節會說明可用的轉換。 使用轉換時,您必須設定每個畫面。 若要這樣做,最簡單的方式是建立函式,以累加方式變更 WMT_VIDEOIMAGE_SAMPLE2 結構的成員,以取得完整效果。
如需設定變形值的詳細資訊,請參閱 WMT_VIDEOIMAGE_SAMPLE2。
注意 如果您想要在具有視訊影像數據流的檔案中包含音訊,則必須使用未壓縮的音訊輸入。 若要結合視訊影像串流與現有的壓縮音訊數據流,您必須解壓縮音訊,並以未壓縮的方式傳遞樣本。 如果您在撰寫影片影像數據流時將壓縮樣本傳遞至寫入器,則會發生錯誤,導致從影片中捨棄樣本。
此外,沒有音訊數據流的壓縮視訊影像檔案可以包含單一 ASF 封包中的數個非常小、高度壓縮的視訊畫面,這可能會導致舊版 Windows Media Player 的播放體驗不佳。 若要避免這個問題,最好的解決方案是將無訊息音訊串流插入檔案中,不過這也會增加檔案大小。
相關主題