를 캡처하는 방법을 사용하여 프레임 Delphi/DSPack 를 표시하지 않고 그것에 TVideoWindow?

StackOverflow https://stackoverflow.com//questions/12680600

  •  12-12-2019
  •  | 
  •  

문제

DSpack 는 예제 코드 플레이 DirectShow 호환 비디오 장치를 캡처 비디오 프레임다.A TVideoWindow 에 연결 FilterGraph 비디오를 표시하(Firgure-1)입니다.을 제거하는 경우 TVideoWindow,다음 운영체제(윈도우)은 자동으로 가져와 최대 신호의 색상 모델을 표시합 영상에 별도의 창(그림 2).

가 사용하는 방법 DSPack 비디오를 캡처하려면 프레임을 사용하지 않고의 GUI 및 구성 요소를 표시하지 않고의 비디오?

DSPack 포럼은 일부에 대해 언급 NullRenderer 필터는 없지만 문서 또는 사용하는 방법을 보여 주는 예입니다.처럼 보이는 우리가 달성할 수 있는 경우에 우리는 수동으로 교체 비디오 렌더러 Null 직접 렌더링에서 GraphEdit(그림 3).

우리는 어떻게 실현하려는 결과에 표시된 그림-3 을 수행하여이 모든 조작을 내 코드는?DSPack 하지 않을 만드는 방법에 대해 설명합 Null Renderer.

Figure-1: The graph of the default example code

Figure-1

Figure-2: Shows what happens if I remove the TVideoWindow

Figure-2

Figure-3: Shows what happens if I replace Video Renderer with a 
         Null Renderer and manually connect them in the GraphEdit. 

Figure-3

이것은 내가 무슨 일을 했다(그래서 멀리)

다음을 호출합니다 ReassignSampleGrabberOutputfilterGraph.Play;

procedure TForm1.ReassignSampleGrabberOutput;
var
  nullRenderer : IBaseFilter;
  nullRendererPins: IEnumPins;
  nullRendererPin : IPin;
  graph:   IGraphBuilder;
begin

  nullRenderer := CreateComObject(CLSID_NullRenderer) as IBaseFilter;
  FilterGraph1.QueryInterface(IID_IGraphBuilder, graph);
  graph.AddFilter(nullRenderer, 'Null Renderer');

  nullRenderer.EnumPins(nullRendererPins);

  nullRendererPins.Reset;

  if nullRendererPins.Next(1, nullRendererPin, nil) = S_OK then
  begin
    //SampleGrabber1.OutPutPin.Disconnect;
    //SampleGrabber1.OutPutPin.Connect(nullRendererPin, nil);

    graph.Disconnect(SampleGrabber1.OutPutPin);
    graph.FindFilterByName('Video Renderer', filter);
    graph.RemoveFilter(filter);
    graph.Connect(SampleGrabber1.OutPutPin, nullRendererPin);

  end;
end;
도움이 되었습니까?

해결책

Null Renderer Filter 표준 필터/클래스입니다.코드에 당신화해야 합 그것은(CoCreateInstance)추가하는 그래프에 연결하고,그것의 입력 핀에 연결되지 않은 출력 핀의 샘플을 걷어입니다.

델파이/DSPack 그것은 다음과 같이해야한다:

Renderer := CreateComObject(CLSID_NullRenderer) as IBaseFilter;

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