[MCI 이 페이지와 연결된 기능은 레거시 기능입니다. MediaPlayer 대체되었습니다. MediaPlayer Windows 10 및 Windows 11에 최적화되었습니다. 가능한 경우 새 코드에서 MCI 대신 MediaPlayer 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
Windows는 VCR에 대한 MCI 명령 집합을 기반으로 하는 디바이스 드라이버를 통해 VCR 서비스를 제공합니다. 이 섹션에서는 MCI VISCA(비디오 시스템 제어 아키텍처) 드라이버에 대해 설명하고 VCR을 제어하는 데 사용하는 방법을 설명합니다.
vcr 디바이스 유형은 VCR을 제어합니다. VCR 디바이스에서 인식되는 MCI 명령 목록은 VCR 명령 집합참조하세요.
MCI VISCA 드라이버
MCI VISCA 드라이버는 CVD-1000 VDeck과 같은 소니 VISCA 호환 VCR을 제어합니다. VISCA 드라이버는 테이프 전송, 채널 튜너 및 VCR 입력 및 출력 채널을 제어합니다.
VCR을 사용하여 검색 및 위치 지정
VISCA 드라이버는 두 가지 방법을 사용하여 VCR 테이프 전송 내에서 비디오 테이프 이동을 추적합니다. 시간 코드 정보 및 테이프 카운터. 시간 코드 정보는 비디오 테이프에 기록된 타이밍 정보입니다. 대부분의 VCR은 오디오 및 비디오 트랙을 삭제하지 않고 시간 코드를 기록할 수 있도록 허용합니다. 테이프 카운터는 위치를 얻기 위해 비디오 테이프 헤드를 지나 이동하는 비디오 테이프의 양을 추정합니다.
비디오 테이프가 처음부터 끝까지 이동하면 시간 코드 정보와 테이프 카운터가 모두 증가합니다. 정확도 때문에 시간 코드 정보를 사용하여 비디오 테이프를 배치하는 것이 테이프 카운터를 사용하는 것이 거의 항상 좋습니다.
위치 지정 정보를 지정하기 위한 MCI 명령 플래그는 "시간 형식", "기간", "from", "to" 및 "seek"와 같은 시간 종속성으로 표현됩니다. 또한 상태 "position" 명령은 시간 값을 현재 시간 형식으로 반환합니다.
VISCA 드라이버는 집합 "시간 모드" 명령을 사용하여 비디오 테이프에 사용할 위치 유형을 선택합니다. 시간 모드가 "timecode"로 설정되면 상태는 "위치"설정 "시간 형식" 명령은 비디오 테이프의 시간 코드를 사용합니다. 시간 모드가 "counter"로 설정되면 상태가 "위치""시간 형식" 명령이 카운터를 설정됩니다.
애플리케이션은 위치 정보의 두 소스가 있을 수 있는 것이 중요하지 않은 경우 시간 모드를 "검색"하도록 설정할 수 있습니다. 검색 모드에서 VISCA 드라이버는 다음 조건이 발생할 때 위치 지정에 시간 코드 정보를 사용합니다.
- 시간 코드 정보는 드라이버가 열릴 때 표시됩니다.
- "door open" 명령을 집합을 사용하여 비디오 테이프를 변경하고 비디오 테이프에 시간 코드 정보가 있습니다.
- "시간 모드" 명령을집합이 다시 실행됩니다.
시간 코드 정보를 찾을 수 없는 경우 드라이버는 테이프 카운터를 사용합니다.
현재 위치 지정 방법을 확인하려면 "timecode" 또는 "counter"를 반환하는 "시간 유형" 명령을상태를 실행합니다. "timecode", "counter" 또는 "detect"를 반환하는 상태 "시간 모드" 명령을 사용하여 현재 위치 모드를 식별할 수도 있습니다.
상태 "counter" 명령은 현재 위치 지정 방법에 관계없이 현재 테이프 카운터 값을 검색합니다. 그러나 "카운터" 명령을집합에서만 이 카운터 읽기를 사용할 수 있습니다.
VISCA 드라이버는 "시간 코드 형식" 상태와 상태 "프레임 속도" 명령을 함께 사용하여 비디오 테이프에 기록된 네이티브 시간 코드 형식을 검색할 수 있습니다. 예를 들어 시간 코드 형식이 "smpte"이고 프레임 속도가 25인 경우 비디오 테이프에 기록된 네이티브 시간 코드 형식은 SMPTE 25입니다.
VISCA 드라이버는 "초" 또는 "프레임"을 반환하는 상태 "카운터 해상도" 명령을 사용하여 카운터 해상도를 검색할 수도 있습니다. 카운터 형식은 여전히 SMPTE 30으로 설정될 수 있지만 반환 값은 0 프레임만 반환합니다. 현재 시간 형식이 카운터인 경우 이 확인은 "위치" 상태에서 반환된 값에도 적용됩니다.
프레임 캡처
프레임 캡처 명령은 프레임 캡처 디바이스대한 스틸 이미지를 제공합니다. 프레임 캡처 디바이스는 비디오 이미지를 읽고 저장할 수 있는 별도의 하드웨어 조각입니다. VISCA 드라이버는 캡처를 위해 정지 이미지를 안정화하는 고정(MCI_FREEZE) 명령을 지원합니다. 또한 고정 해제(MCI_UNFREEZE) 명령을 사용하여 고정 명령에 따라 테이프 전송을 다시 시작할 수 있습니다.
고정 명령은 프레임 캡처 디바이스에 대해 고품질의 안정화된 시간 기반 수정 이미지를 제공합니다. 이 명령은 디바이스가 재생 중 또는 일시 중지된 동안 항상 최대 품질의 출력 이미지를 제공하지 않을 수 있기 때문에 존재합니다. 이러한 비디오 이미지는 캡처에 적합하지 않습니다.
고정 해제 명령은 테이프 전송의 잠금을 해제하고 고정 명령 전에 적용된 전송 모드를 다시 시작합니다.
애플리케이션이 VCR에 비디오 이미지를 녹화해야 하는 경우 고정 "input" 명령 또는 신호(MCI_CUE) 명령을 사용하여 이미지를 기록합니다.
입력 선택
VISCA 드라이버는 비디오, 오디오 및 시간 코드의 세 가지 입력 유형을 지원합니다. 비디오 입력에는 두 개의 표준 채널(줄 1과 2), SVideo 채널, 보조 채널 및 내부 튜너의 채널이 포함됩니다. 오디오 입력에는 두 개의 표준 채널(줄 1과 2)과 내부 튜너의 채널이 포함됩니다. 시간 코드 입력은 VCR 내부입니다.
일반 출력은 VCR이 녹음 중이거나 테이프 전송이 중지될 때 현재 선택된 입력을 전달하며 테이프 전송이 재생되거나 일시 중지될 때 비디오 테이프의 내용을 전달합니다. 모니터링되는 출력은 일반 출력과 동일한 정보와 현재 시간 코드 및 채널 정보를 제공합니다.
적절한 외부 입력이 VCR에 연결되어 있고 기록하려는 항목을 결정했다고 가정하면 기록할 입력을 선택할 수 있습니다. 예를 들어 "svideo" 비디오 및 "줄 1" 오디오 입력에서 녹화하거나 보려면 setvideo(MCI_SETVIDEO) 및 setaudio(MCI_SETAUDIO) 명령을 사용하여 이러한 입력 소스를 선택합니다. 상태(MCI_STATUS) 명령을 사용하여 이러한 선택을 확인할 수 있습니다.
기본적으로 모니터는 출력으로 표시되는 항목을 정확하게 표시합니다. 그러나 경우에 따라 다른 원본에서 기록하는 동안 한 원본을 보려고 할 수 있습니다. 이는 튜너를 사용하는 일반적인 방법입니다. 예를 들어 채널 7을 기록하는 동안 채널 4를 시청할 수 있습니다. 이 경우 두 개의 논리 튜너 입력이 있습니다. 다음 명령을 사용하여 VCR을 설정할 수 있습니다.
다른 원본에서 기록하는 동안 한 원본을 검토하려면
- settuner(MCI_SETTUNER) 명령을 사용하여 보고 기록할 채널을 선택합니다.
- setvideo 명령을 사용하여 비디오 녹화 원본을 선택합니다.
- setaudio 명령을 사용하여 오디오 녹음 소스를 선택합니다.
- setvideo 명령을 사용하여 채널 4 비디오 입력을 모니터링된 출력으로 라우팅하여 화면에 표시합니다.
- setaudio 명령을 사용하여 채널 4 오디오 입력을 모니터링된 출력으로 라우팅하여 오디오를 재생합니다.
- 상태 명령을 사용하여 선택 항목을 확인합니다.
또한 VISCA 드라이버는 음소거 오디오 및 비디오에 대한 특수 입력 형식을 지원합니다. 음소거를 사용하면 빈 신호를 기록할 때 유용한 "입력 없음"을 선택할 수 있습니다.
녹음 트랙 선택
비디오 테이프에는 비디오, 오디오 및 시간 코드라는 세 가지 유형의 녹음 트랙이 있습니다. 비디오 또는 시간 코드 트랙은 하나만 있지만 둘 이상의 오디오 트랙을 사용할 수 있습니다. 이렇게 하면 트랙 1을 기본 오디오 트랙으로 만듭니다.
VISCA 드라이버는 어셈블 및 삽입이라는 두 가지 작동 모드를 지원합니다. 어셈블 모드모든 트랙이 기록되도록 선택됩니다. 삽입 모드트랙은 녹음/녹화를 위해 독립적으로 선택할 수 있습니다. 대부분의 VCR은 기본적으로 어셈블 모드에 있습니다. 집합(MCI_SET) 명령을 사용하여 이러한 모드를 변경합니다.
기록 및 편집
레코드(MCI_RECORD) 명령은 간단한 기록을 제공하며 시작 위치의 약 1초에 정확합니다. 더 정확하게 녹화하거나 여러 데크를 동시에 작동하는 동안 비디오 콘텐츠를 편집하려는 경우 큐(MCI_CUE) 명령을 사용해야 합니다.
큐 명령은 기록 또는 재생을 위해 디바이스를 준비합니다. 큐 "입력" 명령을 사용하여 디바이스를 기록할 준비를 합니다. 신호 명령은 디바이스가 명령을 수행할 준비가 되면(그리고 재생(MCI_PLAY) 또는 레코드 명령을 준비하는 데 몇 분 정도 걸릴 수 있으므로 알아야 하기 때문에 필요합니다.
VCR은 큐 "from" 명령을 사용하여 지정한 현재 위치 또는 위치인 인포인트검색하여 기록 또는 재생을 준비합니다. 그러나 큐 명령으로 "preroll" 플래그를 지정하면 VCR은 자체에서 인포인트로부터의 사전 등록 거리를 배치합니다. 또한 "preroll" 플래그는 VCR이 적용 가능한 편집 모드를 사용한다는 것을 나타내므로 특히 가장 정확한 녹음을 원하는 경우 "preroll"을 사용하는 것이 중요합니다. (기능(MCI_GETDEVCAPS) 명령을 "미리 등록할 수 있음" 플래그와 함께 사용하여 사전 등록 모드가 지원되는지 확인합니다.
메모
"from" 및 "to" 위치를 사용하여 기록하는 경우 "from" 위치는 편집에 포함되고 "to" 위치는 포함되지 않습니다.
녹음/녹화에 대한 자세한 내용은 기록참조하세요.
편집하는 동안 시계 사용
편집할 때 한 VCR에서 다른 VCR로 세그먼트를 기록할 수 있습니다. 작업(재생 또는 레코드), 위치 및 각 VCR에 대한 시간을 지정하여 한 VCR에서 특정 시간 및 위치에서 기록을 시작할 수 있습니다.
두 VCR 모두 이 유형의 편집에 동일한 클록을 사용해야 합니다. 시계는 두 디바이스를 동기화하는 데 도움이 됩니다. 두 VCR이 "clock id" 플래그와 함께 상태(MCI_STATUS) 명령을 사용하여 각 VCR을 쿼리하여 동일한 시계를 공유하는지 확인할 수 있습니다. 상태 명령에서 반환된 ID 번호가 동일한 경우 디바이스는 동일한 시계를 사용합니다. 공유 리소스로서 클록을 여러 VCR에 연결할 수 있습니다. VISCA 드라이버는 하나의 공유 시계만 지원합니다.
상태 "클록 증가율" 명령을 사용하여 클록 해상도를 확인할 수도 있습니다. 이 명령은 클록이 초당 지원하는 증분 수를 반환합니다. 예를 들어 클록이 밀리초마다 업데이트되는 경우 명령은 클록 증분 속도로 1000을 반환합니다. 증분 속도를 사용할 경우의 이점은 속도가 정수로 표현된다는 것입니다. 그렇지 않으면 증가는 (단정밀도 또는 배정밀도) 부동 소수점 값이 됩니다. 정수로서 증분 속도를 조작하는 것은 간단한 작업이며 반올림 오류에 취약하지 않습니다. "clock 0"(0) 플래그와 함께 집합(MCI_SET) 명령을 사용하여 시계를 다시 설정할 수 있습니다.
재생(MCI_PLAY), 레코드(MCI_RECORD) 또는 seek(MCI_SEEK) 명령을 실행할 시기를 지정할 수 있습니다. 사용되는 VCR의 특성은 각 VCR을 시작할 시기를 결정합니다. 타이밍은 각 디바이스에 필요한 사전 등록의 양과 편집 세션을 설정하는 데 사용되는 MCI 명령을 완료하는 데 필요한 시간을 고려해야 합니다. 이렇게 하려면 클록 시간을 검색하고 대기 간격을 5~10초로 추가합니다. (대기 간격은 사전 등록 및 미해결 MCI 명령 실행을 완료할 수 있을 만큼 충분히 길어야 합니다.)
대기 기간이 충분히 길도록 하려면 레코드 명령을 애플리케이션에서 마지막으로 배치하고 바로 그 전에 시간을 확인합니다. 간격이 너무 짧으면 재생 명령을 다시 시작합니다. 또는 스크립트의 마지막 명령 직후 시간을 확인하여 모든 명령을 보내고 완료하는 데 충분한 시간이 있는지 확인할 수 있습니다.