Freigeben über


Spielen eines Geräts

Mit dem Befehl play (MCI_PLAY) wird die Wiedergabe eines Geräts gestartet. Ohne Flags beginnt dieser Befehl von der aktuellen Position aus und wird wiedergegeben, bis der Befehl unterbrochen wird oder bis das Ende des Mediums oder der Datei erreicht ist. Nach der Wiedergabe befindet sich die aktuelle Position am Ende des Mediums. Sie können auch den Befehl seek (MCI_SEEK) verwenden, um die aktuelle Position zu ändern.

Die meisten Geräte, die den Wiedergabebefehl unterstützen, unterstützen auch die Flags "from" (MCI_FROM) und "to" (MCI_TO). Diese Flags geben die Position an, an der das Gerät starten und die Wiedergabe beenden soll. Mit dem folgenden Befehl wird beispielsweise eine CD-Audio-Disc vom Anfang des ersten Titels mit der mciSendString-Funktion wiedergegeben:

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

Einige Gerätetypen erweitern diesen Befehl, um die Funktionen eines bestimmten Geräts auszunutzen. Der Wiedergabebefehl für den videodisc-Gerätetyp enthält beispielsweise die Flags "fast" (MCI_VD_PLAY_FAST), "slow" (MCI_VD_PLAY_SLOW) und "scan" (MCI_VD_PLAY_SCAN).

Hinweis

Die dem Positionswert zugewiesenen Einheiten hängen vom vom Gerät verwendeten Zeitformat ab. Jedes Gerät hat ein Standardzeitformat, aber Sie sollten das Zeitformat mithilfe des Befehls set (MCI_SET) angeben, bevor Sie Befehle ausgeben, die Positionswerte verwenden.

 

Wiedergeben einer AVI-Datei

Videodateien in Windows bestehen aus mindestens zwei verschachtelten Datenströmen: einem Videodatenstrom (Bilddatenstrom) und einem Audiostream. Sie können diese AVI-Dateien (Audio-Video-Interleaved) einfach mit MCI-Befehlen wiedergeben. In den folgenden Abschnitten wird die Wiedergabe von AVI-Dateien erläutert.

Einrichten eines MCIAVI-Wiedergabefensters

Ihre Anwendung kann die folgenden Optionen angeben, um das Wiedergabefenster für die Wiedergabe einer AVI-Datei zu definieren:

  • Verwenden Sie das Standard-Popupfenster des MCIAVI-Treibers.
  • Geben Sie ein übergeordnetes Fenster und eine Fensterart an, die der MCIAVI-Treiber zum Erstellen des Wiedergabefensters verwenden kann.
  • Geben Sie ein Wiedergabefenster an, das der MCIAVI-Treiber für die Wiedergabe verwenden soll.
  • Spielen Sie die AVI-Datei auf einer Vollbildanzeige ab.

Wenn Ihre Anwendung keine Fensteroptionen angibt, erstellt der MCIAVI-Treiber ein Standardfenster zum Wiedergeben der Sequenz. Der Treiber erstellt dieses Wiedergabefenster für den befehl öffnen (MCI_OPEN), aber das Fenster wird erst angezeigt, wenn Ihre Anwendung einen Befehl sendet, um entweder das Fenster anzuzeigen oder die Datei wiederzugeben. Bei diesem Standardwiedergabefenster handelt es sich um ein Popupfenster mit einem Größenrahmen, einer Titelleiste, einem dicken Rahmen, einem Fenstermenü und einer Schaltfläche "Minimieren".

Ihre Anwendung kann auch ein übergeordnetes Fensterhandle und eine Fensterart angeben, wenn sie den Befehl öffnen ausgibt . In diesem Fall erstellt der MCIAVI-Treiber ein Fenster basierend auf diesen Spezifikationen anstelle des Standard-Popupfensters. Ihre Anwendung kann eine beliebige Fensterart angeben, die für die CreateWindow-Funktion verfügbar ist. Formatvorlagen, die ein übergeordnetes Fenster erfordern, z. B. WS_CHILD, sollten ein übergeordnetes Fensterhandle enthalten.

Ihre Anwendung kann auch ein eigenes Fenster erstellen und das Handle für den MCIAVI-Treiber bereitstellen, indem Sie den Befehl window (MCI_WINDOW) verwenden. Der MCIAVI-Treiber verwendet dieses Fenster, anstatt ein eigenes zu erstellen.

