共用方式為


DirectShow 系統概觀

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

多媒體的挑戰

使用多媒體提供數個主要挑戰:

  • 多媒體串流包含大量數據,必須非常快速地處理。
  • 音訊和視訊必須同步處理,以便同時啟動和停止,並以相同的速率播放。
  • 數據可能來自許多來源,包括本機檔案、計算機網路、電視廣播和攝像機。
  • 數據以各種格式提供,例如 Audio-Video 交錯(AVI)、進階串流格式(ASF)、電影專家組(MPEG)和數字視頻(DV)。
  • 程序設計人員事先不知道終端用戶系統上會出現哪些硬體裝置。

DirectShow 解決方案

DirectShow 的設計訴求是解決上述每個挑戰。 其主要設計目標是藉由隔離應用程式與數據傳輸、硬體差異和同步處理的複雜性,簡化在 Windows 平臺上建立數位媒體應用程式的工作。

為了達到串流視訊和音訊所需的輸送量,DirectShow 盡可能使用 Direct3D 和 DirectSound。 這些技術會有效率地將數據轉譯給用戶的聲音和圖形卡。 DirectShow 會將媒體數據封裝在時間戳範例中,以同步處理播放。 為了處理可能的各種來源、格式和硬體裝置,DirectShow 會使用模組化架構,其中應用程式會混合和比對稱為 篩選器的不同軟體元件,

DirectShow 提供根據 Windows 驅動程式模型 (WDM) 支援擷取和微調裝置的篩選條件,以及支援舊版 Windows 視訊 (VfW) 擷取卡的篩選,以及針對音頻壓縮管理員 (ACM) 和視訊壓縮管理員 (VCM) 介面撰寫的編解碼器。

下圖顯示應用程式、DirectShow 元件,以及 DirectShow 支援的一些硬體和軟體元件之間的關聯性。

高層級架構

如這裡所述,DirectShow 篩選器會與各種裝置通訊和控制,包括本機文件系統、電視微調器和視訊擷取卡、VfW 編解碼器、視訊顯示(透過 DirectDraw 或 GDI),以及聲卡(透過 DirectSound)。 因此,DirectShow 會將應用程式與這些裝置的許多複雜度隔離。 DirectShow 也提供特定檔格式的原生壓縮和解壓縮篩選。

關於 DirectShow