我正在使用一个代码来捕捉我在CodeProject
中找到的视频中的帧代码在32位上运行良好,当我尝试在64位系统上运行时问题就出现了。
引发的异常是“AccessViolationException:尝试读取或写入受保护的内存。这通常表明其他内存已损坏”
我在32位和64位平台上进行了调试,发现了问题所在 -
mediaType = new AMMediaType();
mediaDet.get_StreamMediaType(mediaType);
videoInfo = (VideoInfoHeader)Marshal.PtrToStructure(mediaType.formatPtr, typeof(VideoInfoHeader));
在第二行之后,我查看了mediaType内容,它在64位超过32时完全不同,这导致下一行抛出异常(mediaType.formatPtr具有不同的值)
我假设问题是“IntPtr”类型,在2个平台上大小不同(4对8字节) 问题是我不知道如何克服这个问题。
任何形式的帮助都会很好, 提前致谢, 丽然
答案 0 :(得分:1)
找到解决方案 - 问题在于DirectShow DLL,FrameGrabber引用了旧版本的dll,我下载并用最新的DLL替换了引用并解决了问题。
感谢您的帖子,Liran。