我正在尝试使用C#捕获视频流的帧。当我运行代码时,我一直得到以下给定的错误。我知道SO上已经有很少的线程可以解决这个问题但是没有一个能解决我的问题。
未处理的类型' System.AccessViolationException'发生在System.Windows.Forms.dll其他信息:已尝试 读取或写入受保护的内存。这通常表明这一点 其他记忆已损坏。
我做了很多研究,但未能解决这个问题。 是视频文件还是Visual Studio本身的问题?
以下是我被困的代码:
try
{
if (openVideoStream(videoFile, out mediaDet, out mediaType))
{
return getVideoSize(mediaType);
}
}
finally
{
if (mediaDet != null)
Marshal.ReleaseComObject(mediaDet);
}
return Size.Empty;
}
private static Size getVideoSize(_AMMediaType mediaType)
{
//此行产生错误
**WinStructs.VIDEOINFOHEADER videoInfo = (WinStructs.VIDEOINFOHEADER)Marshal.PtrToStructure(mediaType.pbFormat, typeof(WinStructs.VIDEOINFOHEADER));**
return new Size(videoInfo.bmiHeader.biWidth, videoInfo.bmiHeader.biHeight);
}