如何在Winrt Store应用程序上实例化H264编码器



我希望能够使用H264视频编码的Media Foundation Imftransform编码视频帧。在Win32中很容易可用,您可以在其中使用mftenumex列举转换并找到H264编码器。

但是,在winrt(商店应用程序)上,我找不到一种实例化的方法。我注意到有一个cmsh264encodermft类,但是在cocreateinstance上使用CLSID没有定义。

with:

CoCreateInstance(CLSID_CMSH264EncoderMFT, nullptr, CLSCTX_INPROC_SERVER, __uuidof(IUnknown), (void **)&pUnknown);

clsid_cmsh264encodermft不适合winrt应用程序。

试验:

ComPtr<CMSH264EncoderMFT> encoder = Make<CMSH264EncoderMFT>();

它说CMSH264encoderMft类是不完整的,并说"使用未定义的'cmsh264encodermft'"。甚至都不知道制造的语法是正确的还是适当的...

有人对Winrt有这样的了解吗?

使用mfcreatesinkwriterfromurl首先创建文件编写者。然后,使用MFCreateMediatype创建ImfMediatype。设置其属性,其中之一将是输出格式:使用MF_MT_SUBTYPE GUID在媒体类型上使用SetGuid方法,并将MFVIDEOFORMAT_H264指定为参数。最后,在接收器作者上使用AddStream方法将媒体类型设置为其。

这里有一个示例(设置MF_MT_SUBTYPE时,您需要对其进行一些修改)。

您无法通过cmsh264encodermft实例化对象,因为它没有某些接口,这些接口必须在winrt中具有对象,例如iinspect - Provides functionality required for all Windows Runtime classes。cmsh264encodermft不是winrt类。您可以尝试通过函数mfcreatesinkwriterfrommediasink来解决您的任务 - 此函数使用接口Imfmediasink将对象采用。可以使用IMFMediaSink接口为对象编写代码,并从IMFTransform::ProcessOutput接收样品。我只是指出您的注意力 - 您无法在Windows Stortore代码对象中实例化,而不是Windows Runtime类。

问候,evgeny pereguda

相关内容

最新更新