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 detención para la reproducción.

Para reproducir un clip de archivo

  1. Llame a IMFPMediaPlayer::CreateMediaItemFromURL o IMFPMediaPlayer::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 la reproducción.
  3. Llame a IMFPMediaItem::SetStartStopPosition para establecer las horas de inicio y detención. El tiempo de detención 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 MFP_EVENT_TYPE_MEDIAITEM_CREATED . Para obtener más información sobre los eventos en MFPlay, consulte Recepción de eventos del reproductor.

Para obtener la duración del archivo, en este ejemplo se llama a la GetPlaybackDuration función que se muestra en el tema Cómo obtener la duración de la reproducción.

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