Я использую класс grabber для захвата и обработки каждого кадра в видео. Класс можно найти здесь: http://www.codeproject.com/KB/graphics/FrameGrabber.aspxПереполнение стека на Marshal.PtrToStructure чтение файлов wmv
У меня проблемы с запуском. При загрузке файла он пытается маршалировать указатель видеоформата в VideoInfoHeader (я использую DirectShow.Net). Код, который делает это следующим образом:
videoInfo = (VideoInfoHeader)Marshal.PtrToStructure(mediaType.formatPtr, typeof(VideoInfoHeader));
Когда я запускаю это сразу вылетает из среды отладки, вероятно, с переполнением стека. Когда я перешагиваю, я вижу, что форматPtr всегда равен 93, хотя я не знаю, что из этого сделать, поскольку я довольно новичок в сортировке.
Я проверил, что видео отлично работает в Windows Media Player.
Это необходимо для определения размеров видео, а также размера заголовка, который необходимо пропустить до того, как кадры могут быть прочитаны.
Я запускаю Windows 7 x64.
Любая помощь по этому поводу была бы высоко оценена, я, должно быть, попробовал пятнадцать различных методов захвата кадров.
«возможно, с переполнением стека»: Возможно ли, что вы опубликуете полный след стека исключения? И как вы считаете, что проблема в переполнении стека? –
93? Это, безусловно, не похоже на действительный указатель памяти. –
Я могу показать трассировку стека только до того, как строка будет запущена, и это будет: vidanal.exe! User.DirectShow.FrameGrabber.FileName.set (string value = "XXX \\ test.wmv") Строка 35 + 0xf байт \t C# \t vidanal.exe! vidanal.Form1.button1_Click (объект отправитель = {Text = "Button1"}, System.EventArgs е = {X = 39 Y = 9 Кнопка = Left}) Строка 167 + 0x2c байт \t C# \t [External Code] \t \t vidanal.exe! vidanal.Program.Main() Строка 18 + 0x28 байт \t C# \t [External Code] –