Media Foundation H264编码器的CLSID在哪里?

时间:2014-04-23 17:48:41

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

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(而不是枚举名称)来做出决策。我可以define_guid这个,但它看起来很奇怪。

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

2 个答案:

答案 0 :(得分:2)

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

我想你知道MSDN的引导,但是对于记录:Tutorial: Encoding an MP4 File - Create the Transcode Profile

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

  

Certified Hardware Encoder

     

如果存在经过认证的硬件编码器,则通常会使用它来代替媒体基础相关方案的收件箱系统编码器。

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

答案 1 :(得分:2)

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