Encoding 媒体基础H264编码器的CLSID在哪里?

Encoding 媒体基础H264编码器的CLSID在哪里?,encoding,h.264,ms-media-foundation,Encoding,H.264,Ms Media Foundation,文档中没有提到编码器的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-4ED-9779-A4330516E35},但是我

文档中没有提到编码器的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-4ED-9779-A4330516E35},但是我找不到命名GUID,我希望它类似于:CLSID_CH264 MediaEnObject

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

因此:
为什么H264编码器MFT没有命名GUID?

< P>这看起来是故意的,因为MediaFoundation API建议你让API为你选择合适的编码器。您的角色是构建一个合适的概要文件,并让代码转换API使用请求的参数创建拓扑

我想你知道MSDN的潜在客户,但请注意:

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

如果有一个认证的硬件编码器,它将被用来代替媒体系统相关的收件箱系统编码器。


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

< P>这看起来是故意的,因为媒体基础API建议你让API为你选择合适的编码器。您的角色是构建一个合适的概要文件,并让代码转换API使用请求的参数创建拓扑

我想你知道MSDN的潜在客户,但请注意:

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

如果有一个认证的硬件编码器,它将被用来代替媒体系统相关的收件箱系统编码器。


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

在Windows SDK 8.1上,名称是CLSID_CMSH264EncoderMFT(wmcodedDSP.h)。

在Windows SDK 8.1上,名称是CLSID_CMSH264EncoderMFT(wmcodedDSP.h)。

谢谢!这是有道理的。我正在尝试构建一个实时捕获应用程序,在这个应用程序中,我从网络摄像头捕获音频和视频,但还没有看到任何好的示例或教程。这会改变你的答案吗?我不知道有好的样本。我将采用上面答案中提到的教程,并以某种方式将其与另一个视频/音频捕获示例合并。我自己还没有接触到MF,我仍然在使用DirectShow进行生产中的所有操作。谢谢Roman!这是有道理的。我正在尝试构建一个实时捕获应用程序,在这个应用程序中,我从网络摄像头捕获音频和视频,但还没有看到任何好的示例或教程。这会改变你的答案吗?我不知道有好的样本。我将采用上面答案中提到的教程,并以某种方式将其与另一个视频/音频捕获示例合并。我自己还没有接触MF,我仍然在生产中使用DirectShow。