Share via


Reproducir un dispositivo

El comando play (MCI_PLAY) comienza a reproducir un dispositivo. Sin marcas, este comando comienza a reproducirse desde la posición actual y se reproduce hasta que se interrumpe el comando o hasta que se alcanza el final del medio o archivo. Después de la reproducción, la posición actual está al final del medio. También puede usar el comando seek (MCI_SEEK) para cambiar la posición actual.

La mayoría de los dispositivos que admiten el comando play también admiten las marcas "from" (MCI_FROM) y "to" (MCI_TO). Estas marcas indican la posición en la que el dispositivo debe iniciarse y dejar de reproducirse. Por ejemplo, el siguiente comando reproduce un disco de audio de CD desde el principio de la primera pista mediante la función mciSendString :

mciSendString("play cdaudio from 0", lpszReturnString, 
    lstrlen(lpszReturnString), NULL);

Algunos tipos de dispositivo amplían este comando para aprovechar las funcionalidades de un dispositivo determinado. Por ejemplo, el comando play para el tipo de dispositivo videodisc incluye las marcas "fast" (MCI_VD_PLAY_FAST), "slow" (MCI_VD_PLAY_SLOW) y "scan" (MCI_VD_PLAY_SCAN).

Nota

Las unidades asignadas al valor de posición dependen del formato de hora usado por el dispositivo. Cada dispositivo tiene un formato de hora predeterminado, pero debe especificar el formato de hora mediante el comando set (MCI_SET) antes de emitir los comandos que usen valores de posición.

 

Reproducir un archivo AVI

Los archivos de vídeo en Windows se componen de al menos dos secuencias de datos intercaladas: una secuencia de vídeo (pictorial) y una secuencia de audio. Puede reproducir fácilmente estos archivos de audio-vídeo intercalados (AVI) mediante comandos MCI. En las secciones siguientes se describe cómo reproducir archivos AVI.

Configurar una ventana de reproducción de MCIAVI

La aplicación puede especificar las siguientes opciones para definir la ventana de reproducción para reproducir un archivo AVI:

  • Use la ventana emergente predeterminada del controlador MCIAVI.
  • Especifique una ventana primaria y un estilo de ventana que el controlador MCIAVI puede usar para crear la ventana de reproducción.
  • Especifique una ventana de reproducción para el controlador MCIAVI que se usará para la reproducción.
  • Reproducir el archivo AVI en una pantalla completa.

Si la aplicación no especifica ninguna opción de ventana, el controlador MCIAVI crea una ventana predeterminada para reproducir la secuencia. El controlador crea esta ventana de reproducción para el comando open (MCI_OPEN), pero no muestra la ventana hasta que la aplicación envíe un comando para mostrar la ventana o reproducir el archivo. Esta ventana de reproducción predeterminada es una ventana emergente con un borde de tamaño, una barra de título, un marco grueso, un menú de ventana y un botón Minimizar.

La aplicación también puede especificar un identificador de ventana principal y un estilo de ventana cuando emite el comando open . En este caso, el controlador MCIAVI crea una ventana basada en estas especificaciones en lugar de en la ventana emergente predeterminada. La aplicación puede especificar cualquier estilo de ventana disponible para la función CreateWindow . Los estilos que requieren una ventana primaria, como WS_CHILD, deben incluir un identificador de ventana principal.

La aplicación también puede crear su propia ventana y proporcionar el identificador al controlador MCIAVI mediante el comando window (MCI_WINDOW). El controlador MCIAVI usa esta ventana en lugar de crear una de sus propias.

Cuando el controlador MCIAVI crea la ventana de reproducción o obtiene un identificador de ventana de la aplicación, no muestra la ventana hasta que la aplicación reproduce la secuencia o envía un comando para mostrar la ventana. La aplicación puede usar el comando window para mostrar la ventana sin reproducir la secuencia. Por ejemplo, el siguiente comando muestra la ventana con mciSendString:

mciSendString("window movie state show", lpszReturnString,
    lstrlen(lpszReturnString), NULL);

En este ejemplo, "movie" es un alias para el dispositivo de vídeo digital.

La aplicación también puede reproducir un archivo AVI en pantalla completa. Para reproducir la pantalla completa, modifique el comando de reproducción (MCI_PLAY) con la marca "fullscreen" (MCI_MCIAVI_PLAY_FULLSCREEN). Cuando la aplicación usa esta marca, el controlador MCIAVI usa un formato de pantalla completa de 320 píxeles a 320 píxeles para reproducir la secuencia. Por ejemplo, el siguiente comando reproduce la pantalla completa del archivo abierto (con "movie" como alias):

mciSendString("play movie fullscreen", lpszReturnString,
    lstrlen(lpszReturnString), NULL);

Cambiar el estado de reproducción de un archivo AVI

La aplicación puede usar el comando seek (MCI_SEEK) para mover la posición actual al principio, al final o a una posición arbitraria en un archivo AVI. Hay dos modos de búsqueda para el controlador MCIAVI: exacto e inexacto. La aplicación puede cambiar el modo de búsqueda mediante el comando set (MCI_SET). Cuando se usa establecer "buscar exactamente activado", el controlador MCIAVI busca exactamente el marco que especifica la aplicación. Esto puede provocar un retraso si el archivo está comprimido temporalmente y la aplicación no especifica un fotograma clave. Cuando se usa set "seek exactamente off", el controlador MCIAVI busca el fotograma clave más cercano en un archivo comprimido temporalmente.

Algunos comandos MCI permiten a la aplicación modificar la reproducción de un archivo AVI de otras maneras. Por ejemplo, un archivo AVI, de forma predeterminada, se reproduce a su velocidad normal, pero la aplicación puede aumentar o disminuir esta velocidad mediante el uso de la marca "speed" con el comando set . Para los archivos AVI, un valor de velocidad de 1000 es típico. Por lo tanto, para reproducir una película a la mitad de su velocidad típica, la aplicación puede usar el conjunto de comandos "velocidad de película 500"; como alternativa, puede usar set "movie speed 2000" para reproducir la secuencia a dos veces su velocidad normal.

El comando setaudio (MCI_SETAUDIO) permite a la aplicación controlar la parte de audio de un archivo AVI. La aplicación puede silenciar el audio durante la reproducción o, en el caso de varios archivos de secuencia de audio, seleccione la secuencia de audio que se reproduce.

El controlador MCIAVI tiene un cuadro de diálogo para controlar algunas de sus opciones de reproducción. Algunas de las opciones disponibles para el usuario incluyen la selección de la reproducción en pantalla completa o orientada a ventanas, la selección del modo de búsqueda y el zoom de la imagen. La aplicación puede hacer que MCIAVI muestre este cuadro de diálogo mediante el comando configurar (MCI_CONFIGURE).

Controladores de flujos

Los datos de un archivo AVI se tratan como una serie de secuencias. Un archivo AVI normalmente contiene una secuencia de audio y vídeo, y también puede haber una secuencia personalizada que contenga texto u otros datos personalizados. El controlador MCIAVI puede usar diferentes controladores para estos flujos de datos. Para obtener más información sobre los archivos AVI personalizados, vea Custom File and Stream Handlers.