Freigeben über


Schreiben einer Windows Media-Datei in DES

[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.]

In diesem Abschnitt wird beschrieben, wie Sie eine Windows Media-Datei mithilfe von DirectShow Editing Services (DES) schreiben.

Wichtig

Verwenden Sie nicht die Smart Render Engine, um Windows Media-Dateien zu schreiben. Verwenden Sie immer die Basic Render Engine (CLSID_RenderEngine).

 

Gehen Sie wie folgt vor, um eine Windows Media-Datei zu schreiben:

  1. Rufen Sie SetSite in der Render-Engine mit einem Zeiger auf Ihren Schlüsselanbieter auf.

  2. Erstellen Sie das Front-End des Diagramms. (Siehe Rendern eines Projekts.)

  3. Erstellen Sie den WM ASF Writer-Filter , und fügen Sie ihn dem Diagramm hinzu.

  4. Verwenden Sie die IFileSinkFilter-Schnittstelle im WM ASF Writer-Filter, um den Dateinamen festzulegen.

  5. Konfigurieren Sie den WM ASF Writer für die Verwendung eines Windows Media-Profils. Jedes Profil verfügt über eine vordefinierte Anzahl von Streams. Sie müssen ein Profil auswählen, das den Gruppen in Ihrem Projekt entspricht.

    Die IConfigAsfWriter-Schnittstelle enthält einige verschiedene Methoden zum Festlegen des Profils. Beispielsweise gibt die ConfigureFilterUsingProfileGuid-Methode ein Systemprofil als GUID an. Alternativ können Sie windows Media Format-Methoden verwenden, um einen IWMProfile-Zeiger abzurufen und dann IConfigAsfWriter::ConfigureFilterUsingProfile aufzurufen. Weitere Informationen finden Sie unter Konfigurieren des ASF Writer.

  6. Verbinden Sie das Front-End mit dem ASF Writer. Das Front-End des Diagramms enthält einen Ausgabestift für jede Gruppe. Angenommen, Sie haben ein kompatibles Profil angegeben, sollte der ASF Writer über einen übereinstimmenden Satz von Eingabenadeln verfügen. Verbinden Sie jeden Ausgabestift mit dem entsprechenden Eingabenadel. Die einfachste Möglichkeit ist die Verwendung der ICaptureGraphBuilder2::RenderStream-Methode . Erstellen Sie zunächst eine neue instance des Capture Graph Builder, und initialisieren Sie ihn mit einem Zeiger auf den Filter Graph Manager:

    ICaptureGraphBuilder2 *pBuild = 0;
    hr = CoCreateInstance(CLSID_CaptureGraphBuilder2, 0, CLSCTX_INPROC_SERVER,
        IID_ICaptureGraphBuilder2, (void**)&pBuild);
    pBuild->SetFiltergraph(pGraph); 
    

    Rufen Sie als Nächstes den Ausgabepin für jede Gruppe ab, indem Sie die IRenderEngine::GetGroupOutputPin-Methode aufrufen. Rufen Sie RenderStream auf, um den Pin mit dem ASF Writer zu verbinden:

    long cGroups = 0;
    hr = pTimeline->GetGroupCount(&cGroups);
    for (long i = 0; i < cGroups; i++)
    {
        IPin *pPin;
        hr = pRenderEngine->GetGroupOutputPin(i, &pPin);
        if (SUCCEEDED(hr))
        {
            hr = pBuild->RenderStream(0, 0, pPin, 0, pASF);
        }
        pPin->Release();
    }
    pBuild->Release
    

Verwenden von Windows Media mit DirectShow Editing Services