Share via


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

こちらもご覧ください

MFCreateASFStreamingMediaSinkActivate

メディア ファンデーション機能