Compartilhar via


Como adicionar efeitos de áudio ou vídeo

[O recurso associado a esta página, MFPlay, é um recurso herdado. Foi substituído pelo MediaPlayer e IMFMediaEngine. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda enfaticamente que o novo código use o MediaPlayer and IMFMediaEngine em vez de DirectShow quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito, se possível, para usar as novas APIs.

Este tópico descreve como usar efeitos de áudio/vídeo com o MFPlay.

Para usar um efeito com MFPlay, o efeito deve ser implementado como uma MFT (transformação do Media Foundation). Para obter mais informações, confira Transformações do Media Foundation.

Para adicionar um efeito de áudio ou vídeo

  1. Crie uma instância do MFT que implemente o efeito.
  2. Chame IMFPMediaPlayer::InsertEffect.

Chame InsertEffect antes de abrir o arquivo de mídia para reprodução. O MFPlay determina automaticamente se o efeito é de vídeo ou de áudio.

O método InsertEffect também usa um parâmetro booliano que especifica se o efeito é opcional ou obrigatório. Se o MFPlay não puder adicionar um efeito necessário (por exemplo, porque o formato do fluxo é incompatível), ocorrerá um erro de reprodução. Na maioria dos casos, é melhor definir um efeito como opcional.

O MFPlay continua usando o efeito para todas as reproduções subsequentes. Para remover o efeito, chame IMFPMediaPlayer::RemoveEffect ou 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;
}

Requisitos

A MFPlay requer o Windows 7.

Usar a MFPlay para reprodução de áudio/vídeo