关于呈现引擎

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

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

本文介绍 DirectShow Editing Services (DES) 如何呈现视频编辑项目。

在 DES 中,项目表示为时间线。 时间线非常有用,因为它简化了视频编辑中最常见的任务,例如重新排列源剪辑和添加视频效果。 另一方面,DirectShow 流体系结构需要筛选器图。 因此,若要呈现项目,必须将时间线转换为筛选器图。 执行此操作的组件称为 呈现引擎。 DirectShow 提供两个呈现引擎:

  • 基本呈现引擎:生成提供未压缩输出的筛选器图。
  • 智能呈现引擎:生成提供压缩输出的筛选器图。

智能呈现引擎使用智能重新压缩来提高性能。 使用智能重压,仅当原始文件格式与最终输出格式不同时,才会重新压缩源文件。 如果格式匹配,则永远不会解压缩源。 智能重压仅支持视频压缩,不适用于音频压缩。

对于预览,请使用基本呈现引擎。 智能呈现引擎还可以预览,但效率较低,因为它必须解压缩压缩的流。 若要写入文件,请使用智能呈现引擎(如果需要智能重新压缩)。 否则,请使用基本呈现引擎。 智能重新压缩可以大大减少写入文件所需的时间。

重要

请勿使用智能呈现引擎读取或写入 Windows Media 文件。

 

重要

这两个呈现引擎都创建一个处理消息的不可见窗口。 创建呈现引擎的线程必须具有消息循环才能调度消息。 此外,在发布呈现引擎和筛选器图形管理器之前,该线程不得退出。 否则,应用程序可能会死锁。

 

构造筛选器图

筛选器图分为两个阶段生成。 在第一阶段,呈现引擎构造一个“前端”,这是一个部分筛选器图。 下图演示了一个典型的前端:

筛选器图前端

子系统包含呈现引擎自动组合的各种专用筛选器。 前端包含时间线中每个组的一个输出引脚。 如果使用基本呈现引擎,则输出引脚提供未压缩的数据;如果使用智能呈现引擎,则提供压缩数据。

第二步中,输出引脚连接到呈现筛选器。 对于预览,呈现筛选器是视频和音频呈现器。 对于文件写入,呈现筛选器是多路复用器 (复用器) 筛选器和文件编写器筛选器。

完成筛选器图

预览项目

将项目写入文件