"http://directshownet.sourceforge.net/"의 DirectShot.Net 래퍼를 사용하여 많은 비디오 파일에서 프레임을 추출하려고합니다.DirectShow.Net 필터의 조합은 없지만 GSpot은 괜찮습니다.
DxScan 샘플 앱을 실행할 때마다. "중간 필터를 조합하여 연결을 찾을 수 없습니다."라는 메시지가 나타납니다. 이것은 WMV 파일, MP4 파일, AVI 파일에서 발생합니다. 샘플 앱에서 내가 가리키는 모든 미디어.
GSpot 코덱 도구를 사용하여 비디오를 열고 그래프를 렌더링하도록 요청하면 문제없이 문제가 해결됩니다. 따라서 기계는 확실히 컨텐트를 재생할 수 있습니다.
승 7 64 비트입니다. x64, x86 또는 Auto를 대상으로 동일한 오류가 발생합니다. 실행중인 Visual Studio를 관리자로 포함합니다.
아래의 Romain R에서 제안한 비디오 미디어 유형을 포함하는 올바른 핀을 찾으려면 샘플 코드를 수정했습니다.
내가 사용하고 있습니다 : MP4 파일의 경우
IEnumPins epins;
capFilter.EnumPins(out epins);
IntPtr fetched = Marshal.AllocCoTaskMem(4);
IPin[] pins = new IPin[1];
while (epins.Next(1, pins, fetched) == 0)
{
PinInfo pinfo;
pins[0].QueryPinInfo(out pinfo);
IEnumMediaTypes mtypes;
pins[0].EnumMediaTypes(out mtypes);
AMMediaType[] types = new AMMediaType[1];
while(mtypes.Next(1, types, new IntPtr()) == 0){
var majorType = types[0].majorType;
if (majorType == MediaType.Video)
{
//This is never reached
}
}
}
, 그것은 결코 위의 주석 라인을 타격하지입니다. 그러나 WMV 파일의 경우 이제 데모가 올바르게 실행됩니다.
아마도 적절한 MP4 파일 필터를 찾지 못했기 때문일 수 있습니다. Windows Media Player에서 내용이 제대로 재생 될지 여부는 불분명합니다.
가능성이 있습니까?
DShow.Net에서 비디오 핀을 감지하는 방법에 대한 예제가 있습니까? –
핀을 반복하면서 미디어 유형을 열거합니다. 열거 된 최초의 미디어 타입이'majortype == MEDIATYPE_Video'의 경우는 비디오 핀입니다. –
위 코드를 사용하면 MediaType이 majortype 인 핀을 반환하지 않는 것으로 보입니다.비디오 아마도 올바른 필터 (캡처 필터)의 핀을 테스트하고 있습니다. –