DirectShow 编辑服务体系结构

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

[此 API 不受支持,将来可能会更改或不可用。]

下图显示了 DirectShow Editing Services (DES) 的体系结构。

directshow 编辑服务体系结构

  • 时间线:将视频制作表示为源剪辑、过渡和效果的集合,组织成一组嵌套轨道。 有关详细信息,请参阅 时间线模型
  • XML 分析器:分析时间线并生成输出文件,或读取输入文件并生成时间线。 DES 支持基于 XML 的持久性格式。
  • 呈现引擎:将时间线转换为可以呈现为流式媒体的窗体。 默认情况下,呈现引擎会生成 DirectShow 筛选器图, (请参阅下一部分) 。
  • 媒体定位符:维护媒体元素位置的缓存。 尝试打开媒体元素失败时,DES 会根据成功打开的历史记录使用缓存来查找元素。

时间线是视频编辑项目的抽象说明。 它指定项目中使用的源剪辑、开始和停止时间、效果和切换等。 但是,时间线不呈现视频和音频流。 相反,呈现引擎会将时间线转换为筛选器图,用于预览或文件输出。 应用程序操作时间线而不是直接操作筛选器图,这会很麻烦且容易出错。

下表列出了典型视频编辑应用程序执行的main任务,以及支持每个任务的接口。 后面的部分更详细地介绍了这些任务和接口。

任务 接口 ()
构造或修改时间线。 IAMTimeline 和其他 IAMTimelineXXXX 接口
保存和加载项目文件。 IXml2Dex
预览项目或将其写入文件。 IRenderEngineISmartRenderEngine

 

此外,应用程序可能执行以下部分或全部辅助任务。

任务 接口 ()
获取有关媒体文件的信息。 (流数;每个 stream 的格式和持续时间。) IMediaDet
设置切换和效果的属性。 IPropertySetter
在呈现过程中发生错误时接收通知。 IAMSetErrorLogIAMErrorLog
检索海报框架。 IMediaDetISampleGrabber

 

使用 DirectShow 编辑服务入门