【发布时间】:2017-03-13 06:41:50
【问题描述】:
我希望能够使用 Media Foundation IMFTransform 对视频帧进行 H264 视频编码。这在 Win32 中很容易实现,您可以使用 MFTEnumEx 枚举转换并找到 H264 编码器。
但是,在 WinRT(应用商店)上,我找不到实例化的方法。 我注意到有一个类 CMSH264EncoderMFT,但没有定义用于 CoCreateInstance 的 CLSID。
与:
CoCreateInstance(CLSID_CMSH264EncoderMFT, nullptr, CLSCTX_INPROC_SERVER, __uuidof(IUnknown), (void **)&pUnknown);
未为 WinRT 应用定义 CLSID_CMSH264EncoderMFT。
并尝试过:
ComPtr<CMSH264EncoderMFT> encoder = Make<CMSH264EncoderMFT>();
它说 CMSH264EncoderMFT 类不完整,并说“使用未定义类型 'CMSH264EncoderMFT'”。甚至不知道 Make 的语法是否正确或合适......
有没有人知道如何为 WinRT 做到这一点?
【问题讨论】:
-
嗨,我不能给你正确的建议,但是当我面临类似的问题时,我决定使用下一个技巧Using Free-COM DLL in Windows Store C++ Project。想法是从 Windows 桌面版本的 WindowsStore 应用程序代码中可能调用一些 COM DLL。它不适用于 Windows WinRT,但具有此类 Windows 版本的设备数量非常少。此解决方案不适用于通用应用 - 仅适用于桌面。
-
嗨@EvgenyPereguda,谢谢。知道我可以免费加载 COM 很有趣。但我真的需要这个用于移动设备。我知道我可以为移动设备编码的唯一方法是使用 Sink Writer,但这给了我文件格式(比如 mp4)的开销。我真的很想从
IMFTransform::ProcessOutput中获取样本以使用...
标签: windows-runtime h.264 video-encoding wrl