Freigeben über


MFCreateASFStreamingMediaSink-Funktion (wmcontainer.h)

Erstellt ein Aktivierungsobjekt für die ASF-Streamingsenke.

Die ASF-Streamingsenke ermöglicht es einer Anwendung, Streamingpakete im Advanced Systems Format (ASF) in einen HTTP-Bytestream zu schreiben.

Syntax

HRESULT MFCreateASFStreamingMediaSink(
  IMFByteStream *pIByteStream,
  IMFMediaSink  **ppIMediaSink
);

Parameter

pIByteStream

Ein Zeiger auf ein Bytestreamobjekt, in das die ASF-Mediensenke den gestreamten Inhalt schreibt.

ppIMediaSink

Empfängt einen Zeiger auf die IMFMediaSink-Schnittstelle des ASF-Streaming-Mediensenkenobjekts. Zum Erstellen der Mediensenke muss die Anwendung IMFActivate::ActivateObject auf dem empfangenen Zeiger aufrufen. Der Aufrufer muss den Schnittstellenzeiger freigeben.

Rückgabewert

Wenn diese Funktion erfolgreich ist, gibt sie S_OK zurück. Andernfalls wird ein Fehlercode HRESULT zurückgegeben.

Hinweise

Um die ASF-Streamingsenke in einem anderen Prozess zu erstellen, rufen Sie MFCreateASFStreamingMediaSinkActivate auf.

Eine Anwendung kann einen Zeiger auf das ASF ContentInfo-Objekt abrufen, indem sie IUnknown::QueryInterface für das Mediensenkenobjekt aufruft, das im ppIMediaSink-Parameter empfangen wird. Das ContentInfo-Objekt wird verwendet, um die Encoderkonfigurationseinstellungen festzulegen, Streameigenschaften bereitzustellen, die von einem ASF-Profil bereitgestellt werden, und Metadateninformationen hinzuzufügen. Diese Konfigurationseinstellungen füllen die verschiedenen ASF-Headerobjekte der codierten ASF-Datei auf. Weitere Informationen finden Sie unter
Festlegen von Eigenschaften im ContentInfo-Objekt.

Beispiele

Das folgende Codebeispiel zeigt, wie Sie eine Mediensenke für eine ASF-Quelle erstellen. In diesem Beispiel werden die Streamkonfigurationseinstellungen aus der Quelle in das ContentInfo-Objekt kopiert, das das ASF-Headerobjekt der Ausgabedatei darstellt.

//  Creates an an instance of the ASF streaming sink.

HRESULT CreateASFStreamingSink(
    IMFMediaSource *pSource, 
    IMFByteStream  *pOutputByteStream, 
    IMFMediaSink   **ppMediaSink
    )
{
    IMFPresentationDescriptor* pSourcePD = NULL;
    IMFASFProfile* pASFProfile = NULL;;
    IMFMediaSink* pMediaSink = NULL;
    IMFASFContentInfo* pASFContentInfo = NULL;

    // Create the streaming media sink for the ASF file
    HRESULT hr = MFCreateASFStreamingMediaSink(pOutputByteStream, &pMediaSink);
    if (FAILED(hr))
    {
        goto done;
    }

    //
    // Transfer the ASF profile from the media source to the sink.
    //

    // Get the presentation descriptor from the source.
    hr = pSource->CreatePresentationDescriptor(&pSourcePD);
    if (FAILED(hr))
    {
        goto done;
    }

    // Convert the presentation descriptor to an ASF profile.
    hr = MFCreateASFProfileFromPresentationDescriptor(pSourcePD, &pASFProfile);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = pMediaSink->QueryInterface(IID_PPV_ARGS(&pASFContentInfo));
    if (FAILED(hr))
    {
        goto done;
    }

    // Set the profile on the sink.
    hr = pASFContentInfo->SetProfile(pASFProfile);
    if (FAILED(hr))
    {
        goto done;
    }

    *ppMediaSink = pMediaSink;
    (*ppMediaSink)->AddRef();

done:
    SafeRelease(&pSourcePD);
    SafeRelease(&pASFProfile);
    SafeRelease(&pASFContentInfo);
    SafeRelease(&pMediaSink);
    return hr;
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile wmcontainer.h
Bibliothek Mf.lib
DLL Mf.dll

Weitere Informationen

MFCreateASFStreamingMediaSinkActivate

Media Foundation-Funktionen