如何查找媒体文件的持续时间

若要查找媒体文件的持续时间,请执行以下步骤:

  1. 使用 源解析程序 创建可以分析媒体文件的媒体源。
  2. 在媒体源上调用 IMFMediaSource::CreatePresentationDescriptor 。 此方法返回描述媒体文件内容的演示文稿描述符。
  3. 通过调用 IMFAttributes::GetUINT64 方法查询 MF_PD_DURATION 属性的表示描述符。 属性的值(如果存在)是文件持续时间(以 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;
}

音频/视频播放