Partager via


Guide pratique pour lire un clip de fichier

[La fonctionnalité associée à cette page, MFPlay, est une fonctionnalité héritée. Elle a été remplacée par MediaPlayer et IMFMediaEngine. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Lorsque cela est possible, Microsoft recommande vivement l'utilisation par le nouveau code de MediaPlayer et IMFMediaEngine au lieu de DirectShow. Microsoft recommande, si possible, la réécriture du code existant qui utilise les API héritées pour être à jour avec les nouvelles API.]

Cette rubrique explique la procédure de lecture d'un segment d’un fichier multimédia dans MFPlay, en définissant les heures de démarrage et d’arrêt pour la lecture.

Procédure de lecture d'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, pour connaître la durée de lecture totale du fichier, reportez-vous à la rubrique « Guide pratique pour 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 la rubrique « Réception d’événements du lecteur ».

Pour obtenir la durée du fichier, cet exemple appelle la GetPlaybackDuration fonction affichée dans la rubrique « Guide pratique pour 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