Bagikan melalui


Cara Memutar Klip File

[Fitur yang terkait dengan halaman ini, MFPlay, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer dan IMFMediaEngine. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer dan IMFMediaEngine alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Topik ini menjelaskan cara memutar segmen file media di MFPlay, dengan mengatur waktu mulai dan berhenti untuk pemutaran.

Untuk Memutar Klip File

  1. Panggil IMFPMediaPlayer::CreateMediaItemFromURL atau IMFPMediaPlayer::CreateMediaItemFromObject untuk membuat item media untuk file tersebut.
  2. Secara opsional, dapatkan total durasi file, seperti yang dijelaskan dalam Cara Mendapatkan Durasi Pemutaran.
  3. Panggil IMFPMediaItem::SetStartStopPosition untuk mengatur waktu mulai dan berhenti. Waktu berhenti tidak boleh melebihi durasi file.
  4. Panggil IMFPMediaPlayer::SetMediaItem untuk memulai pemutaran.

Contoh berikut menggunakan versi pemblokiran CreateMediaItemFromURL. Jika versi non-pemblokiran digunakan, kode yang muncul setelah CreateMediaItemFromURL harus ditempatkan di handler untuk peristiwa MFP_EVENT_TYPE_MEDIAITEM_CREATED . Untuk informasi selengkapnya tentang peristiwa di MFPlay, lihat Menerima Peristiwa Dari Pemutar.

Untuk mendapatkan durasi file, contoh ini memanggil fungsi yang GetPlaybackDuration ditampilkan dalam topik Cara Mendapatkan Durasi Pemutaran.

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

Persyaratan

MFPlay memerlukan Windows 7.

Menggunakan MFPlay untuk Pemutaran Audio/Video