0

libvlcでdirectx apiを使用してfiremonkeyでビデオを再生しようとしています! 既に別の方法でビデオを再生しましたが、directx サーフェスでビデオを再生したいと考えています。

最初にこのリンクを見てください: http://forum.videolan.org/viewtopic.php?f=32&t=82618

誰かが、directx で libvlc を使用する方法についての Delphi コードを書き、そのコードがうまく機能しますが、このコードは純粋な directx コードです。このコードを firemonkey に統合したい! firemonkeyライブラリでどうすればそれを行うことができますか(Windowsのfiremonkeyでもdirectxライブラリを使用していることは知っていますが、firemonkeyライブラリ(インターフェース、クラス、オブジェクト)の命名と使用はdirectxとは大きく異なります!

今いる場所:

「Winapi.Direct3D9、Winapi.D3DX9、FMX.Context.DX9」ライブラリを使用して、この純粋な directx コードを firemonkey にほぼ統合します。

firemonkey コンテキストで IDirect3DDevice9 オブジェクトにアクセスできます!

var
   Device: IDirect3DDevice9;
begin
   Device := TCustomDirectXContext(TCustomForm3D(ParentForm).Context).Device;
   Device.CreateTexture(video_width, video_height, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, vlcVideoTexture, nil);
   Device.CreateTexture(video_width, video_height, 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, vlcMemoryTexture, nil);
end;

ここのコードは完全に firemonkey で動作しますが、このコード タイプの結果オブジェクトは IDirect3DTexture9 であることがわかります。このオブジェクトにはビデオのフレーム バッファが含まれています。このオブジェクトをいくつかのコントロールに firemonkey 形式でレンダリングするだけで済みます。

このバッファをfiremonkeyキャンバスに描画するにはどうすればよいですか?

私は良いデルフィ開発者のソリューションを待っています。

ありがとう

4

1 に答える 1

-2

ビデオを再生するための任意のウィンドウへの libvlc 要求ハンドルがあるため、LibVlc で direct3D を試すことは可能ではないと思います。有効なハンドルがあるため、任意のフォームでの再生は問題ありません。

于 2012-01-13T06:51:06.763 に答える