使用視訊畫面

[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]

未壓縮的視訊是以快速連續播放的點陣圖序列,通常是每秒大約 30 個畫面格的速率。 由於大部分的視訊會以壓縮格式輸入 DirectShow 篩選圖表,因此影片串流通常會經過解碼器進行解壓縮。 許多解碼器會以 YUV 格式輸出資料,並在轉譯之前將影片硬體的最終轉換保留為 RGB。 如果解碼器使用 DirectX 視訊加速,影片硬體會執行額外的工作來解碼影像。 因此,資料到達視訊硬體之前,可能不會執行點陣圖的最終解壓縮。

但是,若要執行許多類型的視訊分析、處理或編輯,通常需要在轉譯或寫入檔案之前,以某種類型的 RGB 或 YUV 格式處理未壓縮的點陣圖。 此工作通常是根據 CTransformFilter 基類在轉換篩選內完成,特別是在 Transform 方法中。 這個方法會接收封裝視訊資料的 IMediaSample 物件的指標。 IMediaSample::GetPointer方法會傳回原始資料第一個位元組的指標。 對於未壓縮的畫面格,此資料是由篩選直接存取或修改的圖元所組成。 下列各節提供背景資訊,可協助您以這種方式有效地使用 DIB 資料。

注意

您也可以使用 GDI、GDI+、DirectDraw 或 Direct3D 函式來修改位,但這些技術已超出本文的範圍。

 

本節包含下列主題: