Verwenden des Mediendetektors
[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]
[Diese API wird nicht unterstützt und kann in Zukunft geändert oder nicht mehr verfügbar sein.]
Der Mediendetektor ist ein Hilfsobjekt, das Informationen zu einer Datei abrufen kann, z. B. die Anzahl der Datenströme, ihren Typ und ihre Dauer. Es enthält auch Methoden zum Abrufen von Posterrahmen aus einem Videostream. Es macht die IMediaDet-Schnittstelle verfügbar.
Der Mediendetektor arbeitet in einem von zwei Modi. Wenn Sie eine instance des Mediendetektors erstellen, wird diese nicht an eine bestimmte Quelldatei angefügt. In diesem Modus können Sie Streaminformationen aus mehreren Quelldateien abrufen. Sobald Sie jedoch den Mediendetektor zum Abrufen eines Posterrahmens verwenden, wechselt er in den Bitmap-Grabmodus. Im Bitmap-Grabmodus wird der Mediendetektor an einen bestimmten Videostream angefügt, und die Streaminformationsmethoden funktionieren nicht mehr. Darüber hinaus gibt es keine Möglichkeit, den Mediendetektor wieder in den Startmodus zu schalten. Rufen Sie daher alle Datenstrominformationen ab, die Sie vor dem Abrufen von Posterrahmen benötigen, oder erstellen Sie für jeden Stream neue Instanzen des Mediendetektors.
Gehen Sie wie folgt vor, um Datenstrominformationen abzurufen:
- Rufen Sie IMediaDet::p ut_Filename mit dem Namen der Quelldatei auf.
- Rufen Sie IMediaDet::get_OutputStreams auf, um die Anzahl der Streams in der Quelle abzurufen.
- Geben Sie mit IMediaDet::p ut_CurrentStream eine Streamnummer an. Rufen Sie dann mindestens eine der folgenden Methoden auf:
- IMediaDet::get_StreamType: Ruft den Medientyp des Streams ab.
- IMediaDet::get_StreamLength: Ruft die Dauer des Streams ab.
- IMediaDet::get_FrameRate: Ruft die Bildrate eines Videostreams ab.
Um einen Posterrahmen zu erhalten, geben Sie wie im vorherigen Schritt die Streamnummer an. Rufen Sie dann entweder IMediaDet::GetBitmapBits auf, das einen Posterrahmen in einen Puffer kopiert, oder IMediaDet::WriteBitmapBits, wodurch ein Posterrahmen in einer Datei gespeichert wird.