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 |