AVI 复用器筛选器
[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
AVI 复用器筛选器接受多个输入流,并将其交错为 AVI 格式。 筛选器为每个输入流使用单独的输入引脚,为 AVI 流使用一个输出引脚。
视频捕获或创作应用程序可以使用此筛选器以 AVI 格式将文件保存到磁盘。 筛选器通常连接到 文件编写器 筛选器,但它可以连接到其输入引脚支持 IStream 和 IMemInputPin 接口的任何筛选器。
Label | 值 |
---|---|
筛选器接口 | IBaseFilter、 IConfigAviMux、 IConfigInterleaving、 IMediaSeeking、 IPersistMediaPropertyBag、ISpecifyPropertyPages |
输入引脚媒体类型 | 与旧样式 FOURCC 相对应的任何主要类型,或MEDIATYPE_AUXLine21Data。 (有关详细信息,请参阅 FOURCCMap Class.)
|
输入引脚接口 | IAMStreamControl、 IMemInputPin、 IPin、IPropertyBag、 IQualityControl |
输出引脚媒体类型 | MEDIATYPE_Stream、MEDIASUBTYPE_Avi |
输出引脚接口 | IPin、 IQualityControl |
筛选器 CLSID | CLSID_AviDest |
属性页 CLSID | CLSID_AviMuxProptyPage、CLSID_AviMuxProptyPage1 |
可执行文件 | qcap.dll |
优点 | MERIT_DO_NOT_USE |
筛选器类别 | CLSID_LegacyAmFilterCategory |
备注
以下说明描述了 AVI Mux 筛选器功能的各个方面。
锁定
创建 AVI Mux 筛选器时,它具有一个输入引脚。 连接每个输入引脚后,筛选器将创建新的输入引脚。
流属性
输入引脚支持 IPropertyBag 接口,用于在单个流上设置属性。 目前,定义了以下属性:
属性 | 说明 |
---|---|
name | 流的名称。 此属性以区块的形式 'strn' 写入。 |
如果筛选器正在运行或已暂停,则 IPropertyBag::Write 方法返回VFW_E_WRONG_STATE。
帧速率
如果上游筛选器未在 VIDEOINFOHEADER 结构的 AvgTimePerFrame 成员中指定帧速率,则 AVI 复用器将使用第一个视频帧上的时间戳。 AVI 文件格式不支持可变帧速率。
丢弃的帧数
AVI Mux 筛选器根据每个样本的媒体时间(如果可用)或样本的时间戳来计算丢弃的帧。 它为每个丢弃的帧写入一个零长度索引项。
IMediaSeeking
AVI Mux 筛选器实现 IMediaSeeking 接口,如下所示:
- GetCurrentPosition 方法返回多路复用的当前进度。 如果将文件转码 (比实时) 慢,则此值比 Filter Graph 管理器返回的值更准确。 有关详细信息,请参阅 GetCurrentPosition 参考页的“备注”部分。
- GetDuration 方法查询每个上游筛选器,并返回最长流的持续时间。 如果这些筛选器中的任何一个筛选器 (GetDuration 调用失败或不支持 IMediaSeeking) ,AVI Mux 将返回失败代码,并使用找到的最长持续时间填充 pDuration 参数。 但是,在这种情况下, pDuration 的值不一定是最长输入流的长度。
- AVI Mux 不实现 GetStopPosition、GetPositions、GetAvailable、GetRate 或 GetPreroll 方法;也不实现任何 Set* 方法进行查找。
AVI 2.0 文件格式扩展
DirectShow 目前支持以下 AVI 2.0 文件格式扩展:
- 增加的 AVI 文件大小 (大于 1 GB)
- 分层索引
有关详细信息,请参阅 OpenDML AVI M-JPEG 文件格式小组委员会发布的“OpenDML AVI 文件格式扩展”版本 1.02。
相关主题