다음을 통해 공유


MSDV 드라이버

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

MSDV는 DV 캠코더용 Microsoft WDM(Windows 드라이버 모델) 드라이버입니다. 디바이스가 연결되면 드라이버가 DirectShow 필터로 표시됩니다. 다음 두 가지 필터 범주로 열거됩니다.

  • CLSID_VideoInputDeviceCategory("비디오 캡처 원본")
  • AM_KSCATEGORY_RENDER("WDM 스트리밍 렌더링 디바이스")

필터의 식별 이름은 또는 지역화된 해당 이름입니다 Microsoft DV Camera and VCR. 일부 디바이스에서 Description 속성에는 일반 식별 이름 대신 사용할 수 있는 특정 모델에 대한 설명이 포함되어 있습니다. 자세한 내용은 캡처 디바이스 선택을 참조하세요.

MSDV에는 두 개의 출력 핀이 있습니다. 한 핀은 인터리브된 오디오 및 비디오 데이터가 포함된 DV 프레임을 제공합니다. 다른 핀은 오디오 없이 비디오 전용 프레임을 제공합니다. MSDV는 두 핀에서 한 번에 스트리밍할 수 없으므로 한 번에 하나의 출력 핀만 연결할 수 있습니다. DV 디바이스에서 비디오를 캡처하는 방법에 대한 자세한 내용은 DV를 파일로 캡처를 참조하세요.

디바이스에서 dv 데이터 캡처

대부분의 DV 캠코더에는 테이프에서 컴퓨터로 데이터를 전송할 수 있는 VTR(비디오 테이프 레코더) 하위 단위가 있습니다. 애플리케이션의 경우 테이프에서 캡처는 라이브 비디오 캡처와 동일하게 작동합니다. 유일한 차이점은 애플리케이션이 외부 테이프 전송을 제어해야 한다는 것입니다. 테이프를 시작 및 중지하고 되들이는 등입니다. 이를 위해 MSDV는 IAMExtDevice, IAMExtTransportIAMTimecodeReader 인터페이스를 노출합니다. VTR 제어에 대한 자세한 내용은 DV 캠코더 제어를 참조하세요.

컴퓨터에서 캠코더로 DV를 전송할 수도 있습니다. 그런 다음, 캠코더의 온보드 화면에서 비디오를 보거나 테이프에 녹화할 수 있습니다. 이 기능을 지원하기 위해 MSDV에는 인터리브된 DV 스트림을 받을 수 있는 입력 핀이 있습니다. 입력 핀이 연결되면 MSDV는 캡처 필터 대신 렌더러 필터 역할을 합니다. MSDV는 이 모드에서 검색을 지원하지 않습니다. DV를 디바이스로 보내는 방법에 대한 자세한 내용은 파일에서 테이프로 DV 전송을 참조하세요.

dv 데이터를 디바이스로 전송

디바이스가 양방향으로 동시에 스트리밍할 수 없으므로 입력 및 출력 핀을 동시에 연결할 수 없습니다.

많은 캠코더에서 VTR 모드와 카메라 모드 사이를 전환하면 디바이스가 꺼져 있습니다. 따라서 사용자가 모드를 전환하면 DirectShow에서 디바이스가 손실될 수 있습니다. 디바이스 제거 이벤트에 대한 자세한 내용은 디바이스 제거 알림을 참조하세요.

설명

MSDV 드라이버에서 지원되는 DV 형식에 대한 자세한 내용은 DV 비디오 하위 형식을 참조하세요.

MSDV를 사용하여 필터 그래프를 빌드하는 방법에 대한 몇 가지 팁:

  • IGraphBuilder::Render를 사용하여 MSDV에서 출력 핀을 렌더링할 수 없습니다. (필터 그래프 관리자는 출력 핀을 MSDV의 입력 핀에 연결하려고 시도합니다.) 대신 IGraphBuilder::Connect 또는 ICaptureGraphBuilder2::RenderStream을 사용합니다.

  • 필터 그래프에 MSDV가 포함된 경우 MSDV는 그래프에 대한 참조 클록을 제공해야 합니다. DirectX 8.0부터 필터 그래프 관리자는 자동으로 MSDV를 참조 클록으로 선택합니다. 이전 버전에서는 필터 그래프 관리자에서 IMediaFilter::SetSyncSource 메서드를 호출해야 합니다. 시계에 대한 자세한 내용은 DirectShow의 시간 및 시계를 참조하세요.

  • 디바이스에 따라 IAMExtDevice, IAMExtTransportIAMTimeCodeReader 의 일부 메서드는 HRESULT 값 대신 Windows 오류 코드를 반환할 수 있습니다. 가능한 오류 코드에는 다음이 포함됩니다.

    오류 코드 Description
    ERROR_TIMEOUT 외부 디바이스 명령의 시간이 초과되었습니다.
    ERROR_REQ_NOT_ACCEP 디바이스가 이 외부 디바이스 명령을 수락하지 않았습니다.
    ERROR_NOT_SUPPORTED 디바이스는 이 외부 디바이스 명령을 지원하지 않습니다.
    ERROR_REQUEST_ABORTED 외부 디바이스 명령이 중단되었습니다. 디바이스가 제거되었거나 버스 재설정이 발생했을 수 있습니다.

     

디바이스 정보

Windows Millennium Edition 및 Windows XP에서 DV 필터의 디바이스 모니커는 FriendlyName 속성 외에도 Description 속성을 지원합니다. 이 속성은 일반적으로 디바이스의 브랜드 이름을 포함하는 INF 파일에서 가져온 디바이스에 대한 설명을 반환합니다. 그러나 이 속성은 모든 디바이스 모델에 대해 지원되지 않습니다.

디바이스 모니커에 대한 자세한 내용은 시스템 디바이스 열거자 사용을 참조하세요.

클록 시간

MSDV 드라이버는 1394 데이터 패킷에 포함된 1394 버스 클록을 사용하여 클록을 파생합니다. 이러한 값을 사용하여 DV 미디어 샘플을 타임스탬프를 지정합니다. 이 원본 시계는 컴퓨터 시스템 시계가 아니므로 시간이 결국 컴퓨터 시스템 시계에서 표류합니다. 그러나 위에서 설명한 대로 기본적으로 필터 그래프 관리자는 MSDV를 그래프 참조 클록으로 선택합니다.

IAMDroppedFrames 인터페이스는 드라이버의 현재 삭제된 프레임 측정값을 보고합니다. 이 값은 지정된 시간에 삭제된 실제 프레임 수와 완벽하게 동기화되지 않을 수 있습니다. 프레임이 삭제되면 시스템의 균형이 조정되지 않음을 나타냅니다(데이터 프로덕션이 데이터 사용량을 초과). 예를 들어 사용자의 하드 디스크가 DV 캡처 속도를 지원할 만큼 빠르지 않을 수 있습니다.

DirectShow 필터

DirectShow의 디지털 비디오