Condividi tramite


Come riprodurre un clip di file

[La funzionalità associata a questa pagina, MFPlay, è una funzionalità legacy. È stato sostituito da MediaPlayer e IMFMediaEngine. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer e IMFMediaEngine invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

In questo argomento viene descritto come riprodurre un segmento di un file multimediale in MFPlay impostando gli orari di inizio e 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 di riproduzione.
  3. Chiamare IMFPMediaItem::SetStartStopPosition per impostare gli orari di inizio e arresto. Il tempo 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 di 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