次の方法で共有


IMFTranscodeSinkInfoProvider インターフェイス (mfidl.h)

トランスコード シンク アクティブ化オブジェクトによって実装されます。

トランスコード シンク アクティブ化オブジェクトを使用して、次のいずれかのファイル シンクを作成できます。

  • 3GP ファイル シンク
  • MP3 ファイル シンク
  • MP4 ファイル シンク

継承

IMFTranscodeSinkInfoProvider インターフェイスは、IUnknown インターフェイスから継承されます。 IMFTranscodeSinkInfoProvider には、次の種類のメンバーもあります。

メソッド

IMFTranscodeSinkInfoProvider インターフェイスには、これらのメソッドがあります。

 
IMFTranscodeSinkInfoProvider::GetSinkInfo

トランスコード プロファイルで指定されたオーディオ ストリームとビデオ ストリームのメディアの種類を取得します。
IMFTranscodeSinkInfoProvider::SetOutputByteStream

トランスコード メディア シンクの出力バイト ストリームを設定します。
IMFTranscodeSinkInfoProvider::SetOutputFile

エンコードされた出力ファイルの名前を設定します。
IMFTranscodeSinkInfoProvider::SetProfile

トランスコード シンクアクティブ化オブジェクトのトランスコーディング プロファイルを設定します。

注釈

このインターフェイスを使用するには、次の手順を実行します。

  1. MFCreateTranscodeSinkActivate を呼び出して、トランスコード シンク アクティブ化オブジェクトを作成します。
  2. IMFTranscodeSinkInfoProvider インターフェイスのアクティブ化オブジェクトに対してクエリを実行します。
  3. MFCreateTranscodeProfile を呼び出して、トランスコード プロファイルを作成します。
  4. トランスコード プロファイルに MF_TRANSCODE_CONTAINERTYPE 属性を設定します。 属性には、次のいずれかの値が必要です。
    • MFTranscodeContainerType_3GP
    • MFTranscodeContainerType_MP3
    • MFTranscodeContainerType_MPEG4
  5. IMFTranscodeProfile::SetVideoAttributesIMFTranscodeProfile::SetAudioAttributes を呼び出して、ビデオとオーディオの形式を指定します。
  6. IMFTranscodeSinkInfoProvider::SetProfile を呼び出して、トランスコード プロファイルを設定します。
  7. 出力ファイルを指定するには、次のいずれかのメソッド (両方は呼び出しません) を呼び出します。
  8. アクティブ化オブジェクトで IMFActivate::ActivateObject を呼び出して、メディア シンクを作成します。

// Creates an activation object for the generic transcode sink.

HRESULT CreateTranscodeSinkActivate(
    REFGUID         guidContainerType,
    IMFAttributes   *pVideoAttributes,
    IMFAttributes   *pAudioAttributes,
    IMFActivate     *pByteStreamActivate, 
    IMFActivate     **ppSinkActivate
    )
{
    IMFActivate* pSinkActivate = NULL;
    IMFTranscodeSinkInfoProvider* pSinkInfoProvider = NULL;
    IMFTranscodeProfile* pProfile = NULL;
    IMFAttributes* pContainerAttributes = NULL;

    HRESULT hr = MFCreateAttributes(&pContainerAttributes, 1);
    if (FAILED(hr))
    {
        goto done;
    }

    // Create the transcode profile.
    hr = MFCreateTranscodeProfile(&pProfile);
    if (FAILED(hr))
    {
        goto done;
    }

    // Set the profile attributes.

    hr = pContainerAttributes->SetGUID(MF_TRANSCODE_CONTAINERTYPE, guidContainerType);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = pProfile->SetContainerAttributes(pContainerAttributes);
    if (FAILED(hr))
    {
        goto done;
    }

    if (pVideoAttributes)
    {
        hr = pProfile->SetVideoAttributes(pVideoAttributes);
        if (FAILED(hr))
        {
            goto done;
        }
    }

    if (pAudioAttributes)
    {
        hr = pProfile->SetAudioAttributes(pAudioAttributes);
        if (FAILED(hr))
        {
            goto done;
        }
    }

    // Create the transcode sink activation object.
    hr = MFCreateTranscodeSinkActivate(&pSinkActivate);
    if (FAILED(hr))
    {
        goto done;
    }

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

    // Set the output byte stream.
    hr = pSinkInfoProvider->SetOutputByteStream(pByteStreamActivate);
    if (FAILED(hr))
    {
        goto done;
    }

    // Set the transcode profile.
    hr = pSinkInfoProvider->SetProfile(pProfile);
    if (FAILED(hr))
    {
        goto done;
    }

    // Return the activation object to the caller.
    *ppSinkActivate = pSinkActivate;
    (*ppSinkActivate)->AddRef();

done:
    SafeRelease(&pProfile);
    SafeRelease(&pSinkInfoProvider);
    SafeRelease(&pSinkActivate);
    SafeRelease(&pContainerAttributes);
    return hr;
}

要件

要件
サポートされている最小のクライアント Windows 7 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 R2 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー mfidl.h

こちらもご覧ください

MFCreateTranscodeSinkActivate

メディア ファンデーション インターフェイス