MFCreateASFStreamingMediaSink 関数 (wmcontainer.h)
ASF ストリーミング シンクのアクティブ化オブジェクトを作成します。
ASF ストリーミング シンクを使用すると、アプリケーションはストリーミング Advanced Systems Format (ASF) パケットを HTTP バイト ストリームに書き込みます。
構文
HRESULT MFCreateASFStreamingMediaSink(
IMFByteStream *pIByteStream,
IMFMediaSink **ppIMediaSink
);
パラメーター
pIByteStream
ASF メディア シンクがストリーミング コンテンツを書き込むバイト ストリーム オブジェクトへのポインター。
ppIMediaSink
ASF ストリーミング メディア シンク オブジェクトの IMFMediaSink インターフェイスへのポインターを受け取ります。 メディア シンクを作成するには、アプリケーションで、受信したポインターで IMFActivate::ActivateObject を呼び出す必要があります。 呼び出し元はインターフェイス ポインターを解放する必要があります。
戻り値
この関数が成功すると、 S_OKが返されます。 そうでない場合は、HRESULT エラー コードを返します。
注釈
別のプロセスで ASF ストリーミング シンクを作成するには、 MFCreateASFStreamingMediaSinkActivate を呼び出します。
アプリケーションは、ppIMediaSink パラメーターで受信したメディア シンク オブジェクトで IUnknown::QueryInterface を呼び出すことによって、ASF ContentInfo オブジェクトへのポインターを取得できます。 ContentInfo オブジェクトは、エンコーダー構成設定の設定、ASF プロファイルによって提供されるストリーム プロパティの提供、メタデータ情報の追加に使用されます。 これらの構成設定により、エンコードされた ASF ファイルのさまざまな ASF ヘッダー オブジェクトが設定されます。 詳細については、「
ContentInfo オブジェクトのプロパティを設定します。
例
次のコード例は、ASF ソースのメディア シンクを作成する方法を示しています。 次の使用例は、ソースから出力ファイルの ASF ヘッダー オブジェクトを表す ContentInfo オブジェクトにストリーム構成設定をコピーします。
// 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;
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 7 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 R2 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | wmcontainer.h |
Library | Mf.lib |
[DLL] | Mf.dll |