次の方法で共有


ファイル クリップを再生する方法

[このページに関連付けられている機能である MFPlay はレガシ機能です。 これは MediaPlayer および IMFMediaEngine に置き換えられました。 これらの機能は、Windows 10 および Windows 11 用に最適化されています。 Microsoftでは、新しいコードで可能な限り DirectShow ではなく MediaPlayerIMFMediaEngine を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存コードを、新しい API を使用するように可能であれば書き直すことを提案しています。]

このトピックでは、再生の開始時間と停止時間を設定して、MFPlay でメディア ファイルのセグメントを再生する方法について説明します。

ファイル クリップを再生するには

  1. IMFPMediaPlayer::CreateMediaItemFromURL または IMFPMediaPlayer::CreateMediaItemFromObject を呼び出して、ファイルのメディア項目を作成します。
  2. 必要に応じて、「再生時間を取得する方法」の説明に従って、ファイルの合計時間を取得します。
  3. IMFPMediaItem::SetStartStopPosition を呼び出して、開始時刻と停止時刻を設定します。 停止時間は、ファイル時間を超えてはなりません。
  4. IMFPMediaPlayer::SetMediaItem を呼び出して再生を開始します。

次の例では、CreateMediaItemFromURL のブロッキング バージョンを使用します。 非ブロッキング バージョンを使用する場合は、CreateMediaItemFromURL の後に表示されるコードを MFP_EVENT_TYPE_MEDIAITEM_CREATED イベントのハンドラーに配置する必要があります。 MFPlay のイベントの詳細については、「プレイヤーからのイベントの回復」を参照してください。

ファイルの継続時間を取得するには、「再生時間の取得方法」のトピックに示されている GetPlaybackDuration 関数を呼び出します。

HRESULT PlayMediaClip(
    IMFPMediaPlayer *pPlayer,
    PCWSTR pszURL,
    LONGLONG    hnsStart,
    LONGLONG    hnsEnd
    )
{
    IMFPMediaItem *pItem = NULL;
    PROPVARIANT varStart, varEnd;

    ULONGLONG hnsDuration = 0;

    HRESULT hr = pPlayer->CreateMediaItemFromURL(pszURL, TRUE, 0, &pItem);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = GetPlaybackDuration(pItem, &hnsDuration);
    if (FAILED(hr))
    {
        goto done;
    }

    if ((ULONGLONG)hnsEnd > hnsDuration)
    {
        hnsEnd = hnsDuration;
    }

    hr = InitPropVariantFromInt64(hnsStart, &varStart);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = InitPropVariantFromInt64(hnsEnd, &varEnd);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = pItem->SetStartStopPosition(
        &MFP_POSITIONTYPE_100NS,
        &varStart,
        &MFP_POSITIONTYPE_100NS,
        &varEnd
        );
    if (FAILED(hr))
    {
        goto done;
    }

    hr = pPlayer->SetMediaItem(pItem);

done:
    SafeRelease(&pItem);
    return hr;
}

要件

MFPlay には Windows 7 が必要です。

オーディオとビデオの再生に MFPlay を使用する