【问题标题】:Delphi XE2: firemonkey playing video with libvlc?Delphi XE2:firemonkey 用 libvlc 播放视频?
【发布时间】:2011-11-18 19:06:33
【问题描述】:

我仍在尝试使用带有 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 完全不同!

我现在在哪里:

我几乎将这个纯 Directx 代码与“Winapi.Direct3D9、Winapi.D3DX9、FMX.Context.DX9”库一起使用到 firemonkey

我可以在 firemonkey Context 中访问 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;

here 中的代码完全在 firemonkey 中工作,但您会看到此代码类型的结果对象是 IDirect3DTexture9 ,该对象包含视频的帧缓冲区,我只需要将这个对象渲染到 firemonkey 形式的某些控件上。

如何将此缓冲区绘制到 firemonkey 画布?

我正在等待优秀的 delphi 开发人员解决方案。

谢谢

【问题讨论】:

    标签: delphi directx delphi-xe firemonkey libvlc


    【解决方案1】:

    我认为使用 LibVlc 尝试 direct3D 是不可能的,因为 libvlc 请求任何窗口的句柄来播放视频,以任何形式播放都可以,因为它们具有有效的句柄。

    【讨论】:

    • 我很久以前就成功在direct3d上渲染视频流了
    猜你喜欢
    • 2023-04-08
    • 2017-04-27
    • 2011-12-31
    • 2023-03-11
    • 2020-04-18
    • 1970-01-01
    • 2011-11-08
    • 2011-12-08
    • 1970-01-01
    相关资源
    最近更新 更多