Reproduzindo um dispositivo

O comando reproduzir (MCI_PLAY) começa a reproduzir um dispositivo. Sem sinalizadores, esse comando começa a ser reproduzido da posição atual e é reproduzido até que o comando seja interrompido ou até que o final da mídia ou arquivo seja atingido. Após a reprodução, a posição atual está no final da mídia. Você também pode usar o comando seek (MCI_SEEK) para alterar a posição atual.

A maioria dos dispositivos que dão suporte ao comando play também dá suporte aos sinalizadores "from" (MCI_FROM) e "to" (MCI_TO). Esses sinalizadores indicam a posição na qual o dispositivo deve iniciar e parar de reproduzir. Por exemplo, o comando a seguir reproduz um disco de áudio cd desde o início da primeira faixa usando a função mciSendString :

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

Alguns tipos de dispositivo estendem esse comando para explorar os recursos de um dispositivo específico. Por exemplo, o comando play para o tipo de dispositivo videodisc inclui os sinalizadores "rápido" (MCI_VD_PLAY_FAST), "lento" (MCI_VD_PLAY_SLOW) e "verificação" (MCI_VD_PLAY_SCAN).

Observação

As unidades atribuídas ao valor da posição dependem do formato de tempo usado pelo dispositivo. Cada dispositivo tem um formato de tempo padrão, mas você deve especificar o formato de hora usando o comando set (MCI_SET) antes de emitir comandos que usam valores de posição.

 

Reproduzindo um arquivo AVI

Os arquivos de vídeo no Windows são compostos por pelo menos dois fluxos de dados intercalados: um fluxo de vídeo (pictorial) e um fluxo de áudio. Você pode reproduzir facilmente esses arquivos AVI (intercalados de áudio/vídeo) usando comandos MCI. As seções a seguir discutem como reproduzir arquivos AVI.

Configurando uma janela de reprodução do MCIAVI

Seu aplicativo pode especificar as seguintes opções para definir a janela de reprodução para reproduzir um arquivo AVI:

  • Use a janela pop-up padrão do driver MCIAVI.
  • Especifique uma janela pai e um estilo de janela que o driver MCIAVI pode usar para criar a janela de reprodução.
  • Especifique uma janela de reprodução para o driver MCIAVI usar para reprodução.
  • Reproduza o arquivo AVI em uma tela inteira.

Se o aplicativo não especificar nenhuma opção de janela, o driver MCIAVI criará uma janela padrão para reproduzir a sequência. O driver cria essa janela de reprodução para o comando aberto (MCI_OPEN), mas não exibe a janela até que o aplicativo envie um comando para exibir a janela ou reproduzir o arquivo. Essa janela de reprodução padrão é uma janela pop-up com uma borda de dimensionamento, barra de título, um quadro grosso, um menu de janela e um botão Minimizar.

Seu aplicativo também pode especificar um identificador de janela pai e um estilo de janela quando ele emite o comando open . Nesse caso, o driver MCIAVI cria uma janela com base nessas especificações em vez da janela pop-up padrão. Seu aplicativo pode especificar qualquer estilo de janela disponível para a função CreateWindow . Estilos que exigem uma janela pai, como WS_CHILD, devem incluir um identificador de janela pai.

Seu aplicativo também pode criar sua própria janela e fornecer o identificador para o driver MCIAVI usando o comando window (MCI_WINDOW). O driver MCIAVI usa essa janela em vez de criar uma delas.

Quando o driver MCIAVI cria a janela de reprodução ou obtém um identificador de janela do aplicativo, ele não exibe a janela até que o aplicativo reproduza a sequência ou envie um comando para exibir a janela. Seu aplicativo pode usar o comando de janela para exibir a janela sem reproduzir a sequência. Por exemplo, o seguinte comando exibe a janela usando mciSendString:

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

Neste exemplo, "movie" é um alias para o dispositivo de vídeo digital.

Seu aplicativo também pode reproduzir um arquivo AVI em tela inteira. Para reproduzir em tela inteira, modifique o comando reproduzir (MCI_PLAY) com o sinalizador "fullscreen" (MCI_MCIAVI_PLAY_FULLSCREEN). Quando seu aplicativo usa esse sinalizador, o driver MCIAVI usa um formato de tela inteira de 320 por 240 pixels para reproduzir a sequência. Por exemplo, o comando a seguir reproduz o arquivo aberto em tela inteira (usando "movie" como um alias):

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

Alterando o estado de reprodução de um arquivo AVI

Seu aplicativo pode usar o comando seek (MCI_SEEK) para mover a posição atual para o início, o fim ou uma posição arbitrária em um arquivo AVI. Há dois modos de busca para o driver MCIAVI: exato e inexact. Seu aplicativo pode alterar o modo de busca usando o comando set (MCI_SET). Quando você usa o conjunto "buscar exatamente ativado", o driver MCIAVI busca exatamente o quadro especificado pelo aplicativo. Isso poderá causar um atraso se o arquivo for compactado temporalmente e seu aplicativo não especificar um quadro-chave. Quando você usa o conjunto "buscar exatamente desativado", o driver MCIAVI procura o quadro-chave mais próximo em um arquivo compactado temporalmente.

Alguns comandos MCI permitem que seu aplicativo altere a reprodução de um arquivo AVI de outras maneiras. Por exemplo, um arquivo AVI, por padrão, é reproduzido em sua velocidade normal, mas seu aplicativo pode aumentar ou diminuir essa velocidade usando o sinalizador de "velocidade" com o comando set . Para arquivos AVI, um valor de velocidade de 1000 é típico. Assim, para reproduzir um filme a metade de sua velocidade típica, seu aplicativo pode usar o conjunto de comandos "velocidade de filme 500"; como alternativa, ele pode usar definir "velocidade de filme 2000" para reproduzir a sequência com o dobro de sua velocidade normal.

O comando setaudio (MCI_SETAUDIO) permite que o aplicativo controle a parte de áudio de um arquivo AVI. Seu aplicativo pode ativar mudo de áudio durante a reprodução ou, no caso de vários arquivos de fluxo de áudio, selecionar o fluxo de áudio que é reproduzido.

O driver MCIAVI tem uma caixa de diálogo para controlar algumas de suas opções de reprodução. Algumas das opções disponíveis para o usuário incluem a seleção de reprodução orientada a janelas ou tela inteira, seleção do modo de busca e zoom da imagem. Seu aplicativo pode fazer com que o MCIAVI exiba essa caixa de diálogo usando o comando configurar (MCI_CONFIGURE).

Manipuladores de fluxo

Os dados em um arquivo AVI são tratados como uma série de fluxos. Um arquivo AVI normalmente contém um fluxo de áudio e vídeo, e também pode haver um fluxo personalizado que contém texto ou alguns outros dados personalizados. O driver MCIAVI pode usar manipuladores diferentes para esses fluxos de dados. Para obter mais informações sobre arquivos AVI personalizados, consulte Manipuladores de arquivos personalizados e de fluxo.