Поделиться через


Добавление эффектов аудио или видео

[Функция, связанная с этой страницей MFPlay, является устаревшей функцией. Он был заменен MediaPlayer и МВФMediaEngine. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код MediaPlayer и IMFMediaEngine вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]

В этом разделе описывается использование эффектов аудио и видео с MFPlay.

Чтобы использовать эффект с MFPlay, эффект должен быть реализован как преобразование Media Foundation (MFT). Дополнительные сведения см. в разделе "Преобразования Media Foundation".

Добавление эффекта аудио или видео

  1. Создайте экземпляр MFT, реализующий эффект.
  2. Вызов IMFPMediaPlayer::InsertEffect.

Вызовите InsertEffect перед открытием файла мультимедиа для воспроизведения. MFPlay автоматически определяет, является ли эффект эффектом видео или звуковым эффектом.

Метод InsertEffect также принимает логический параметр, указывающий, является ли эффект необязательным или обязательным. Если MFPlay не может добавить обязательный эффект (например, потому что формат потока несовместим), возникает ошибка воспроизведения. В большинстве случаев лучше задать эффект как необязательный.

MFPlay продолжает использовать эффект для всех последующих воспроизведения. Чтобы удалить эффект, вызовите МВФPMediaPlayer::RemoveEffect или МВФPMediaPlayer::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 для воспроизведения звука и видео