Riproduzione di un dispositivo
Il comando play (MCI_PLAY) avvia la riproduzione di un dispositivo. Senza flag, questo comando inizia a riprodurre dalla posizione corrente e viene riprodotto fino a quando il comando non viene interrotto o fino al raggiungimento della fine del file o del supporto. Dopo la riproduzione, la posizione corrente si trova alla fine del supporto. È anche possibile usare il comando seek (MCI_SEEK) per modificare la posizione corrente.
La maggior parte dei dispositivi che supportano il comando play supporta anche i flag "from" (MCI_FROM) e "to" (MCI_TO). Questi flag indicano la posizione in cui il dispositivo deve avviare e interrompere la riproduzione. Ad esempio, il comando seguente riproduce un disco audio CD dall'inizio della prima traccia usando la funzione mciSendString :
mciSendString("play cdaudio from 0", lpszReturnString,
lstrlen(lpszReturnString), NULL);
Alcuni tipi di dispositivo estendono questo comando per sfruttare le funzionalità di un determinato dispositivo. Ad esempio, il comando play per il tipo di dispositivo videodisc include i flag "fast" (MCI_VD_PLAY_FAST), "slow" (MCI_VD_PLAY_SLOW) e "scan" (MCI_VD_PLAY_SCAN).
Nota
Le unità assegnate al valore di posizione dipendono dal formato temporale usato dal dispositivo. Ogni dispositivo ha un formato di ora predefinito, ma è necessario specificare il formato ora usando il comando set (MCI_SET) prima di eseguire i comandi che usano valori di posizione.
Riproduzione di un file AVI
I file video in Windows sono costituiti da almeno due flussi di dati interleaved: un flusso video (pictoriale) e un flusso audio. È possibile riprodurre facilmente questi file audio-video interleaved (AVI) usando i comandi MCI. Le sezioni seguenti illustrano la riproduzione di file AVI.
Configurazione di una finestra di riproduzione MCIAVI
L'applicazione può specificare le opzioni seguenti per definire la finestra di riproduzione per la riproduzione di un file AVI:
- Usare la finestra popup predefinita del driver MCIAVI.
- Specificare uno stile di finestra e finestra padre che il driver MCIAVI può usare per creare la finestra di riproduzione.
- Specificare una finestra di riproduzione per il driver MCIAVI da usare per la riproduzione.
- Riprodurre il file AVI su una visualizzazione a schermo intero.
Se l'applicazione non specifica alcuna opzione di finestra, il driver MCIAVI crea una finestra predefinita per la riproduzione della sequenza. Il driver crea questa finestra di riproduzione per il comando apri (MCI_OPEN), ma non visualizza la finestra finché l'applicazione non invia un comando per visualizzare la finestra o riprodurre il file. Questa finestra di riproduzione predefinita è una finestra popup con un bordo di ridimensionamento, una barra del titolo, una cornice spessa, un menu della finestra e un pulsante Riduci a icona.
L'applicazione può anche specificare un handle di finestra padre e uno stile di finestra quando esegue il comando open . In questo caso, il driver MCIAVI crea una finestra in base a queste specifiche anziché alla finestra popup predefinita. L'applicazione può specificare qualsiasi stile di finestra disponibile per la funzione CreateWindow . Gli stili che richiedono una finestra padre, ad esempio WS_CHILD, devono includere un handle di finestra padre.
L'applicazione può anche creare la propria finestra e fornire l'handle al driver MCIAVI usando il comando window (MCI_WINDOW). Il driver MCIAVI usa questa finestra invece di crearne una propria.
Quando il driver MCIAVI crea la finestra di riproduzione o ottiene un handle di finestra dall'applicazione, non visualizza la finestra finché l'applicazione non riproduce la sequenza o invia un comando per visualizzare la finestra. L'applicazione può usare il comando window per visualizzare la finestra senza riprodurre la sequenza. Ad esempio, il comando seguente visualizza la finestra usando mciSendString:
mciSendString("window movie state show", lpszReturnString,
lstrlen(lpszReturnString), NULL);
In questo esempio "movie" è un alias per il dispositivo digital-video.
L'applicazione può anche riprodurre un file AVI a schermo intero. Per riprodurre a schermo intero, modificare il comando play (MCI_PLAY) con il flag "fullscreen" (MCI_MCIAVI_PLAY_FULLSCREEN). Quando l'applicazione usa questo flag, il driver MCIAVI usa un formato a schermo intero da 320 a 240 pixel per la riproduzione della sequenza. Ad esempio, il comando seguente riproduce il file aperto a schermo intero (usando "movie" come alias):
mciSendString("play movie fullscreen", lpszReturnString,
lstrlen(lpszReturnString), NULL);
Modifica dello stato di riproduzione per un file AVI
L'applicazione può usare il comando seek (MCI_SEEK) per spostare la posizione corrente all'inizio, alla fine o a una posizione arbitraria in un file AVI. Esistono due modalità di ricerca per il driver MCIAVI: esatta e inesatta. L'applicazione può modificare la modalità di ricerca usando il comando set (MCI_SET). Quando si usa set "seek exactly on", il driver MCIAVI cerca esattamente il frame specificato dall'applicazione. Ciò potrebbe causare un ritardo se il file è compresso in modo temporale e l'applicazione non specifica un fotogramma chiave. Quando si usa set "seek exactly off", il driver MCIAVI cerca il fotogramma chiave più vicino in un file compresso temporale.
Alcuni comandi MCI consentono all'applicazione di modificare la riproduzione di un file AVI in altri modi. Ad esempio, un file AVI, per impostazione predefinita, viene riprodotto alla velocità normale, ma l'applicazione può aumentare o diminuire questa velocità usando il flag "speed" con il comando set . Per i file AVI, un valore di velocità pari a 1000 è tipico. Pertanto, per riprodurre un film alla metà della velocità tipica, l'applicazione può usare il comando set "movie speed 500"; in alternativa, può usare il set "movie speed 2000" per riprodurre la sequenza al doppio della velocità normale.
Il comando setaudio (MCI_SETAUDIO) consente all'applicazione di controllare la parte audio di un file AVI. L'applicazione può disattivare l'audio durante la riproduzione o, nel caso di più file di flusso audio, selezionare il flusso audio riprodotto.
Il driver MCIAVI ha una finestra di dialogo per controllare alcune delle opzioni di riproduzione. Alcune delle opzioni disponibili per l'utente includono la selezione della riproduzione orientata alla finestra o a schermo intero, la selezione della modalità di ricerca e lo zoom dell'immagine. L'applicazione può visualizzare questa finestra di dialogo usando il comando configure (MCI_CONFIGURE).
Gestori di flusso
I dati in un file AVI vengono considerati come una serie di flussi. Un file AVI contiene in genere un flusso audio e video e potrebbe essere presente anche un flusso personalizzato che contiene testo o altri dati personalizzati. Il driver MCIAVI può usare gestori diversi per questi flussi di dati. Per altre informazioni sui file AVI personalizzati, vedere Gestori di file e flussi personalizzati.