다음을 통해 공유


Windows 미디어 파일에 비디오 캡처

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

비디오를 캡처하고 WMV(Windows Media Video) 파일에 인코딩하려면 다음 다이어그램과 같이 캡처 핀을 WM ASF 기록기 필터에 연결합니다.

Windows 미디어 캡처 그래프

이 그래프를 빌드하는 가장 쉬운 방법은 ICaptureGraphBuilder2::SetOutputFileName 메서드에서 MEDIASUBTYPE_Asf 지정하는 것입니다.

IBaseFilter* pASFWriter = 0;
hr = pBuild->SetOutputFileName(
    &MEDIASUBTYPE_Asf,   // Create a Windows Media file.
    L"C:\\VidCap.wmv",   // File name.
    &pASFWriter,         // Receives a pointer to the filter.
    NULL);  // Receives an IFileSinkFilter interface pointer (optional).

MEDIASUBTYPE_Asf 값은 캡처 그래프 작성기에 WM ASF 기록기 필터를 파일 싱크로 사용하도록 지시합니다. 캡처 그래프 작성기에서 필터를 만들고 그래프에 추가하고 IFileSinkFilter::SetFileName 을 호출하여 출력 파일의 이름을 설정합니다. 필터에 대한 포인터를 나가는 매개 변수()로 반환합니다.

pASFWriter

이전 예제에서).

WM ASF 기록기에서 IConfigAsfWriter 인터페이스를 사용하여 Windows 미디어 프로필을 설정합니다. WM ASF 기록기에서 핀을 연결하기 전에 이 작업을 수행해야 합니다.

IConfigAsfWriter *pConfig = 0;
hr = pASFWriter->QueryInterface(IID_IConfigAsfWriter, (void**)&pConfig);
if (SUCCEEDED(hr))
{
     // Configure the ASF Writer filter.
    pConfig->Release();
}

프로필 설정에 대한 자세한 내용은 DirectShow에서 ASF 파일 만들기를 참조하세요.

ICaptureGraphBuilder2::RenderStream을 호출하여 캡처 필터를 ASF 기록기에 연결합니다.

hr = pBuild->RenderStream(
    &PIN_CATEGORY_CAPTURE,   // Capture pin.
    &MEDIATYPE_Video,        // Video. Use MEDIATYPE_Audio for audio.
    pCap,                    // Pointer to the capture filter. 
    0, 
    pASFWriter);             // Pointer to the sink filter (ASF Writer).

WM ASF 기록기 필터의 각 입력 핀은 Windows Media 프로필의 스트림에 해당합니다. 파일 콘텐츠가 프로필과 일치할 수 있도록 모든 핀을 연결해야 합니다.

파일에 비디오 캡처