DVApp 샘플
[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine 및 오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
Description
DV(디지털 비디오) 캡처 애플리케이션.
이 샘플에서는 DV 캠코더를 제어하기 위한 다양한 유형의 필터 그래프를 빌드하는 방법을 보여 줍니다. 또한 DV 캠코더를 사용하여 캡처, 미리 보기, 전송 및 디바이스 제어를 수행하는 방법도 보여 있습니다.
사용량
DVApp 애플리케이션은 다음 모드를 지원합니다.
- 미리 보기: DV를 캠코더에서 비디오 창으로 렌더링합니다.
- DV to type-1 파일: camcorder에서 type-1 DV 파일로 DV 데이터를 캡처합니다.
- DV에 형식 1 파일: 형식 1 DV 파일에서 캠코더로 데이터를 전송합니다.
- DV to type-2 파일: camcorder에서 type-2 DV 파일로 DV 데이터를 캡처합니다.
- DV에 형식 2 파일: 형식 2 DV 파일에서 캠코더로 데이터를 전송합니다.
캡처 및 전송 모드도 미리 보기를 수행합니다. 이러한 각 모드에는 미리 보기가 비활성화되는 미리 보기 없음 옵션도 있습니다. 미리 보기 없이 캡처하는 것이 더 효율적이며 삭제된 프레임 수를 줄일 수 있습니다.
애플리케이션은 미리 보기 모드에서 시작됩니다. 다른 모드를 선택하려면 그래프 모드 메뉴에서 모드를 선택합니다. 각 모드에 대해 DVApp은 해당 모드의 기능을 지원하는 필터 그래프를 빌드합니다. 그래프를 GraphEdit(.grf) 파일로 저장하려면 파일 메뉴에서 파일에 그래프 저장을 선택합니다. GraphEdit에서 파일을 열기 전에 DVApp을 종료합니다.
파일에 캡처하려면 다음을 수행합니다.
- 파일 메뉴에서 출력 파일 설정을 선택하고 파일 이름을 입력합니다.
- 그래프 모드 메뉴에서 DV에서 파일 모드로를 선택합니다(미리 보기 사용 여부와 관계없이 1 또는 형식 2).
- 레코드를 클릭합니다.
- 캠코더가 VTR 모드인 경우 재생을 클릭합니다.
- 캡처를 중지하려면 중지를 클릭합니다.
파일에서 캠코더로 전송하려면 다음을 수행합니다.
- 파일 메뉴에서 입력 파일 설정을 클릭하고 DV 파일을 선택합니다. 파일은 선택한 모드(1 또는 형식 2)와 일치해야 합니다.
- 그래프 모드 메뉴에서 파일-DV 모드를 선택합니다(미리 보기 여부에 관계없이 1 또는 2를 입력).
- 재생을 클릭합니다.
- 테이프에 데이터를 기록하려면 레코드를 클릭합니다.
- 전송을 중지하려면 중지를 클릭합니다.
캠코더가 VTR 모드인 경우 사용자는 애플리케이션의 VCR 스타일 단추를 통해 전송 메커니즘을 제어할 수 있습니다. 테이프를 찾으려면 대상 시간 코드를 입력하고 검색 단추를 클릭합니다.
애플리케이션이 캡처하는 데이터의 양을 제한하려면 파일 메뉴에서 캡처 크기를 선택합니다.
테이프 형식(NTSC 또는 PAL)을 검사 옵션 메뉴에서테이프 확인을 선택합니다.
미리 보기 창의 크기를 변경하려면 옵션 메뉴에서 디코딩 크기 변경을 선택합니다.
프로그래밍 참고 사항
이 애플리케이션의 기본 목적은 다양한 DV 캡처를 빌드하고 그래프를 전송하는 방법을 보여주는 것입니다.
디바이스 도착 및 제거
애플리케이션은 두 가지 기술을 사용하여 디바이스 도착 및 제거를 처리합니다. 디바이스 도착 시 애플리케이션의 메시지 루프는 WM_DEVICECHANGE 메시지에 응답합니다. 디바이스 제거를 위해 애플리케이션은 필터 그래프 관리자의 EC_DEVICE_LOST 이벤트에 응답합니다. EC_DEVICE_LOST 이벤트는 필터 그래프에서 디바이스의 존재에 따라 달라지지만 두 방법 중 하나가 작동합니다.
애플리케이션은 한 번에 하나의 디바이스만 처리합니다. 현재 디바이스가 제거되면 애플리케이션은 시스템에서 다른 DV 디바이스를 찾습니다.
일부 DV 캠코더에서 사용자는 카메라 모드와 VTR 모드 간에 전환할 때 디바이스를 차단해야 하며, 이는 디바이스 손실 메시지를 트리거합니다. 애플리케이션은 적절한 메뉴 명령을 사용하거나 사용하지 않도록 설정하여 응답합니다. 그러나 사용자가 모드 간에 빠르게 전환하는 경우 캠코더는 디바이스 손실 메시지를 생성하지 않을 수 있습니다. 옵션 메뉴에서 새로 고침 모드 를 선택하여 메뉴를 강제로 업데이트할 수 있습니다 . 일부 DV 캠코더는 차단하지 않고 모드를 전환할 수 있지만 VTR 모드로 전환할 때만 디바이스 손실 메시지를 보낼 수 있습니다.
디바이스 제어
재생 및 레코드 단추의 기능은 현재 모드에 따라 달라집니다.
- 미리 보기: 필터 그래프가 자동으로 실행됩니다. 재생 단추가 전송을 시작합니다.
- 파일에 캡처: 레코드 단추가 그래프를 실행하고 재생 단추가 전송을 시작합니다.
- 디바이스로 전송: 재생 단추가 그래프를 실행하고 레코드 단추가 전송을 시작합니다.
샘플 애플리케이션은 프레임 정확 캡처를 수행하지 않습니다. 다양한 지점에서 애플리케이션은 절전 모드 함수를 호출하여 디바이스가 응답할 때까지 기다립니다. 최신 DV 캠코더는 디바이스 상태가 변경되면 알림을 보냅니다. 이전 디바이스는 알림을 지원하지 않을 수 있습니다. 샘플의 목적을 위해 절전 모드 를 호출하는 것이 더 간단한 솔루션입니다.
샘플 다운로드
DirectShow SDK 샘플을 다운로드하려면 최신 버전의 Windows SDK를 설치합니다.
이 샘플은 [SDK 루트]\Samples\Multimedia\DirectShow\Capture\DVApp 경로 아래에 설치됩니다.
관련 항목