0

さて、私はWindows Media Playerを利用して、ビデオウィンドウで.exeアプリケーションを実行したいと思います。アプリケーションは、たとえば、OS上で実行できるフルスクリーンのDirectXまたはOpenGLアプリケーションになります。

そのようなコーデックがあるかどうか知りたいので、自分のニーズに合わせて調整できますか?あるいは、非常に優れた調整機能を備えているが、(完全に)オープンソースではないものがあるのでしょうか。

(私はこの質問のためにこの質問をしています:https ://superuser.com/questions/533730/how-to-run-an-directx-or-opengl-application-as-desktop-background )

4

2 に答える 2

3

簡単な答え:いいえ。

複雑な答え:タイトルは意味がありません。なぜなら、そこではexeファイルを再生するのではなく、「あらゆる種類のAPI」を傍受して魔法のようにビデオに変換しようとするからです。

于 2013-01-14T06:32:14.437 に答える
3

これはおそらく、私が長い間読んだ中で最も奇妙な要求です。まず悪いニュース: いいえ、Windows Media Player のビデオ ウィンドウで ".exe" によって生成された出力を再生するためのオープン ソース コーデックはありません。「.exe」またはより正確には PE ファイル (Portable Executables) には、プログラム コード、つまり CPU によってプログラムとして解釈されるデータが含まれています。ただし、ビデオはプログラムではなく、画像データです。

ビデオコーデックは、ビデオデータをフォーマット間で変換するプログラムです。たとえば、圧縮された h.264 を表示に適した生の RGB データにデコードできます。ビデオ コーデックには一定の制約があります。たとえば、一連のフレームをデコードする必要があります。

ここで朗報です。技術的には、このようなコーデックを作成することは可能です。ただし、WMP では解釈できないため、WMP で .exe を開くことはできません。ただし、特定のビデオ エンコーディング形式を識別する 4 文字のコードである新しい FOURCC を導入し、その FOURCC に特別な目的のコードを登録することもできます。次に、その FOURCC を使用し、フレーム内のビデオ データの代わりにターゲット .exe への参照を含む特別な AVI ファイルを作成します。WMP がこのファイルを再生しようとすると、この「コーデック」が起動され、.exe が起動されます。起動したアプリケーションと「コーデック」間の通信プロトコルを確立する必要があります。オフスクリーン レンダリング サーフェスを作成する必要があります。プロセス間で共有される PBuffer DC、つまり「コーデック」がこれに最適です。PBuffer を作成し、.exe はその上に OpenGL コンテキストを作成します。次に、コーデックは PBuffer の内容をデコードされたビデオ フレームとして WMP に渡します。


そうです、そのようなハッキングを行うことができます。しかし、それは醜くて奇妙でしょう。

なぜ単純に WMP 用の視覚化プラグインを作成しないのですか? これらはビデオ ウィンドウでも実行されますが、そのような醜いハックは必要ありません。

于 2013-01-14T11:00:51.897 に答える