私たちのプレーヤー、私たちの記録は適切ではありません

開発者としてのキャリアを通じて、プラットフォームに依存した開発から離れようとしたことを言わなければなりません。 Qt、WxWidgets、SDL、ACEなど、プラットフォームから抽象化するのに役立つオープンライブラリが用意されており、これを手伝ってくれました。 など ドライバーを作成する必要はありませんでしたが、かなり複雑なアプリケーションやシステムの場合、このアプローチとC ++および他の動的言語を組み合わせることで十分でした。



しかし、運命がクライアントを送ったため、 DirectShowからMedia Foundationに移行するという次の問題が発生しました。 両方のフレームワークは、さまざまなオーディオ/ビデオ、メディア形式、コーデック、ストリームなどで動作するように設計されています。 Media Foundationは徐々にDirectShowに取って代わり、唯一のメインであり続ける必要があります。 新しいWindows 8では、DirectShowを使用するメトロアプリケーションは機能しません。 実際、これがこの動きの理由でした。 約10年前、外出先でビデオをテクスチャに詰め込んだためにDirectShowに出会いましたが、気に入らなかったのですが、どうにかして対処しました。 そして、私の知る限り、これは確立されたよく研究されたフレームワークであり、VideoLAN、ffmpeg、phononなどの多くのプロジェクトでバックエンドとしてサポートされています。



そして今、ヤロスラヴナの実際の叫び。 なぜ、開発者がこのMedia Foundationに巻き込まれているのでしょうか? また、MetroアプリケーションのDirectShowとの互換性をキャンセルしたのはなぜですか? これを理解するために、Media Foundationは多くの時間を費やす必要があります。なぜなら、まともな例やドキュメントがないからです。 ダウンロード方法を見つける必要があるファイルにビデオをキャプチャする例を次に示します。 この例には、人間以外のひどい形式で書かれた1,000行以上のコードがあります。 そこからMedia Foundationと連携するスキルをどのように得るのですか? そして、カメラからキャプチャされたストリームを示す例のコードは次のとおりです。



HRESULT CaptureManager::SetDevice(HWND hwndPreview, IUnknown *pUnkVideo) { DestroyCaptureEngine(); m_pCallback = new (std::nothrow) CaptureEngineCB(m_hwndEvent); if (m_pCallback == NULL) { return E_OUTOFMEMORY; } m_hwndPreview = hwndPreview; //Create a D3D Manager HRESULT hr = CreateD3DManager(); IMFAttributes *pAttributes = NULL; if(SUCCEEDED(hr)) { hr = MFCreateAttributes(&pAttributes, 1); } if(SUCCEEDED(hr)) { hr = pAttributes->SetUnknown(MF_CAPTURE_ENGINE_D3D_MANAGER, g_pDXGIMan); } // Create the factory object for the capture engine. IMFCaptureEngineClassFactory *pFactory = NULL; if(SUCCEEDED(hr)) { hr = CoCreateInstance(CLSID_MFCaptureEngineClassFactory, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pFactory)); } if (SUCCEEDED(hr)) { // Create and initialize the capture engine. hr = pFactory->CreateInstance(CLSID_MFCaptureEngine, IID_PPV_ARGS(&m_pEngine)); if (SUCCEEDED(hr)) { hr = m_pEngine->Initialize(m_pCallback, pAttributes, NULL, pUnkVideo); } pFactory->Release(); pAttributes->Release(); } return hr; }
      
      





これは、デバイスがどのように割り当てられているかが「明確ではない」ほんの一部です。

21世紀の庭で、そのようなモンスターと一緒に暮らす方法は?



または、 ここにサンプルドキュメントがあります。 IAdvancedMediaCaptureInitializationSettingsインターフェイスについて、それから何を理解できますか? 「高度なメディアキャプチャの初期化設定を提供する」とは何ですか? クール、他に何? インターフェイスの名前は非常に有望です。 彼には方法がありますか? 人々は急いでおり、新しい軸の下でアプリケーションをリリースすることを急いでいますが、そのような開発ツールについていくつのリッジが壊れますか? また、DirectShowでフィルターを使用できたにもかかわらず、ドライバーを作成するだけでWebカメラをシミュレートすることが可能になりました。 90年代にそのようなフレームワークを見たとき、Windowsには代替手段がありませんでしたが、今では多すぎると思います。 開発者、開発者、開発者?



そして実際、結論として、この問題に経験のある人がいれば、オープンライブラリの無料のパンに甘やかしたのか、それがより便利ですぐにわかるのか、それとも大企業の大きな間違いなのかを教えてください。



All Articles