получение определенного видеокадра

#c# #.net #directshow #directshow.net

#c# #.net #directshow #directshow.net

Вопрос:

Я просматривал здесь (переполнение стека), пытаясь найти стабильный способ получения изображений (массива пикселей) из видеофайлов в целом. В C # .NET я нашел:

http://www.codeproject.com/KB/graphics/ExtractVideoFrames.aspx

Это почти именно то, что я ищу, но я продолжаю получать эту ошибку:

 Could not load file or assembly 'Interop.DexterLib,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'
or one of its dependencies. An attempt was made to load
a program with an incorrect format.
  

Все компилируется нормально, но при запуске среде выполнения .net не нравится ‘Interop.DexterLib’, я дважды проверил, что он находится в корзине с exe, и проект связал их должным образом и отлично компилируется.

После некоторого поиска в Google ошибка, похоже, связана с x86 .dll и запуском их в 64-разрядных операционных системах. Чтобы свести на нет это, они рекомендовали сборку для x86, в VS2010 нет этой опции, поскольку они заменили ее на «Любой процессор»? В этом проблема? и есть ли какой-нибудь хороший способ это исправить?

Есть ли лучший способ получить видеокадры на C #, я посмотрел DirectShow.Сеть, хоть убейте, я не могу понять, что происходит в direct show. Мне еще предстоит найти такое простое решение, как это (если оно сработает).

Моя конечная цель — иметь возможность получать кадры из 2 видеофайлов в байтовых массивах … изменять их, а затем сохранять обратно в новое видео. Перво-наперво нужно загрузить видео в память.

Ответ №1:

Что-то не так с вашей Visual Studio. В моем 2010 есть эти опции: введите описание изображения здесь

Комментарии:

1. Это может быть проблемой, возможно, это связано с тем, что этот проект был «обновлен» с VS2008? У меня нигде нет «Целевой платформы:» на моей странице «Сборки». Под платформой единственный вариант, который я получаю, — «Активный (любой процессор)? (Я попытался сделать: preview.tinyurl.com/3rn3l5o ) Но это не имело никакого эффекта.

2. Запустите новый проект DLL в studio 2010, затем используйте его из вашего проекта.

3. После выполнения вышеуказанного шага я смог открыть «Configuration Manager …» из выпадающего списка в верхней части Visual Studio. Создал новую «Конфигурацию активного решения», а затем это позволило мне перейти на x86 или x64. Затем компилятор подслушал меня о том, что / unsafe не используется. После проверки «Разрешить небезопасный код» он компилируется, и теперь (вероятно, из-за того, что я выбрал плохие видеофайлы) я продолжаю получать сообщение об ошибке: видеопоток не найден. Спасибо за информацию.

Ответ №2:

Вы можете использовать corflags , чтобы сделать вашу 64-разрядную сборку совместимой с платформой x86

Описание исправлений

Ответ №3:

MediaDet из этой статьи является частью DirectShow. Просто используйте DirectShow.Проблемы с СЕТЬЮ и вашими связями исчезнут. Если вам нужно сохранить измененные кадры в другое видео, вам придется построить график DirectShow, использование только MediaDet вам не поможет.