0

選択時にビデオを再生するwinformにパネルがあり、ビデオの再生中にボタンをクリックした後、そこからフレームを取得する必要があり、取得したフレームはファイル名で保存する必要があります。これを実装するための多くの研究、

最初は、その特定のパネルのスクリーンショット キャプチャ機能を試して、それを picurebox に表示していました。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 に答える