Воспроизведение устройства
Команда воспроизведения (MCI_PLAY) начинает воспроизведение устройства. Без флагов эта команда начинает воспроизведение из текущей позиции и воспроизводится до тех пор, пока команда не будет прервана или не будет достигнут конец носителя или файла. После воспроизведения текущая позиция находится в конце носителя. Вы также можете использовать команду seek (MCI_SEEK), чтобы изменить текущую позицию.
Большинство устройств, поддерживающих команду воспроизведения , также поддерживают флаги from (MCI_FROM) и to (MCI_TO). Эти флаги указывают на позицию, в которой устройство должно запускаться и перестать воспроизводиться. Например, следующая команда воспроизводит компакт-диск с начала первой дорожки с помощью функции mciSendString :
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 состоят по крайней мере из двух потоков данных с чередованием: видеопотока (изобразительного) и аудиопотока. Эти файлы с чередованием аудио-видео (AVI) можно легко воспроизвести с помощью команд MCI. В следующих разделах рассматривается воспроизведение файлов AVI.
Настройка окна воспроизведения MCIAVI
Приложение может указать следующие параметры, чтобы определить окно воспроизведения для воспроизведения AVI-файла:
- Используйте всплывающее окно драйвера MCIAVI по умолчанию.
- Укажите родительское окно и стиль окна, которые драйвер MCIAVI может использовать для создания окна воспроизведения.
- Укажите окно воспроизведения для драйвера MCIAVI, который будет использоваться для воспроизведения.
- Воспроизведение файла AVI на полноэкранном экране.
Если приложение не указывает параметры окна, драйвер MCIAVI создает окно по умолчанию для воспроизведения последовательности. Драйвер создает это окно воспроизведения для команды открытия (MCI_OPEN), но не отображает окно, пока приложение не отправит команду для отображения окна или воспроизведения файла. Это окно воспроизведения по умолчанию представляет собой всплывающее окно с границей размера, строкой заголовка, толстой рамкой, меню окна и кнопкой Свернуть.
Приложение также может указать родительский дескриптор окна и стиль окна при выполнении команды open . В этом случае драйвер MCIAVI создает окно на основе этих спецификаций вместо всплывающего окна по умолчанию. Приложение может указать любой стиль окна, доступный для функции CreateWindow . Стили, требующие родительского окна, например WS_CHILD, должны содержать дескриптор родительского окна.
Приложение также может создать собственное окно и предоставить дескриптор драйверу MCIAVI с помощью команды window (MCI_WINDOW). Драйвер MCIAVI использует это окно вместо создания собственного.
Когда драйвер MCIAVI создает окно воспроизведения или получает дескриптор окна из приложения, он не отображает окно, пока приложение не воспроизводит последовательность или не отправит команду для отображения окна. Приложение может использовать команду окна для отображения окна без воспроизведения последовательности. Например, следующая команда отображает окно с помощью mciSendString:
mciSendString("window movie state show", lpszReturnString,
lstrlen(lpszReturnString), NULL);
В этом примере "movie" — это псевдоним для цифрового видеоустройства.
Приложение также может воспроизводить AVI-файл в полноэкранном режиме. Чтобы воспроизвести в полноэкранном режиме, измените команду воспроизведения (MCI_PLAY) с помощью флага "fullscreen" (MCI_MCIAVI_PLAY_FULLSCREEN). Если приложение использует этот флаг, драйвер MCIAVI использует полноэкранный формат 320 на 240 пикселей для воспроизведения последовательности. Например, следующая команда воспроизводит открытый файл в полноэкранном режиме (используя "movie" в качестве псевдонима):
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 имеет диалоговое окно для управления некоторыми параметрами воспроизведения. Некоторые из доступных пользователю параметров включают выбор оконного или полноэкранного воспроизведения, выбор режима поиска и масштабирование изображения. Приложение может отобразить это диалоговое окно в MCIAVI с помощью команды configure (MCI_CONFIGURE).
Обработчики потоков
Данные в AVI-файле обрабатываются как ряд потоков. Файл AVI обычно содержит аудио- и видеопоток, а также пользовательский поток, содержащий текст или другие пользовательские данные. Драйвер MCIAVI может использовать разные обработчики для этих потоков данных. Дополнительные сведения о пользовательских файлах AVI см. в разделе Пользовательские обработчики файлов и потоков.