2011-04-21 2 views
1

나는 비디오 파일에서 일반적으로 이미지 (픽셀 배열)를 얻는 안정적인 방법을 찾으려 고 여기 (스택 오버플로)를 둘러 보았습니다. 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가 포함 된 저장소에 있다는 것을 두 번 확인했다. 그리고 프로젝트는 제대로 링크되었고 잘 컴파일되었다.

일부 googleing 후 오류가 x86 .dlls 주위를 돌고 x64 비트 운영 체제에서 실행하는 것 같습니다. 이것을 무효화하기 위해 x86 용 건물을 권장했습니다. VS2010은 "임의의 CPU"로 대체되었으므로이 옵션이 없습니다. 이게 문제 야? 그것을 고치는 좋은 방법이 있습니까?

C#에서 비디오 프레임을 얻는 더 좋은 방법이 있습니까? DirectShow.Net을 보았습니다. 그리고 내 인생에서 직접 쇼에서 무슨 일이 벌어지고 있는지 이해할 수 없습니다. 나는 이것이 (작동한다면) 단순한 해결책을 아직 찾지 못했다.

최종 목표는 2 개의 비디오 파일에서 바이트 배열로 프레임을 가져 와서 수정 한 다음 새 비디오에 다시 저장할 수있게하는 것입니다. 먼저 비디오를 메모리에 저장합니다.

답변

0

뭔가 당신의 비주얼 스튜디오에 이상이 x86 플랫폼 사용하여 64 비트 어셈블리 호환되도록 corflags를 사용할 수 있습니다. 내 2010에는 다음과 같은 옵션이 있습니다. enter image description here

+0

이 프로젝트가 VS2008에서 "업그레이드"되었기 때문에 문제 일 수 있습니다. 내 "빌드"페이지에는 "플랫폼 대상 :"이 없습니다. 플랫폼에서 유일하게 얻을 수있는 옵션은 "Active (Any CPU)"입니까? (시도 : http://preview.tinyurl.com/3rn3l5o)하지만 아무런 영향이 없었습니다. – blackboots

+0

스튜디오 2010에서 새 DLL 프로젝트를 시작한 다음 사용하십시오 그것에서 당신 프로젝트. – Vnuk

+0

위의 단계를 완료 한 후, 나는 Visual Studio의 상단에있는 드롭 다운에서 "구성 관리자 ..."를 열 수있었습니다. "액티브 솔루션 구성"을 새로 만든 다음 x86 또는 x64로 변경하십시오. 컴파일러에서 사용되지 않는/안전하지 않은 버그가 있습니다. "안전하지 않은 코드 허용"을 확인한 후 컴파일하고 지금은 (아마 나쁜 비디오 파일을 선택하여) 오류가 계속 발생합니다. 비디오 스트림을 찾을 수 없습니다 . 정보 주셔서 감사합니다. – blackboots

0

이 기사의 MediaDet은 DirectShow의 일부입니다. DirectShow.NET을 사용하면 연결 문제가 사라집니다. 수정 된 프레임을 다른 비디오에 저장해야하는 경우 DirectShow 그래프를 작성해야하며 MediaDet을 사용하면 도움이되지 않습니다.