다음을 통해 공유


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

미디어 파운데이션 인터페이스