디바이스 재생
재생(MCI_PLAY) 명령은 디바이스 재생을 시작합니다. 플래그가 없으면 이 명령은 현재 위치에서 재생을 시작하고 명령이 중단되거나 미디어 또는 파일의 끝에 도달할 때까지 재생됩니다. 재생 후 현재 위치는 미디어의 끝에 있습니다. seek(MCI_SEEK) 명령을 사용하여 현재 위치를 변경할 수도 있습니다.
재생 명령을 지원하는 대부분의 디바이스는 "from"(MCI_FROM) 및 "to"(MCI_TO) 플래그도 지원합니다. 이러한 플래그는 디바이스가 시작되고 재생을 중지해야 하는 위치를 나타냅니다. 예를 들어 다음 명령은 mciSendString 함수를 사용하여 첫 번째 트랙의 시작 부분에서 CD 오디오 디스크를 재생합니다.
mciSendString("play cdaudio from 0", lpszReturnString,
lstrlen(lpszReturnString), NULL);
일부 디바이스 유형은 이 명령을 확장하여 특정 디바이스의 기능을 활용합니다. 예를 들어 videodisc 디바이스 유형의 재생 명령에는 "fast"(MCI_VD_PLAY_FAST) , "slow"(MCI_VD_PLAY_SLOW) 및 "scan"(MCI_VD_PLAY_SCAN) 플래그가 포함됩니다.
참고
위치 값에 할당된 단위는 디바이스에서 사용하는 시간 형식에 따라 달라집니다. 각 디바이스에는 기본 시간 형식이 있지만 위치 값을 사용하는 명령을 실행하기 전에 set (MCI_SET) 명령을 사용하여 시간 형식을 지정해야 합니다.
AVI 파일 재생
Windows의 비디오 파일은 비디오(그림) 스트림과 오디오 스트림이라는 두 개 이상의 인터리브 데이터 스트림으로 구성됩니다. MCI 명령을 사용하여 이러한 AVI(오디오 비디오 인터리브) 파일을 쉽게 재생할 수 있습니다. 다음 섹션에서는 AVI 파일 재생에 대해 설명합니다.
MCIAVI 재생 창 설정
애플리케이션은 다음 옵션을 지정하여 AVI 파일을 재생하기 위한 재생 창을 정의할 수 있습니다.
- MCIAVI 드라이버의 기본 팝업 창을 사용합니다.
- MCIAVI 드라이버가 재생 창을 만드는 데 사용할 수 있는 부모 창 및 창 스타일을 지정합니다.
- 재생에 사용할 MCIAVI 드라이버의 재생 창을 지정합니다.
- 전체 화면 디스플레이에서 AVI 파일을 재생합니다.
애플리케이션에서 창 옵션을 지정하지 않으면 MCIAVI 드라이버는 시퀀스를 재생하기 위한 기본 창을 만듭니다. 드라이버는 열기 (MCI_OPEN) 명령에 대해 이 재생 창을 만들지만 애플리케이션이 창을 표시하거나 파일을 재생하는 명령을 보낼 때까지 창이 표시되지 않습니다. 이 기본 재생 창은 크기 조정 테두리, 제목 표시줄, 두꺼운 프레임, 창 메뉴 및 최소화 단추가 있는 팝업 창 입니다.
애플리케이션은 열기 명령을 실행할 때 부모 창 핸들과 창 스타일을 지정할 수도 있습니다. 이 경우 MCIAVI 드라이버는 기본 팝업 창 대신 이러한 사양에 따라 창을 만듭니다. 애플리케이션은 CreateWindow 함수에 사용할 수 있는 창 스타일을 지정할 수 있습니다. WS_CHILD 같은 부모 창이 필요한 스타일에는 부모 창 핸들이 포함되어야 합니다.
애플리케이션은 창(MCI_WINDOW) 명령을 사용하여 자체 창을 만들고 MCIAVI 드라이버에 핸들을 제공할 수도 있습니다. MCIAVI 드라이버는 자체 창 중 하나를 만드는 대신 이 창을 사용합니다.
MCIAVI 드라이버가 재생 창을 만들거나 애플리케이션에서 창 핸들을 가져오는 경우 애플리케이션이 시퀀스를 재생하거나 창을 표시하는 명령을 보낼 때까지 창이 표시되지 않습니다. 애플리케이션은 창 명령을 사용하여 시퀀스를 재생하지 않고 창을 표시할 수 있습니다. 예를 들어 다음 명령은 mciSendString을 사용하여 창을 표시합니다.
mciSendString("window movie state show", lpszReturnString,
lstrlen(lpszReturnString), NULL);
이 예제에서 "동영상"은 디지털 비디오 디바이스의 별칭입니다.
애플리케이션은 AVI 파일 전체 화면을 재생할 수도 있습니다. 전체 화면을 재생하려면 "전체 화면"(MCI_MCIAVI_PLAY_FULLSCREEN) 플래그를 사용하여 play(MCI_PLAY) 명령을 수정합니다. 애플리케이션에서 이 플래그를 사용하는 경우 MCIAVI 드라이버는 시퀀스를 재생하기 위해 320x240픽셀 전체 화면 형식을 사용합니다. 예를 들어 다음 명령은 열린 파일 전체 화면을 재생합니다(별칭으로 "동영상"사용).
mciSendString("play movie fullscreen", lpszReturnString,
lstrlen(lpszReturnString), NULL);
AVI 파일의 재생 상태 변경
애플리케이션은 seek (MCI_SEEK) 명령을 사용하여 현재 위치를 AVI 파일의 시작, 끝 또는 임의 위치로 이동할 수 있습니다. MCIAVI 드라이버에는 정확하고 정확하지 않은 두 가지 검색 모드가 있습니다. 애플리케이션은 set (MCI_SET) 명령을 사용하여 검색 모드를 변경할 수 있습니다. "seek exactly on" 집합 을 사용하는 경우 MCIAVI 드라이버는 애플리케이션이 지정한 프레임을 정확하게 찾습니다. 이로 인해 파일이 임시로 압축되고 애플리케이션에서 키 프레임을 지정하지 않는 경우 지연이 발생할 수 있습니다. "seek exactly off" 집합 을 사용하면 MCIAVI 드라이버는 임시로 압축된 파일에서 가장 가까운 키 프레임을 찾습니다.
일부 MCI 명령을 사용하면 애플리케이션이 다른 방법으로 AVI 파일의 재생을 변경할 수 있습니다. 예를 들어 AVI 파일은 기본적으로 정상 속도로 재생되지만 애플리케이션은 set 명령과 함께 "속도" 플래그를 사용하여 이 속도를 늘리거나 줄일 수 있습니다. AVI 파일의 경우 속도 값이 1000인 것이 일반적입니다. 따라서 일반적인 속도의 절반으로 영화를 재생하기 위해 애플리케이션은 명령 집합 "영화 속도 500"을 사용할 수 있습니다. 또는 세트 "동영상 속도 2000"을 사용하여 시퀀스를 정상 속도의 두 배로 재생할 수 있습니다.
setaudio(MCI_SETAUDIO) 명령을 사용하면 애플리케이션이 AVI 파일의 오디오 부분을 제어할 수 있습니다. 애플리케이션은 재생 중에 오디오를 음소거하거나 여러 오디오 스트림 파일의 경우 재생되는 오디오 스트림을 선택할 수 있습니다.
MCIAVI 드라이버에는 재생 옵션 중 일부를 제어하는 대화 상자가 있습니다. 사용자가 사용할 수 있는 옵션 중 일부에는 창 지향 또는 전체 화면 재생 선택, 검색 모드 선택, 이미지 확대/축소 등이 있습니다. 애플리케이션에서 구성 (MCI_CONFIGURE) 명령을 사용하여 이 대화 상자를 표시할 수 있습니다.
스트림 처리기
AVI 파일의 데이터는 일련의 스트림으로 처리됩니다. AVI 파일에는 일반적으로 오디오 및 비디오 스트림이 포함되며 텍스트 또는 다른 사용자 지정 데이터가 포함된 사용자 지정 스트림도 있을 수 있습니다. MCIAVI 드라이버는 이러한 데이터 스트림에 대해 서로 다른 처리기를 사용할 수 있습니다. 사용자 지정 AVI 파일에 대한 자세한 내용은 사용자 지정 파일 및 스트림 처리기를 참조하세요.