【问题标题】:DirectShow video compressors enumeration issueDirectShow 视频压缩器枚举问题
【发布时间】:2022-11-22 05:01:41
【问题描述】:

我正在尝试使用以下代码找到可用的 DirectShow 视频编码器:

ICreateDevEnumPtr pEnm(CLSID_SystemDeviceEnum,NULL,CLSCTX_INPROC_SERVER);
// Video Compressor
if(pEnm!= NULL)
{
    IEnumMonikerPtr pEnumMoniker;
    hr = pEnm->CreateClassEnumerator(CLSID_VideoCompressorCategory,&pEnumMoniker,0);
    //......
}

但是,系统(Windows 10 x64)中安装的一些视频压缩器有不同的类别。 例如“Microsoft MPEG-2 编码器”和“VisioForge H264 编码器”具有类别 {083863F1-70DE-11d0-BD40-00A0C911CE86} - CLSID_LegacyAmFilterCategory

如果我在我的代码中使用 CLSID_LegacyAmFilterCategory 而不是 CLSID_VideoCompressorCategory,我会得到很多不相关的对象。

您能否建议枚举系统中安装的 DirectShow 视频压缩器的正确方法?

【问题讨论】:

    标签: directx directshow video-compression


    【解决方案1】:

    没有更好的方法,很可能您不需要任何其他方法。您需要此枚举以最终检查感兴趣的特定编解码器的可用性并将其实例化。很难想象你正在构建一个能够选择一些任意安装的编解码器并能够使用它的应用程序,你通常会处理你非常熟悉的压缩编解码器,尤其是。 H.264视频压缩编解码器,有一定的特定配置方法等。对于你熟悉的编解码器,你会希望有编解码器特定的实例化和配置方式,一种可能需要通过枚举发现,另一种可以直接通过CLSID实例化.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-06
      • 2011-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-02
      相关资源
      最近更新 更多