문제

C # 응용 프로그램에서 DirectShowlib을 사용하여 비디오 재생을 허용합니다.불행히도 모든 시스템이 정당하지 않은 비디오 코덱을 제공하지 않으므로 설치의 일부로 FFDShow를 설치하지 않았습니다.불행히도 이것은 이미 여러 비디오 코덱 팩이 설치되거나 이전 버전을 사용하고 있기 때문에 특정 사용자에게는 작동하지 않는 것 같습니다.예를 들어, Windows 7은 더 이상 필요하지 않습니다.

libvlc로 재생할 때 앞으로도 지원되는 모든 비디오 코덱으로 플러그인 경로를 지정할 수 있지만 불행히도 DirectShowlib와 유사한 것을 찾을 수 없습니다.

는 필요한 코덱 라이브러리를 내 응용 프로그램의 일부로 포장하고 해당 폴더를 가리키거나 특정 폴더에 FFDShow를 설치하고 하나를 참조하십시오.

도움이 되었습니까?

해결책

하나의 가능한 접근법은 등록 무료 COM을 사용하는 것입니다. 특정 그룹의 하위 구성 요소 (예 : FFDShow 구성 요소가 포함 된 하위 디렉토리)를 사용하는 매니페스트 파일에서 sepcifies입니다. 해당 하위 디렉토리에서 DLL에 대한 매니페스트를 만들어야합니다. Main Gotcha는 이와 유사한 C #에서 객체를 인스턴스화해야합니다.

DsGuid MicrosoftDemux = new DsGuid("{AFB6C280-2C41-11D3-8A60-0000F81E0E4A}");
var demux = (IBaseFilter)Activator.CreateInstance(Type.GetTypeFromCLSID(MicrosoftDemux));
.

필터가 있으면 그래프에 추가하고 다른 인터페이스로 캐스팅 할 수 있습니다.

ffdshow 구성 요소에 대한 매니페스트 파일을 만들려면 regsvr42를 사용할 수 있습니다 (이 답변 : 등록 무료 com 에 대한 매니페스트 파일 생성

DirectShow 필터를 등록하지 않고 사용하려면 성공적으로 사용했습니다. 명심해야 할 한 가지는 COM 파일이 응용 프로그램 또는 하위 디렉토리와 동일한 디렉토리에 있어야합니다. 이웃 디렉토리에있는 그들을 가지고 있지 않을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top