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?
答案 0 :(得分:2)
这看起来是有意的,因为Media Foundation API建议您让API为您选择合适的编码器。您的角色是构建合适的配置文件,并使用转码API来使用请求的参数创建拓扑。
我想你知道MSDN的引导,但是对于记录:Tutorial: Encoding an MP4 File - Create the Transcode Profile。
特别是,他们似乎希望保留对编码器选择的控制,以便在适用的情况下自动使用硬件编码器:
如果存在经过认证的硬件编码器,则通常会使用它来代替媒体基础相关方案的收件箱系统编码器。
DirectShow中压缩器的一个问题是压缩器之间的常见列表和竞争。由于许多原因,应用程序宁愿硬编码特定的压缩器,而不是使用给定格式的最佳选择。在MF中,方法是不同的:配置文件定义了您最终要在输出上获得的内容,然后API负责提供编码器。
答案 1 :(得分:2)
在Windows SDK 8.1上,名称为CLSID_CMSH264EncoderMFT(wmcodecdsp.h)。