MPEG-2 Demux Run-Time 模式

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

MPEG-2 Demultiplexer(“demux”)可以在推送模式或拉取模式下运行。 在推送模式下,数据来自实时源,例如网络广播。 在拉取模式下,数据来自本地文件。

  • 拉取模式在 Windows XP 及更高版本中可用,仅适用于程序流。 在下层平台上,使用 MPEG-2 拆分器 筛选器。
  • 推送模式在所有平台上都可用,适用于程序流和传输流。

因此,demux 支持三种可能模式:请求模式下的程序流、推送模式下的程序流和推送模式下的传输流。 demux 确定在运行时要使用的模式。 当输入引脚连接或配置第一个输出引脚时,将确定模式,以先发生的情况:

  • 输入引脚连接时:在 Windows XP 及更高版本上,demux 会查询上游筛选器以获取 IAsyncReader 接口;如果上游筛选器公开该接口,则 demux 为请求模式下的程序流配置自身。 否则,demux 使用推送模式,媒体类型确定流类型(程序流或传输流)。 有关输入类型列表,请参阅 MPEG-2 Demultiplexer 媒体类型
  • 配置第一个输出引脚时:如果创建输出引脚并将其查询 IMPEG2PIDMap,则 demux 将自身配置为推送模式下的传输流。 如果查询 IMPEG2StreamIdMap的引脚,则 demux 会为程序流(也在推送模式下)配置自身。 对于其他接口的任何后续查询都失败,因为 demux 无法同时以两种模式运行。

在 demux 为特定模式配置自身后,它将保留在该模式下。 若要使用不同的模式,必须创建 demux 的新实例。

使用 MPEG-2 Demultiplexer