#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 вам не поможет.