다음을 통해 공유


오디오 또는 비디오 효과를 추가하는 방법

[이 페이지와 연결된 기능인 MFPlay는 레거시 기능입니다. 그것은 MediaPlayerIMFMediaEngine에 의해 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11에 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayerIMFMediaEngine을 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용한 기존 코드를 다시 작성하여 새 API를 사용하는 것을 추천합니다.]

이 항목에서는 MFPlay에서 오디오/비디오 효과를 사용하는 방법을 설명합니다.

MFPlay에서 효과를 사용하려면 이 효과를 MFT(Media Foundation 변환)로 구현해야 합니다. 자세한 내용은 Media Foundation 변환을 참조 하세요.

오디오 또는 비디오 효과를 추가하려면

  1. 효과를 구현하는 MFT 인스턴스를 만듭니다.
  2. IMFPMediaPlayer::InsertEffect를 호출합니다.

재생을 위해 미디어 파일을 열기 전에 InsertEffect를 호출합니다. MFPlay는 효과가 비디오 효과인지 오디오 효과인지를 자동으로 결정합니다.

InsertEffect 메서드는 효과가 선택 사항인지 필수인지 여부를 지정하는 부울 매개 변수도 사용합니다. MFPlay에서 필요한 효과를 추가할 수 없는 경우(예: 스트림 형식이 호환되지 않으므로) 재생 오류가 발생합니다. 대부분의 경우 효과를 선택 사항으로 설정하는 것이 좋습니다.

MFPlay는 모든 후속 재생에 대한 효과를 계속 사용합니다. 효과를 제거하려면 IMFPMediaPlayer::RemoveEffect 또는 IMFPMediaPlayer::RemoveAllEffects를 호출합니다.

HRESULT AddPlaybackEffect(REFGUID clsid, IMFPMediaPlayer *pPlayer)
{
    IMFTransform *pMFT = NULL;

    HRESULT hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, 
        IID_PPV_ARGS(&pMFT));

    if (SUCCEEDED(hr))
    {
        hr = pPlayer->InsertEffect(pMFT, TRUE); // Set as optional.
    }

    SafeRelease(&pMFT);
    return hr;
}

요구 사항

MFPlay에는 Windows 7이 필요합니다.

오디오/비디오 재생에 MFPlay 사용