Verwenden der Aktivierungsobjekte eines Encoders

Zum Konvertieren von Mediendateien in das ASF-Format können Sie Windows Media-Encoder verwenden. Um diese Encoder verwenden zu können, müssen sie beim System registriert werden.

Informationen zur Encoderregistrierung finden Sie unter Instanziieren eines Encoder-MFT.

Verwenden der Aktivierungsobjekte eines Encoders

Alternativ zur Verwendung der IMFTransform-Schnittstelle eines Encoders (beschrieben unter Erstellen eines Encoders mithilfe von CoCreateInstance) können Sie eine instance des Aktivierungsobjekts für den Encoder erstellen. Aktivierungsobjekte erleichtern die Encodererstellung, und Media Foundation bietet die folgenden zwei Funktionen für diesen Ansatz:

Beide Funktionen erfordern, dass Sie den Zielmedientyp erstellen und die Codierungseigenschaften festlegen, bevor Sie diese Funktionen aufrufen. Wenn Ihre Anwendung pipeline layer ASF Components verwendet, um eine Datei im ASF-Format zu codieren und die ASF-Mediensenken bereits erstellt und konfiguriert hat, können Sie diesen Satz von Informationen aus der ASF-Mediensenke abrufen.

MFCreateWMAEncoderActivate und MFCreateWMVEncoderActivate legen den Ausgabetyp des Encoders auf den von der Anwendung angegebenen Medientyp fest.

Hinweis Wenn Sie MFCreateWMAEncoderActivate und MFCreateWMVEncoderActivate verwenden, können Sie den Encoder durch Aufrufen von IMFActivate::ActivateObject aktivieren, aber Sie können weder die Eingabe- und Ausgabemedientypen des Encoders ändern noch können Sie die Codierungseigenschaften ändern.

Weitere Informationen zum Erstellen von Media Foundation-Objekten mithilfe von Aktivierungsobjekten finden Sie unter Aktivierungsobjekte.

So rufen Sie den Zielmedientyp aus der ASF-Mediensenke ab

  1. Rufen Sie einen Zeiger auf den IMFASFContentInfo-Zeiger der ASF-Mediensenke ab, indem Sie IMFMediaSink::QueryInterface für die ASF-Mediensenke aufrufen und IID_IMFASFContentInfo als Schnittstellenbezeichner übergeben.
  2. Rufen Sie das ASF-Profilobjekt ab, das dem ContentInfo-Objekt zugeordnet ist.
  3. Enumerieren Sie die Streams im Profil, um den Medientyp des Datenstroms abzurufen.

So rufen Sie die Codierungseigenschaften aus der ASF-Mediensenke ab

  1. Wenn Sie die Codierungseigenschaften in der Mediensenke konfiguriert haben (beschrieben unter Festlegen von Eigenschaften in der Dateisenke), können Sie einen Verweis auf den Eigenschaftenspeicher der Senke ausführen, indem Sie IMFMediaSink::QueryInterface für die ASF-Mediensenke aufrufen und IID_IPropertyStore als Schnittstellenbezeichner übergeben.

  2. Wenn Sie über einen Zeiger auf das ContentInfo-Objekt der Senke verfügen, können Sie IMFASFContentInfo::GetEncodingConfigurationPropertyStore aufrufen, um einen Verweis auf den Eigenschaftenspeicher der Mediensenke abzurufen.

    Stellen Sie sicher, dass alle Codierungseigenschaften, die für die ASF-Mediensenke festgelegt sind, im Eigenschaftenspeicher widergespiegelt werden, der an MFCreateWMAEncoderActivate und MFCreateWMVEncoderActivate übergeben wird. Der Encoder wird automatisch basierend auf den von der Anwendung angegebenen Einstellungen konfiguriert.

Beim Erstellen des Transformationsknotens in der Codierungstopologie können Sie den Objekttyp als IMFActivate-Zeiger festlegen, der in diesen beiden Aufrufen empfangen wird. Wenn die Topologie aufgelöst wird, verwendet die Mediensitzung das Aktivierungsobjekt, um eine instance des Encoder-MFT zu erstellen.

Encoderenumeration in Windows 7 und höher

Für Anwendungen, die unter Windows 7 ausgeführt werden, können Sie zusätzlich zu MFTEnum die Encoder-MFTs aufzählen, indem Sie MFTEnumEx aufrufen. Diese Funktion gibt einen Zeiger auf das Aktivierungsobjekt des Encoder-MFT zurück. Die Struktur der Funktion ist der oben beschriebenen MFTEnum sehr ähnlich, mit dem Unterschied , dass MFTEnumExein Array von IMFActivate-Zeigern für die Encoder-MFTs zurückgibt, die den Suchkriterien entsprechen.

Instanziieren eines Encoders MFT

Windows Media Encoder

Aktivierungsobjekte