设置音频捕获属性

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

音频捕获筛选器上的每个输入引脚都会公开 IAMAudioInputMixer 接口。 通过调用引脚上的 IAMAudioInputMixer::p ut_Enable 方法,使用此接口启用或禁用特定输入。 此外,使用此接口设置输入的属性,例如低音、高音和音量级别。 如果要一次捕获多个输入,可以通过筛选器本身上的 IAMAudioInputMixer 接口控制总体低音、高音和音量级别。

捕获的可用采样率和音频格式由驱动程序确定。 使用音频捕获筛选器输出引脚上的 IAMStreamConfig 接口枚举可用的采样率和格式,并设置所需的格式。 筛选器可以在下游连接到接受输出引脚媒体类型的任何筛选器。

音频捕获筛选器还公开 IAMBufferNegotiation 接口。 此接口可用于控制音频预览中的延迟量。 默认情况下,音频捕获筛选器使用半秒的缓冲区大小。 此缓冲区大小最适合捕获,但会导致半秒的预览延迟。 若要减少延迟,请在连接音频捕获筛选器的输出引脚之前调用 IAMBufferNegotiation::SuggestAllocatorProperties 方法。 此方法采用指向 ALLOCATOR_PROPERTIES 结构的指针。 使用 cbBuffer 成员指定缓冲区大小(以字节为单位)。 80 毫秒的缓冲区通常很安全,但 30 或 40 毫秒的缓冲区可能就足够了。 如果缓冲区太小,则声音质量会降低。