DirectShow 系统概述

[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayerIMFMediaEngine媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

多媒体的挑战

使用多媒体带来了几个重大挑战:

  • 多媒体流包含大量数据,必须非常快速地处理这些数据。
  • 音频和视频必须同步,以便同时启动和停止,并按相同的速率播放。
  • 数据可能来自许多来源,包括本地文件、计算机网络、电视广播和摄像机。
  • 数据有多种格式,例如Audio-Video交错 (AVI) 、高级流式处理格式 (ASF) 、电影专家组 (MPEG) 和数字视频 (DV) 。
  • 程序员事先不知道最终用户的系统上将存在哪些硬件设备。

DirectShow 解决方案

DirectShow 旨在解决其中每个挑战。 其main设计目标是通过将应用程序与数据传输、硬件差异和同步的复杂性隔离开来简化在 Windows 平台上创建数字媒体应用程序的任务。

为了达到流式传输视频和音频所需的吞吐量,DirectShow 尽可能使用 Direct3D 和 DirectSound。 这些技术有效地将数据呈现给用户的声音和图形卡。 DirectShow 通过将媒体数据封装在带时间戳的示例中来同步播放。 为了处理各种可能的源、格式和硬件设备,DirectShow 使用模块化体系结构,其中应用程序混合和匹配称为 筛选器的不同软件组件。

DirectShow 提供支持基于 Windows 驱动程序模型 (WDM) 捕获和优化设备的筛选器,以及支持 Windows (VfW) 捕获卡的较旧视频的筛选器,以及为音频压缩管理器 (ACM) 和视频压缩管理器 (VCM) 接口编写的编解码器。

下图显示了应用程序、DirectShow 组件以及 DirectShow 支持的一些硬件和软件组件之间的关系。

高级体系结构

如此处所示,DirectShow 筛选器与各种设备通信和控制,包括本地文件系统、电视调谐器和视频捕获卡、VfW 编解码器、通过 DirectDraw 或 GDI) (的视频显示,以及通过 DirectSound) 卡 (声音。 因此,DirectShow 使应用程序免受这些设备的许多复杂性。 DirectShow 还为某些文件格式提供本机压缩和解压缩筛选器。

关于 DirectShow