0

我正在尝试开发一个简单的应用程序,在其中加载视频文件,然后逐帧显示在我的屏幕上。

要加载视频文件,我使用以下代码:

FileVideoSource fileVideo = new FileVideoSource(myVideoSource);
fileVideo.NewFrame += fileVideo_NewFrame;
fileVideo.Start();

然后,在fileVideo_NewFrame,我像这样捕获每一帧:

 if (SynchronizationContext.Current != uiContext)
 {
        uiContext.Post(delegate { fileVideo_NewFrame(sender, eventArgs);}, null);
        return;
 }

 Bitmap bitmap = eventArgs.Frame;
 PictureBoxvideo.Image = new Bitmap(bitmap);

 bitmap.Dispose();

但我收到了System.ArgumentException(如此明确的......)。如果我停止调试,fileVideo我可以看到:

在此处输入图像描述

位图似乎没有填充这些值。

关于为什么视频加载不正常的任何想法?

感谢帮助!

4

1 回答 1

0

我可以用这里发布的解决方案来解决它。

FileVideoSource fileVideo = new FileVideoSource(dialog.FileName);
AsyncVideoSource asyncVideoSource = new AsyncVideoSource(fileVideo);
asyncVideoSource.NewFrame += asyncVideoSource_NewFrame;
asyncVideoSource.Start();

private void asyncVideoSource_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
    Image temp = PictureBoxvideo.Image;
    Bitmap bitmap = eventArgs.Frame;
    PictureBoxvideo.Image = new Bitmap(bitmap);
    if (temp!= null) temp.Dispose();
    bitmap.Dispose();
}
于 2013-08-07T15:31:50.200 回答