0

我的winform中有一个面板,它在选择时播放视频,在播放视频时,我需要从中抓取帧,这是在单击按钮后,并且抓取的帧应该用文件名保存。我做了很多关于实现这一点的研究,

最初,我尝试为该特定面板提供屏幕截图功能并将其显示在图片框中。1.“copyfromscreen()” 2.使用系统消息。3.drawtobitmap() -control specific ,所有这些都没有那么好,我对结果不满意。

后来我意识到在 directshow Ibasicvideo.getcurrentimage() 中有一种方法可以从渲染视频中获取当前帧。我一直在互联网上搜索一个很好的工作示例,但没有成功,我真的需要帮助,

任何在单独的图片框中显示视频当前图像的解决方案都是可观的。提前致谢!!!

4

1 回答 1

1

使用此帖子中的链接查看VMR9Snapper示例:从网络摄像头 c# 中拍照

int hr = windowlessCtrl.GetCurrentImage(out currentImage);
DsError.ThrowExceptionForHR(hr);

if (currentImage != IntPtr.Zero)
{
  BitmapInfoHeader structure = new BitmapInfoHeader();
  Marshal.PtrToStructure(currentImage, structure);

  bmp = new Bitmap(structure.Width, structure.Height, (structure.BitCount / 8) * structure.Width, System.Drawing.Imaging.PixelFormat.Format32bppArgb, new IntPtr(currentImage.ToInt64() + 40));
  bmp.RotateFlip(RotateFlipType.RotateNoneFlipY);

  if (saveFileDialog.ShowDialog() == DialogResult.OK)
  {
    bmp.Save(saveFileDialog.FileName.ToString(), System.Drawing.Imaging.ImageFormat.Jpeg);
  }
}
于 2012-06-23T06:49:12.133 回答