H264ビデオエンコーディングのMedia Foundation IMFTransformを使用してビデオフレームをエンコードできるようにします。これは、MFTEnumExを使用して変換を列挙し、H264エンコーダを見つけるWin32で簡単に実行できます。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のためにこれを行う方法の手がかりを持っていますか?
こんにちは、私はあなたに正しい助言を与えることはできませんが、同様の問題に直面している間、次のトリック[Windows Store C++プロジェクトでのFree-COM DLLの使用](https://blogs.msdn.microsoft .com/win8devsupport/2013/05/19/free-com-dll-in-windows-store-c-project /)アイデアはWindowsのデスクトップバージョンのWindowsストアアプリケーションのコードからいくつかのCOM DLLを呼び出すことが可能です。 Windows WinRTでは動作しませんが、このようなWindowsバージョンのデバイスは非常に少ないです。このソリューションは、ユニバーサルアプリケーション専用デスクトップ用のソリューションではありません。 –
こんにちは@EvgenyPereguda、ありがとうございます。私がCOMを自由にロードできることを知ることは面白いです。しかし、私は本当にモバイルのためにこれが必要です。私がモバイル用にエンコードできることを知っている唯一の方法はシンクライターですが、それは私にファイルフォーマットのオーバーヘッドを与えます(mp4と言う)。私は本当に 'IMFTransform :: ProcessOutput'のサンプルを... –