Compartir a través de


Cómo reproducir un clip de archivo

[La característica asociada con esta página, MFPlay, es una característica heredada. Se ha reemplazado por MediaPlayer y IMFMediaEngine. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda que el nuevo código use MediaPlayer y IMFMediaEngine en vez de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible].

En este tema se explica cómo reproducir un segmento de un archivo multimedia en MFPlay estableciendo el momento de inicio y detención de la reproducción.

Cómo reproducir un clip de archivo

  1. Llame a IMFPMediaPlayer::CreateMediaItemFromURL o IMFPMediaPlayer::CreateMediaItemFromObject para crear un elemento multimedia para el archivo.
  2. Opcionalmente, puede obtener la duración total del archivo, tal como se describe en Cómo obtener la duración de la reproducción.
  3. Llame a IMFPMediaItem::SetStartStopPosition para fijar el momento 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 del evento MFP_EVENT_TYPE_MEDIAITEM_CREATED. Para obtener más información sobre los eventos en MFPlay, consulte Recibir eventos del reproductor.

Para obtener la duración del archivo, en este ejemplo se llama a la función GetPlaybackDuration que aparece en el tema Cómo obtener la duración de 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 reproducción de audio y vídeo