H264 비디오 인코딩을위한 Media Foundation IMFTransform을 사용하여 비디오 프레임을 인코딩 할 수있게하려고합니다. Win32에서는 MFTEnumEx를 사용하여 변환을 나열하고 H264 인코더를 쉽게 찾을 수 있습니다.WinRT Store App에 H264 인코더를 인스턴스화하는 방법
그러나 WinRT (Store Apps)에서는 인스턴스화 할 수있는 방법을 찾을 수 없습니다. 클래스 CMSH264EncoderMFT가 있지만 CoCreateInstance에 사용할 CLSID에 대한 정의가 없습니다.
으로 :
CoCreateInstance(CLSID_CMSH264EncoderMFT, nullptr, CLSCTX_INPROC_SERVER, __uuidof(IUnknown), (void **)&pUnknown);
CLSID_CMSH264EncoderMFT는 WinRT 응용 프로그램에 대한 정의되지 않습니다.
그리고 시도 :
ComPtr<CMSH264EncoderMFT> encoder = Make<CMSH264EncoderMFT>();
그것은 클래스 CMSH264EncoderMFT이 불완전하고 말한다 "정의되지 않은 형식 'CMSH264EncoderMFT'의 사용"말했다. Make 구문이 올바른지 또는 적합하지 않은지조차 모르겠다. ...
누구나 WinRT에서이 작업을 수행하는 방법에 대한 단서가 있습니까? Provides functionality required for all Windows Runtime classes
- 그것은 예를 IInspectable에 대한 WinRT에서 개체가 반드시 몇 가지 인터페이스를 가지고 있지 않기 때문에
안녕하세요, 올바른 조언을 드릴 수는 없지만 비슷한 문제가있는 동안 [Windows Store C++ 프로젝트에서 Free-COM DLL 사용] (https://blogs.msdn.microsoft)을 사용하기로 결정했습니다. .com/win8devsupport/2013/05/19/using-free-com-dll-in-windows-store-c-project /). 아이디어는 데스크톱 버전의 Windows 용 WindowsStore 응용 프로그램 코드에서 COM DLL을 호출 할 수 있다는 것입니다. Windows WinRT에서는 작동하지 않지만 이러한 Windows 버전의 장치는 매우 적습니다. 이 솔루션은 범용 앱 전용 데스크톱 용 솔루션이 아닙니다. –
안녕하세요 @ EvgenyPereguda, 감사합니다. COM을 무료로로드 할 수 있다는 것은 흥미로운 일입니다. 그러나 나는 모바일을 위해 이것을 정말로 필요로한다. 내가 모바일 용으로 인코딩 할 수있는 유일한 방법은 Sink Writer를 사용하는 것이지만 파일 형식의 오버 헤드 (mp4라고 함)를 제공합니다. IMFTransform :: ProcessOutput에서 샘플을 가져 와서 실제로 작업하고 싶습니다. ... –