Condividi tramite


Come trovare la durata di un file multimediale

Per trovare la durata di un file multimediale, seguire questa procedura:

  1. Usare il sistema di risoluzione di origine per creare un'origine multimediale in grado di analizzare il file multimediale.
  2. Chiamare IMFMediaSource::CreatePresentationDescriptor nell'origine multimediale. Questo metodo restituisce il descrittore di presentazione che descrive il contenuto del file multimediale.
  3. Eseguire una query sul descrittore di presentazione per l'attributo MF_PD_DURATION chiamando il metodo IMFAttributes::GetUINT64 . Il valore dell'attributo, se presente, è la durata del file in unità di 100 nanosecondi.
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;
}

Riproduzione di audio/video