So wird's angezeigt: Wiedergeben eines Dateiclips

[MFPlay ist für die Verwendung in den im Abschnitt "Anforderungen" angegebenen Betriebssystemen verfügbar. Es kann in nachfolgenden Versionen geändert oder entfernt werden. ]

In diesem Thema wird beschrieben, wie ein Segment einer Mediendatei in MFPlay wiedergegeben wird, indem Sie die Start- und Stoppzeiten für die Wiedergabe festlegen.

So wiedergeben eines Dateiclips

  1. Rufen Sie IMFPMediaPlayer::CreateMediaItemFromURL oder IMFPMediaPlayer::CreateMediaItemFromObject auf, um ein Medienelement für die Datei zu erstellen.
  2. Rufen Sie optional die Gesamtdauer der Datei ab, wie in der Vorgehensweise zum Abrufen der Wiedergabedauer beschrieben.
  3. Rufen Sie IMFPMediaItem::SetStartStopPosition auf, um die Start- und Stoppzeiten festzulegen. Die Stoppzeit darf die Dateidauer nicht überschreiten.
  4. Rufen Sie IMFPMediaPlayer::SetMediaItem auf, um die Wiedergabe zu starten.

Im folgenden Beispiel wird die Blockierungsversion von CreateMediaItemFromURL verwendet. Wenn die nicht blockierende Version verwendet wird, sollte der nach CreateMediaItemFromURL angezeigte Code im Handler für das MFP_EVENT_TYPE_MEDIAITEM_CREATED-Ereignis platziert werden. Weitere Informationen zu Ereignissen in MFPlay finden Sie unter Empfangen von Ereignissen aus dem Player.

Um die Dateidauer abzurufen, ruft in diesem Beispiel die Funktion auf, die GetPlaybackDuration im Thema How to Get the Wiedergabe Duration angezeigt wird.

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

Requirements (Anforderungen)

MFPlay erfordert Windows 7.

Verwenden von MFPlay für Audio/Videowiedergabe