为了执行此操作,我使用以下代码:
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/