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


Поиск длительности файла мультимедиа

Чтобы найти продолжительность файла мультимедиа, выполните следующие действия.

  1. Используйте сопоставитель источника для создания источника мультимедиа, который может анализировать файл мультимедиа.
  2. Вызвать IMFMediaSource::CreatePresentationDescriptor в источнике мультимедиа. Этот метод возвращает дескриптор презентации, описывающий содержимое файла мультимедиа.
  3. Запрос дескриптора презентации для атрибута MF_PD_DURATION путем вызова метода IMFAttributes::GetUINT64. Значение атрибута, если оно присутствует, — это длительность файла в 100-наносекундах.
HRESULT GetSourceDuration(IMFMediaSource *pSource, MFTIME *pDuration)
{
    *pDuration = 0;

    IMFPresentationDescriptor *pPD = NULL;

    HRESULT hr = pSource->CreatePresentationDescriptor(&pPD);
    if (SUCCEEDED(hr))
    {
        hr = pPD->GetUINT64(MF_PD_DURATION, (UINT64*)pDuration);
        pPD->Release();
    }
    return hr;
}

воспроизведение звука и видео