DirectShow 系统概述
[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media 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 还为某些文件格式提供本机压缩和解压缩筛选器。
相关主题