Type-1 DV 파일 캡처
[이 페이지와 연결된 기능, DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11에 최적화되었습니다. 가능한 경우 새 코드가 DirectShow 대신 Media Foundation에서 MediaPlayer, IMFMediaEngine 및 오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용한 기존 코드를 다시 작성하여 새 API를 사용하는 것을 추천합니다.]
형식 1 DV AVI 파일에는 단일 인터리브 스트림이 포함되어 있습니다. 미리 보는 동안 형식 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.
- ICaptureGraphBuilder2::SetOutputFileName을 호출하여 AVI Mux 필터를 파일 작성기 필터에 연결합니다.
- 핀 범주 PIN_CATEGORY_CAPTURE ICaptureGraphBuilder2::RenderStream을 호출하여 캡처 스트림을 렌더링합니다. 캡처 그래프 작성기에서 스마트 티 필터를 자동으로 삽입합니다.
- RenderStream을 다시 호출하지만 핀 범주가 PIN_CATEGORY_PREVIEW 미리 보기 스트림을 렌더링합니다. 비디오를 미리 보려면 이 통화를 건너뜁니다.
RenderStream에 대한 두 호출 모두 미디어 유형이 MEDIATYPE_Interleaved, 즉 인터리브된 DV 비디오를 의미합니다. 이 코드에서 캡처 그래프 작성기는 MSDV 캡처 필터를 제외하고 필요한 모든 필터를 자동으로 추가합니다.
관련 항목