2014-04-23 57 views
2

Media Foundation H264 Encoder MFT文档没有提到编码器的CLSID。其它编码器类ID,和H264解码器MFT类ID在Media Foundation H264编码器的CLSID在哪里?

\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

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

我想你知道MSDN主角,但记录:Tutorial: Encoding an MP4 File - Create the Transcode Profile

特别是,他们似乎想保留对编码器的选择控制,以自动使用硬件编码器适用:

Certified Hardware Encoder

如果认证硬件编码器是否存在,它通常是而不是媒体基础相关场景的收件箱系统编码器。

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

+0

谢谢罗马!这是有道理的。 我正尝试构建一个实时捕捉应用程序,用于从网络摄像头捕捉音频+视频,并且没有看到任何好的示例或教程。这是否修改你的答案? – SteveS

+0

我不知道好样品。我会拿上面的答案中提到的这个教程,并以某种方式将它合并到另一个视频/音频捕获示例中。我自己也没有碰过MF,我仍然在使用DirectShow进行制作。 –

1

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

相关问题