Ermitteln der Dauer einer Mediendatei

Führen Sie die folgenden Schritte aus, um die Dauer einer Mediendatei zu ermitteln:

  1. Verwenden Sie den Quelllöser , um eine Medienquelle zu erstellen, die die Mediendatei analysieren kann.
  2. Rufen Sie IMFMediaSource::CreatePresentationDescriptor für die Medienquelle auf. Diese Methode gibt einen Präsentationsdeskriptor zurück, der den Inhalt der Mediendatei beschreibt.
  3. Fragen Sie den Präsentationsdeskriptor für das attribut MF_PD_DURATION ab, indem Sie die IMFAttributes::GetUINT64-Methode aufrufen. Der Wert des Attributs, falls vorhanden, ist die Dateidauer in Einheiten von 100 Nanosekunden.
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;
}

Audio-/Videowiedergabe