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 die Start- und Stoppzeiten für die Wiedergabe festgelegt werden.

So geben Sie einen Dateiclip wieder

  1. Rufen Sie IMFPMediaPlayer::CreateMediaItemFromURL oder IMFPMediaPlayer::CreateMediaItemFromObject auf, um ein Medienelement für die Datei zu erstellen.
  2. Optional können Sie die Gesamtdauer der Datei abrufen, wie unter Abrufen der Wiedergabedauer beschrieben.
  3. Rufen Sie IMFPMediaItem::SetStartStopPosition auf, um die Start- und Stoppzeiten festzulegen. Die Beendigungszeit darf die Dateidauer nicht überschreiten.
  4. Rufen Sie IMFPMediaPlayer::SetMediaItem auf, um die Wiedergabe zu starten.

Im folgenden Beispiel wird die blockierende Version von CreateMediaItemFromURL verwendet. Wenn die nicht blockierende Version verwendet wird, sollte der Code, der nach CreateMediaItemFromURL angezeigt wird, 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 vom Player.

Um die Dateidauer abzurufen, ruft dieses Beispiel die GetPlaybackDuration Funktion auf, die im Thema Abrufen der Wiedergabedauer gezeigt 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;
}

Anforderungen

MFPlay erfordert Windows 7.

Verwenden von MFPlay für die Audio-/Videowiedergabe