Cara Memutar Urutan 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 urutan file audio/video menggunakan MFPlay.
Topik Memulai MFPlay menunjukkan cara memutar satu file media. Anda juga dapat menggunakan MFPlay untuk memutar urutan file.
Metode Sinkron (Pemblokiran)
- Panggil metode IMFPMediaPlayer::CreateMediaItemFromURL. Metode membuat item media.
- Panggil IMFPMediaPlayer::SetMediaItem untuk mengantrekan item media untuk pemutaran.
- Panggil IMFPMediaPlayer::P lay untuk memulai pemutaran.
Langkah-langkah ini ditampilkan dalam kode berikut.
HRESULT OpenMediaFile(IMFPMediaPlayer *pPlayer, PCWSTR pwszURL)
{
HRESULT hr = S_OK;
IMFPMediaItem *pItem = NULL;
hr = pPlayer->CreateMediaItemFromURL(
sURL,
TRUE, // Blocking call
0, // User data.
&pItem
);
if (SUCCEEDED(hr))
{
hr = pPlayer->SetMediaItem(pItem);
}
if (SUCCEEDED(hr))
{
hr = pPlayer->Play();
}
if (pItem)
{
pItem->Release();
}
return hr;
}
Metode CreateMediaItemFromURL mengambil parameter berikut:
- Parameter pertama adalah URL file.
- Parameter kedua menentukan apakah metode memblokir. Menentukan nilai TRUE, seperti yang ditunjukkan di sini, menyebabkan metode diblokir hingga item media dibuat.
- Parameter ketiga mengaitkan nilai DWORD_PTR arbitrer dengan item media. Anda bisa mendapatkan nilai ini nanti dengan memanggil IMFPMediaItem::GetUserData.
- Parameter keempat menerima penunjuk ke antarmuka IMFPMediaItem dari item media.
Metode Asinkron (Non-Pemblokiran)
Hindari opsi pemblokiran jika Anda memanggil CreateMediaItemFromURL dari utas UI Anda, karena dapat memakan waktu yang nyata untuk menyelesaikannya. Metode ini biasanya membuka file atau koneksi jaringan dan membaca data yang cukup untuk mengurai header file, yang semuanya dapat memakan waktu. Oleh karena itu, umumnya lebih baik mengatur parameter kedua ke FALSE. Opsi ini menyebabkan metode berfungsi secara asinkron. Ketika opsi asinkron digunakan, parameter terakhir harus NULL:
hr = pPlayer->CreateMediaItemFromURL(
sURL,
FALSE, // Non-blocking call.
0, // User data.
NULL // Must be NULL for the non-blocking call.
);
Saat item media dibuat, aplikasi Anda menerima peristiwa MFP_EVENT_TYPE_MEDIAITEM_CREATED . Struktur data untuk peristiwa ini berisi penunjuk ke item media. Teruskan penunjuk ini ke metode SetMediaItem untuk mengantrekan item untuk pemutaran.
void OnMediaItemCreated(MFP_MEDIAITEM_CREATED_EVENT *pEvent)
{
HRESULT hr = S_OK;
if (FAILED(pEvent->header.hrEvent))
{
// Handle error. (Not shown.)
}
else
{
hr = g_pPlayer->SetMediaItem(pEvent->pMediaItem);
}
}
Persyaratan
MFPlay memerlukan Windows 7.
Topik terkait