メディア ファイルの期間を検索する方法

メディア ファイルの期間を確認するには、次の手順を実行します。

  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;
}

オーディオ/ビデオの再生