DirectShow 编辑服务体系结构
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
[此 API 不受支持,将来可能会更改或不可用。]
下图显示了 DirectShow Editing Services (DES) 的体系结构。
- 时间线:将视频制作表示为源剪辑、过渡和效果的集合,组织成一组嵌套轨道。 有关详细信息,请参阅 时间线模型。
- XML 分析器:分析时间线并生成输出文件,或读取输入文件并生成时间线。 DES 支持基于 XML 的持久性格式。
- 呈现引擎:将时间线转换为可以呈现为流式媒体的窗体。 默认情况下,呈现引擎会生成 DirectShow 筛选器图, (请参阅下一部分) 。
- 媒体定位符:维护媒体元素位置的缓存。 尝试打开媒体元素失败时,DES 会根据成功打开的历史记录使用缓存来查找元素。
时间线是视频编辑项目的抽象说明。 它指定项目中使用的源剪辑、开始和停止时间、效果和切换等。 但是,时间线不呈现视频和音频流。 相反,呈现引擎会将时间线转换为筛选器图,用于预览或文件输出。 应用程序操作时间线而不是直接操作筛选器图,这会很麻烦且容易出错。
下表列出了典型视频编辑应用程序执行的main任务,以及支持每个任务的接口。 后面的部分更详细地介绍了这些任务和接口。
任务 | 接口 () |
---|---|
构造或修改时间线。 | IAMTimeline 和其他 IAMTimelineXXXX 接口 |
保存和加载项目文件。 | IXml2Dex |
预览项目或将其写入文件。 | IRenderEngine、 ISmartRenderEngine |
此外,应用程序可能执行以下部分或全部辅助任务。
任务 | 接口 () |
---|---|
获取有关媒体文件的信息。 (流数;每个 stream 的格式和持续时间。) | IMediaDet |
设置切换和效果的属性。 | IPropertySetter |
在呈现过程中发生错误时接收通知。 | IAMSetErrorLog、 IAMErrorLog |
检索海报框架。 | IMediaDet、 ISampleGrabber |
相关主题