다음을 통해 공유


장치 모드

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

IEEE 1394 및 USB 캠코더는 카메라 모드와 VTR(비디오 테이프 레코더) 모드 간에 전환할 수 있습니다. IEEE 1394 캠코더가 모드를 전환하면 디바이스가 다시 설정되고 애플리케이션이 다시 열거해야 합니다. 애플리케이션이 모드를 프로그래밍 방식으로 전환할 수 있는 방법은 없습니다. 반면 USB 캠코더는 다시 설정하지 않고 카메라와 VTR 모드 간에 전환할 수 있으며 애플리케이션은 모드를 변경할 수 있습니다.

MSDV 드라이버

IEEE 1394 디바이스에서 현재 모드를 얻으려면 값이 ED_DEVCAP_DEVICE_TYPE IAMExtDevice::GetCapability 메서드를 호출합니다. 메서드가 ED_DEVTYPE_VCR 값을 반환하는 경우 디바이스는 VTR 모드에 있으며 일시 중지, 중지, 빠른 전달 및 되감기와 같은 함수가 있습니다. 그렇지 않으면 메서드가 ED_DEVTYPE_CAMERA 반환하면 디바이스가 카메라 모드에 있습니다. 다음 코드 예제에서는 디바이스 유형을 쿼리하는 방법을 보여줍니다.

if (MyDevCap.bHasDevice) 
{
    LONG lDeviceType = 0;
    MyDevCap.pDevice->GetCapability(ED_DEVCAP_DEVICE_TYPE, &lDeviceType, 0);

    if (lDeviceType == ED_DEVTYPE_VCR) 
    {
        // Device is a VTR. Enable all VTR functions.
    }
    else 
    {
        // Device is a camera. 
        // Enable record and record-pause; disable other functions.
    }
}

캠코더가 오프라인 상태가 되면 다음에 사용할 수 있게 되면 다시 쿼리해야 합니다. 필터 그래프 관리자는 디바이스가 제거될 때 EC_DEVICE_LOST 이벤트를 게시합니다.

UVC 드라이버

USB 비디오 디바이스는 다시 설정하지 않고 모드를 전환할 수 있으므로 이전 예제에 표시된 코드는 USB 디바이스에 대해 신뢰할 수 없습니다. 대신 ISelector 인터페이스를 사용하여 현재 모드를 가져옵니다. 디바이스에서 지원하는 경우 이 인터페이스를 사용하여 프로그래밍 방식으로 모드를 전환할 수도 있습니다.

DV 캠코더 제어