Compartilhar via


Como localizar a duração de um arquivo de mídia

Para localizar a duração de um arquivo de mídia, execute as seguintes etapas:

  1. Use o Resolvedor de Origem para criar uma fonte de mídia que possa analisar o arquivo de mídia.
  2. Chame IMFMediaSource::CreatePresentationDescriptor na fonte de mídia. Esse método retorna o descritor de apresentação que descreve o conteúdo do arquivo de mídia.
  3. Consulte o descritor de apresentação para o atributo MF_PD_DURATION chamando o método IMFAttributes::GetUINT64 . O valor do atributo, se presente, é a duração do arquivo em unidades de 100 nanossegundos.
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;
}

Reprodução de áudio/vídeo