Erstellen eines ASF-Profils

In diesem Thema wird beschrieben, wie Sie ein ASF-Profil in Microsoft Media Foundation.

Erstellen eines neuen Profils

Um ein leeres ASF-Profil zu erstellen, rufen Sie die MFCreateASFProfile-Funktion auf. Diese Funktion gibt einen Zeiger auf die IMFASFProfile-Schnittstelle zurück. Die Anwendung kann diese Schnittstelle verwenden, um dem Profil Streams hinzuzufügen und die einzelnen Streams zu konfigurieren. Weitere Informationen finden Sie unter Erstellen und Konfigurieren von ASF-Streams.

Optional kann die Anwendung zwei oder mehr Streams Objekte für gegenseitigen Ausschluss hinzufügen. Weitere Informationen finden Sie unter Using Mutual Exclusion for ASF Streams.

Das Profil aus dem ASF ContentInfo-Objekt

Eine Anwendung kann das ASF-Profil einer vorhandenen ASF-Datei aus dem ASF ContentInfo-Objekt erhalten. Das Profil ist bereits konfiguriert und enthält Einstellungen für alle Streams in der Datei.

Initialisieren Sie das ContentInfo-Objekt durch Analyse des ASF-Headerobjekts der Datei. Dies erfolgt über die IMFASFContentInfo::P arseHeader-Methode. Nachdem alle Headerobjekte gelesen und die ASF-Bibliothek aufgefüllt wurde, wird das Profil für diese Datei generiert. Die Anwendung kann einen Zeiger auf dieses initialisierte Profil erhalten, indem sie IMFASFContentInfo::GetProfile aufruft.

Get the Profile from a Presentation Descriptor

Sie können das Profilobjekt einer vorhandenen ASF-Datei aus dem Präsentationsdeskriptor für die Datei oder aus dem ASF ContentInfo-Objekt erhalten. In diesem Fall ist das Profil bereits konfiguriert und enthält Einstellungen für alle Streams in der Datei. Dies kann nützlich sein, wenn Sie ein vorhandenes ASF-Profil ändern möchten. Beispielsweise können Sie eine Medienvideodatei mit einer niedrigeren Bitrate Windows codieren.

Rufen Sie MFCreateASFProfileFromPresentationDescriptorauf, um das Profil aus dem Präsentationsdeskriptor zu erhalten. Diese Funktion analysiert den Präsentationsdeskriptor und füllt ein ASF-Profil mit Informationen zur Mediendatei auf. Die Funktion gibt einen Zeiger auf die IMFASFProfile-Schnittstelle zurück. Sie können diese Schnittstelle dann verwenden, um das Profil zu ändern.

Rufen Sie eine der folgenden Methoden auf, um den Präsentationsdeskriptor zu erhalten:

Das folgende Beispiel zeigt, wie Sie ein Profil aus einem Präsentationsdeskriptor erstellen. Die Funktion erstellt eine Medienquelle für die Datei, ruft den Präsentationsdeskriptor aus der Medienquelle ab und erstellt ein Profil. In diesem Beispiel wird davon ausgegangen, dass pszFileName die URL einer ASF-Datei angibt.

HRESULT GetASFProfile(PCWSTR pszFileName, IMFASFProfile** ppProfile)
{
    *ppProfile = NULL;

    IMFSourceResolver* pResolver = NULL;
    IUnknown* pSourceUnk = NULL;
    IMFMediaSource* pSource = NULL;
    IMFPresentationDescriptor* pPD = NULL;

    // Create the source resolver.
    HRESULT hr = MFCreateSourceResolver(&pResolver);

    // Use the source resolver to create the media source.
    if (SUCCEEDED(hr))
    {
        MF_OBJECT_TYPE ObjectType;

        hr = pResolver->CreateObjectFromURL(
                pszFileName,
                MF_RESOLUTION_MEDIASOURCE, 
                NULL,                      
                &ObjectType,               
                &pSourceUnk   
            );
    }

    // Get the IMFMediaSource interface from the media source.
    if (SUCCEEDED(hr))
    {
        hr = pSourceUnk->QueryInterface(IID_PPV_ARGS(&pSource));
    }

    // Get the presentation desccriptor.
    if (SUCCEEDED(hr))
    {
        hr = pSource->CreatePresentationDescriptor(&pPD);
    }

    // Get the profile from the presentation descriptor.
    if (SUCCEEDED(hr))
    {
        hr = MFCreateASFProfileFromPresentationDescriptor(pPD, ppProfile);
    }

    SafeRelease(&pResolver);
    SafeRelease(&pSourceUnk);
    SafeRelease(&pSource);
    SafeRelease(&pPD);
    return hr;
}

In diesem Beispiel wird SafeRelease verwendet, um Schnittstellenzeigende frei zu geben.

ASF-Profil