delphi - 如何在 FM2 中从 TMediaPlayerControl 截屏?

标签 delphi firemonkey delphi-xe3

为了执行此操作,我使用以下代码:

procedure TForm4.Button2Click(Sender: TObject);
begin
  MediaPlayerControl1.MakeScreenshot.SaveToFile('c:\temp\e.bmp');
end;

当此代码运行时,位图保存到文件中;但它始终是黑色图像。 我正在努力解决这个问题。 请帮助我。

最佳答案

MakeScreenshot实际上是FMX.Types.TControl的一个方法以及这样的设计用于将底层窗口的内容绘制到位图。由于 DirectShow 使用 Video Renderer Filters在大多数情况下,使用 DirectDraw 和覆盖表面来渲染视频帧,MakeScreenshot 方法永远不会“看到”视频帧 - 因此是黑色位图。似乎 TMediaPlayer 中没有内置方式来访问视频帧,就像 SampleBufferToBitmap 中预见的那样。的方法TVideoCaptureDevice

关于delphi - 如何在 FM2 中从 TMediaPlayerControl 截屏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12890175/

相关文章:

德尔福7 : How to print a TChart?

delphi - 当其父级是面板时,ComboBox 无法正常工作

delphi - 如何将 Canvas 内的矩形复制到位图?

delphi - 如何在不注册类类型的情况下使用 Spring 的 DI 容器模拟接口(interface)?

c# - 如何从另一个 Windows 应用程序获取 Chrome 28 的当前 URL?

delphi - 如何在delphi中获取堆栈跟踪或至少错误行?

algorithm - 有什么简单的方法可以测试两个 PNG 是否相等?

IOS如何隐藏键盘顶部的顶部栏(带有完成按钮)?

delphi - dcef3 - Google map 欢迎始终显示

macos - TOpenDialog/NSOpenPanel 无法在沙盒 Delphi 应用程序中工作