Cómo reproducir un clip de archivo

[MFPlay está disponible para su uso en los sistemas operativos especificados en la sección Requisitos. En versiones posteriores podría modificarse o no estar disponible. ]

En este tema se describe cómo reproducir un segmento de un archivo multimedia en MFPlay estableciendo las horas de inicio y de detenerse para la reproducción.

Para reproducir un clip de archivo

  1. Llame a IMFPMediaPlayer::CreateMediaItemFromURL o APTPMediaPlayer::CreateMediaItemFromObject para crear un elemento multimedia para el archivo.
  2. Opcionalmente, obtenga la duración total del archivo, como se describe en Cómo obtener la duración de reproducción.
  3. Llame a IMFPMediaItem::SetStartStopPosition para establecer las horas de inicio y de detenerse. El tiempo de detenerse no debe superar la duración del archivo.
  4. Llame a IMFPMediaPlayer::SetMediaItem para iniciar la reproducción.

En el ejemplo siguiente se usa la versión de bloqueo de CreateMediaItemFromURL. Si se usa la versión sin bloqueo, el código que aparece después de CreateMediaItemFromURL debe colocarse en el controlador para el evento MEDIAITEM CREATED del tipo de evento _ _ _ MFP _ EVENT TYPE. Para obtener más información sobre los eventos de MFPlay, vea Receiving Events From the Player.

Para obtener la duración del archivo, en este ejemplo se llama a la función que se muestra en el GetPlaybackDuration tema How to Get the Playback Duration.

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

Requisitos

MFPlay requiere Windows 7.

Uso de MFPlay para la reproducción de audio y vídeo