Comment lire un clip de fichier

[MFPlay est disponible pour une utilisation dans les systèmes d’exploitation spécifiés dans la section Configuration requise. Il sera peut-être modifié ou indisponible dans les versions ultérieures. ]

Cette rubrique explique comment lire un segment d’un fichier multimédia dans MFPlay, en définissant les heures de début et d’arrêt pour la lecture.

Pour lire un clip de fichier

  1. Appelez IMFPMediaPlayer::CreateMediaItemFromURL ou IMFPMediaPlayer::CreateMediaItemFromObject pour créer un élément multimédia pour le fichier.
  2. Si vous le souhaitez, obtenez la durée totale du fichier, comme décrit dans Comment obtenir la durée de lecture.
  3. Appelez IMFPMediaItem::SetStartStopPosition pour définir les heures de début et d’arrêt. L’heure d’arrêt ne doit pas dépasser la durée du fichier.
  4. Appelez IMFPMediaPlayer::SetMediaItem pour démarrer la lecture.

L’exemple suivant utilise la version bloquante de CreateMediaItemFromURL. Si la version non bloquante est utilisée, le code qui apparaît après CreateMediaItemFromURL doit être placé dans le gestionnaire pour l’événement MFP_EVENT_TYPE_MEDIAITEM_CREATED . Pour plus d’informations sur les événements dans MFPlay, consultez Réception d’événements du lecteur.

Pour obtenir la durée du fichier, cet exemple appelle la GetPlaybackDuration fonction présentée dans la rubrique Comment obtenir la durée de lecture.

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

Spécifications

MFPlay nécessite Windows 7.

Utilisation de MFPlay pour la lecture audio/vidéo