【问题标题】:Where is the CLSID for Media Foundation H264 Encoder?Media Foundation H264 编码器的 CLSID 在哪里?
【发布时间】:2014-04-23 17:48:41
【问题描述】:

Media Foundation H264 Encoder MFT 文档没有提到编码器的 CLSID。其他编码器类 ID 和 H264 解码器 MFT 类 ID 定义在

\Program Files (x86)\Microsoft SDKs\7.1\Include\wmcodecdsp.h or
\Program Files (x86)\Windows Kits\8.x\Include\am\wmcodecdsp.h 

我在枚举设备时看到此编解码器,并且可以从枚举列表中获取 CLSID,即 {6ca50344-051a-4ded-9779-a43305165e35},但我找不到命名的 GUID,这是我所期望的类似于:CLSID_CH264MediaEncObject

在根据用户选择的编码器构建拓扑时,我想使用 GUID(而不是枚举名称)来做出决定。我可以定义_guid 这个,但它看起来很奇怪。

所以: 为什么 H264 编码器 MFT 没有命名 guid?

【问题讨论】:

    标签: encoding h.264 ms-media-foundation


    【解决方案1】:

    这看起来是故意的,因为 Media Foundation API 建议您让 API 为您选择合适的编码器。您的职责是构建合适的配置文件并让转码 API 使用请求的参数创建拓扑。

    我想你知道 MSDN 的线索,但记录在案:Tutorial: Encoding an MP4 File - Create the Transcode Profile

    特别是,他们似乎希望保留对编码器选择的控制权,以便在适用的情况下自动使用硬件编码器:

    Certified Hardware Encoder

    如果存在经过认证的硬件编码器,通常会在 Media Foundation 相关场景中使用它来代替收件箱系统编码器。

    DirectShow 中的压缩器问题之一是压缩器之间的通用列表和竞争。由于许多原因,应用程序宁愿硬编码特定的压缩器,而不是使用给定格式的最佳选择。在 MF 中,方法有所不同:配置文件定义了您最终希望输出的内容,然后 API 负责提供编码器。

    【讨论】:

    • 感谢罗曼!这有点道理。我正在尝试构建一个实时捕获应用程序,在其中从网络摄像头捕获音频+视频,但还没有看到任何好的示例或教程。这会修改你的答案吗?
    • 我不知道好的样品。我会采用上面答案中提到的本教程,并以某种方式将其与另一个视频/音频捕获示例合并。我自己还没有接触 MF,我仍在使用 DirectShow 进行生产中的一切。
    【解决方案2】:

    在 Windows SDK 8.1 上,名称为 CLSID_CMSH264EncoderMFT (wmcodecdsp.h)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-14
      • 1970-01-01
      • 2017-12-30
      相关资源
      最近更新 更多