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.