gpt4 book ai didi

c++ - 如何在FireMonkey(FMX、FM3)中显示流畅的视频?

转载 作者:可可西里 更新时间:2023-11-01 18:40:00 25 4
gpt4 key购买 nike

有没有人知道如何在 FireMonkey 应用程序中显示流畅的视频(即一系列位图),HD 或 3D?在 VCL 中,您可以从线程写入 Canvas ,这可以完美地工作,但这在 FMX 中不起作用。更糟糕的是,显然唯一可靠的方法是使用 TImage,这似乎是从主线程更新的(打开菜单和视频暂时卡住)。我能找到的所有 EMB 示例都要么从主线程写入 TImage,要么使用 Synchronize()。这些限制使 FMX 无法用于像样的视频显示,因此我正在寻找破解或可能绕过 FMX 的方法。我使用 XE5/C++,但欢迎任何建议。目标操作系统是 Windows 7+ 和 OS X。谢谢!

最佳答案

如何在您的窗体上放置一个 TPaintbox 来保存视频。在 OnPaint 方法中,您只需将下一帧绘制到 paintbox Canvas 上。现在在窗体上放置一个 TTimer,将间隔设置为所需的帧速率。在计时器的 OnTimer 事件中,只需编写 paintbox1.repaint

无论程序在做什么,这都应该为您提供常规帧。

为了更加安全,您可以在 OnTimer 事件中增加一个帧数。现在在 paintbox paint 方法中你知道要绘制哪一帧。这意味着如果其他东西调用了 paint 方法和计时器,您将不会跳帧 - 您最终只会为额外调用 OnPaint 重新绘制同一帧。

尽管我更进一步并使用覆盖 Canvas ,但我将其用于行进 Ant 选择,因此我可以独立绘制到选择和底层 Canvas 盒 Canvas ,从而无需在选择更改时重新绘制主 Canvas 。这需要调用 API,但我想你不需要它,除非你正在制作透明颜色的视频。

关于c++ - 如何在FireMonkey(FMX、FM3)中显示流畅的视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21784315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com