Condividi tramite


Come riprodurre un clip di file

[MFPlay è disponibile per l'uso nei sistemi operativi specificati nella sezione Requisiti. È possibile che in versioni successive sia stata modificata o non sia più disponibile. ]

Questo argomento descrive come riprodurre un segmento di un file multimediale in MFPlay impostando l'ora di inizio e di arresto per la riproduzione.

Per riprodurre un clip di file

  1. Chiama IMFPMediaPlayer::CreateMediaItemFromURL o IMFPMediaPlayer::CreateMediaItemFromObject per creare un elemento multimediale per il file.
  2. Facoltativamente, ottenere la durata totale del file, come descritto in Come ottenere la durata della riproduzione.
  3. Chiamare IMFPMediaItem::SetStartStopPosition per impostare l'ora di inizio e arresto. L'ora di arresto non deve superare la durata del file.
  4. Chiama IMFPMediaPlayer::SetMediaItem per avviare la riproduzione.

Nell'esempio seguente viene usata la versione di blocco di CreateMediaItemFromURL. Se viene usata la versione non bloccabile, il codice visualizzato dopo CreateMediaItemFromURL deve essere inserito nel gestore per l'evento MFP_EVENT_TYPE_MEDIAITEM_CREATED . Per altre informazioni sugli eventi in MFPlay, vedere Ricezione di eventi dal lettore.

Per ottenere la durata del file, questo esempio chiama la GetPlaybackDuration funzione illustrata nell'argomento Come ottenere la durata della riproduzione.

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

Requisiti

MFPlay richiede Windows 7.

Uso di MFPlay per la riproduzione audio/video