파일 시퀀스를 재생하는 방법
[MFPlay는 요구 사항 섹션에 지정된 운영 체제에서 사용할 수 있습니다. 이후 버전에서는 변경되거나 제공되지 않을 수 있습니다. ]
이 항목에서는 MFPlay를 사용하여 오디오/비디오 파일 시퀀스를 재생하는 방법을 설명합니다.
MFPlay를 사용하여 시작 항목에서는 단일 미디어 파일을 재생하는 방법을 보여 있습니다. MFPlay를 사용하여 파일 시퀀스를 재생할 수도 있습니다.
동기(차단) 메서드
- IMFPMediaPlayer::CreateMediaItemFromURL 메서드를 호출합니다. 메서드는 미디어 항목을 만듭니다.
- IMFPMediaPlayer::SetMediaItem을 호출하여 재생을 위해 미디어 항목을 큐에 대기합니다.
- IMFPMediaPlayer::P lay를 호출하여 재생을 시작합니다.
이러한 단계는 다음 코드에 나와 있습니다.
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;
}
CreateMediaItemFromURL 메서드는 다음 매개 변수를 사용합니다.
- 첫 번째 매개 변수는 파일의 URL입니다.
- 두 번째 매개 변수는 메서드가 차단되는지 여부를 지정합니다. 여기에 표시된 대로 TRUE 값을 지정하면 미디어 항목이 생성될 때까지 메서드가 차단됩니다.
- 세 번째 매개 변수는 임의의 DWORD_PTR 값을 미디어 항목과 연결합니다. 나중에 IMFPMediaItem::GetUserData를 호출하여 이 값을 가져올 수 있습니다.
- 네 번째 매개 변수는 미디어 항목의 IMFPMediaItem 인터페이스에 대한 포인터를 받습니다.
비동기(비차단) 메서드
UI 스레드에서 CreateMediaItemFromURL 을 호출하는 경우 완료하는 데 상당한 시간이 걸릴 수 있으므로 차단 옵션을 사용하지 마세요. 메서드는 일반적으로 파일 또는 네트워크 연결을 열고 파일 헤더를 구문 분석하기에 충분한 데이터를 읽습니다. 이 모든 작업은 시간이 걸릴 수 있습니다. 따라서 일반적으로 두 번째 매개 변수를 FALSE로 설정하는 것이 좋습니다. 이 옵션을 사용하면 메서드가 비동기적으로 수행됩니다. 비동기 옵션을 사용하는 경우 마지막 매개 변수는 NULL이어야 합니다.
hr = pPlayer->CreateMediaItemFromURL(
sURL,
FALSE, // Non-blocking call.
0, // User data.
NULL // Must be NULL for the non-blocking call.
);
미디어 항목이 만들어지면 애플리케이션은 MFP_EVENT_TYPE_MEDIAITEM_CREATED 이벤트를 받습니다. 이 이벤트의 데이터 구조에는 미디어 항목에 대한 포인터가 포함됩니다. 이 포인터를 SetMediaItem 메서드에 전달하여 재생을 위해 항목을 큐에 대기합니다.
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);
}
}
요구 사항
MFPlay에는 Windows 7이 필요합니다.
관련 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기