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 多路复用器媒体 类型。
  • 配置第一个输出引脚时:如果创建输出引脚并查询 IMPEG2PIDMap,则 demux 将自行配置推送模式下的传输流。 如果查询 IMPEG2StreamIdMap 的引脚,则 demux 也会在推送模式下为程序流配置自身。 针对另一个接口的任何后续查询都失败,因为 demux 无法同时在两种模式下运行。

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

使用 MPEG-2 多路复用器