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


Получение длительности воспроизведения

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

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

Получение длительности воспроизведения

  1. Вызов МВФPMediaPlayer::CreateMediaItemFromURL или IMFPMediaPlayer::CreateMediaItemFromObject для создания элемента мультимедиа для файла.
  2. Вызов МВФPMediaItem::GetDuration. Укажите MFP_POSITIONTYPE_100NS для первого параметра. Длительность возвращается в виде PROPVARIANT , содержащего значение LARGE_INTEGER . Длительность присваивается в 100-наносекундах.

В следующем примере показан шаг 2.

#include <propvarutil.h>

HRESULT GetPlaybackDuration(IMFPMediaItem *pItem, ULONGLONG *phnsDuration)
{
    PROPVARIANT var;

    HRESULT hr = pItem->GetDuration(MFP_POSITIONTYPE_100NS, &var);

    if (SUCCEEDED(hr))
    {
        hr = PropVariantToUInt64(var, phnsDuration);
        PropVariantClear(&var);
    }

    return hr;
}

Требования

Для MFPlay требуется Windows 7.

Использование MFPlay для воспроизведения звука и видео