다음을 통해 공유


Type-1 DV 파일 캡처

[이 페이지와 연결된 기능, DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngineMedia Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11에 최적화되었습니다. 가능한 경우 새 코드가 DirectShow 대신 Media Foundation에서 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용한 기존 코드를 다시 작성하여 새 API를 사용하는 것을 추천합니다.]

형식 1 DV AVI 파일에는 단일 인터리브 스트림이 포함되어 있습니다. 미리 보는 동안 형식 1 파일을 캡처하려면 다음 다이어그램에 표시된 필터 그래프를 사용합니다.

미리 보기가 있는 type-1 캡처

이 그래프의 필터는 다음과 같습니다.

  • 스마트 티 필터는 인터리브된 DV를 캡처 스트림 및 미리 보기 스트림으로 분할합니다. 두 스트림 모두 동일한 인터리브 데이터를 포함합니다.
  • AVI Mux파일 기록기는 인터리브 스트림을 디스크에 씁니다.
  • DV 분할은 인터리브 스트림을 DV 비디오 스트림 및 오디오 스트림으로 분할합니다. 두 스트림 모두 미리 보기용으로 렌더링됩니다.
  • DV 비디오 디코더는 미리 보기용 DV 비디오 스트림을 디코딩합니다.

다음과 같이 이 그래프를 작성합니다.

ICaptureGraphBuilder2 *pBuilder;  // Capture graph builder.
IBaseFilter           *pDV;       // DV capture filter (MSDV)
IBaseFilter           *pAviMux    // Avi Mux filter.

// Initialize pDV (not shown). 
// Create and initialize the Capture Graph Builder (not shown).

// Create the file-writing section of the graph.
hr = pBuilder->SetOutputFileName(&MEDIASUBTYPE_Avi, 
    OLESTR("C:\\Example1.avi"), &pAviMux, 0);

// Render the capture stream.
hr = pBuilder->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Interleaved, 
    pDV, 0, pAviMux);

// Render the preview stream.
hr = pBuilder->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Interleaved,
    pDV, 0, 0);

// Remember to release all interfaces.
  1. ICaptureGraphBuilder2::SetOutputFileName을 호출하여 AVI Mux 필터를 파일 작성기 필터에 연결합니다.
  2. 핀 범주 PIN_CATEGORY_CAPTURE ICaptureGraphBuilder2::RenderStream을 호출하여 캡처 스트림을 렌더링합니다. 캡처 그래프 작성기에서 스마트 티 필터를 자동으로 삽입합니다.
  3. RenderStream을 다시 호출하지만 핀 범주가 PIN_CATEGORY_PREVIEW 미리 보기 스트림을 렌더링합니다. 비디오를 미리 보려면 이 통화를 건너뜁니다.

RenderStream에 대한 두 호출 모두 미디어 유형이 MEDIATYPE_Interleaved, 즉 인터리브된 DV 비디오를 의미합니다. 이 코드에서 캡처 그래프 작성기는 MSDV 캡처 필터를 제외하고 필요한 모든 필터를 자동으로 추가합니다.

DirectShow의 디지털 비디오