Wenn der MCIAVI-Treiber das Wiedergabefenster erstellt oder ein Fensterhandle von Ihrer Anwendung abruft, wird das Fenster erst angezeigt, wenn Ihre Anwendung die Sequenz abspielt oder einen Befehl zum Anzeigen des Fensters sendet. Ihre Anwendung kann den Fensterbefehl verwenden, um das Fenster anzuzeigen, ohne die Sequenz abzuspielen. Der folgende Befehl zeigt beispielsweise das Fenster mithilfe von mciSendString an:

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

In diesem Beispiel ist "movie" ein Alias für das Digitalvideogerät.

Ihre Anwendung kann auch eine AVI-Datei im Vollbildmodus wiedergeben. Um den Vollbildmodus wiederzugeben, ändern Sie den Wiedergabebefehl (MCI_PLAY) mit dem Flag "Vollbild" (MCI_MCIAVI_PLAY_FULLSCREEN). Wenn Ihre Anwendung dieses Flag verwendet, verwendet der MCIAVI-Treiber ein Vollbildformat von 320 x 240 Pixel für die Wiedergabe der Sequenz. Der folgende Befehl gibt beispielsweise die geöffnete Datei im Vollbildmodus ab (mit "movie" als Alias):

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

Ändern des Wiedergabezustands für eine AVI-Datei

Ihre Anwendung kann den Befehl seek (MCI_SEEK) verwenden, um die aktuelle Position an den Anfang, das Ende oder eine beliebige Position in einer AVI-Datei zu verschieben. Es gibt zwei Suchmodi für den MCIAVI-Treiber: exakt und ungenau. Ihre Anwendung kann den Suchmodus mithilfe des Befehls set (MCI_SET) ändern. Wenn Sie set "seek exactly on" verwenden, sucht der MCIAVI-Treiber genau nach dem Frame, den Ihre Anwendung angibt. Dies kann zu einer Verzögerung führen, wenn die Datei zeitlich komprimiert ist und Ihre Anwendung keinen Keyframe angibt. Wenn Sie set "seek exactly off" verwenden, sucht der MCIAVI-Treiber den nächstgelegenen Keyframe in einer zeitlich komprimierten Datei.

Mit einigen MCI-Befehlen können Ihre Anwendung die Wiedergabe einer AVI-Datei auf andere Weise ändern. Beispielsweise wird eine AVI-Datei standardmäßig mit normaler Geschwindigkeit wiedergegeben, aber Ihre Anwendung kann diese Geschwindigkeit erhöhen oder verringern, indem sie das Flag "geschwindigkeit" mit dem Befehl set verwendet. Für AVI-Dateien ist ein Geschwindigkeitswert von 1000 typisch. So kann Ihre Anwendung den Befehlssatz "Filmgeschwindigkeit 500" verwenden, um einen Film mit der hälfte der typischen Geschwindigkeit abzuspielen. alternativ kann die Einstellung "Filmgeschwindigkeit 2000" verwendet werden, um die Sequenz mit doppelter normaler Geschwindigkeit wiederzugeben.

Mit dem Befehl setaudio (MCI_SETAUDIO) kann Ihre Anwendung den Audioteil einer AVI-Datei steuern. Ihre Anwendung kann Audio während der Wiedergabe stummschalten oder bei mehreren Audiostreamdateien den wiedergegebenen Audiostream auswählen.

Der MCIAVI-Treiber verfügt über ein Dialogfeld zum Steuern einiger Wiedergabeoptionen. Zu den Optionen, die dem Benutzer zur Verfügung stehen, gehören die Auswahl einer fensterorientierten oder vollbildbasierten Wiedergabe, das Auswählen des Suchmodus und das Zoomen des Bilds. Für Ihre Anwendung kann MCIAVI dieses Dialogfeld mithilfe des Befehls configure (MCI_CONFIGURE) anzeigen.

Streamhandler

Die Daten in einer AVI-Datei werden als eine Reihe von Datenströmen behandelt. Eine AVI-Datei enthält in der Regel einen Audio- und Videostream, und möglicherweise gibt es auch einen benutzerdefinierten Stream, der Text oder andere benutzerdefinierte Daten enthält. Der MCIAVI-Treiber kann verschiedene Handler für diese Datenströme verwenden. Weitere Informationen zu benutzerdefinierten AVI-Dateien finden Sie unter Benutzerdefinierte Datei- und Streamhandler.