2

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

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

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

4

1 回答 1

2

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

于 2012-10-15T10:22:54.993 回答