Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[Функция, связанная с этой страницей MFPlay, является устаревшей функцией. Он был заменен на MediaPlayer и IMFMediaEngine. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код MediaPlayer и IMFMediaEngine вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]
В этом разделе описывается, как воспроизвести сегмент файла мультимедиа в MFPlay, задав время начала и остановки воспроизведения.
Воспроизведение клипа файла
- Вызов IMFPMediaPlayer::CreateMediaItemFromURL или IMFPMediaPlayer::CreateMediaItemFromObject для создания элемента мультимедиа из файла.
- При необходимости получите общую длительность файла, как описано в разделе "Получение длительности воспроизведения".
- Вызовите IMFPMediaItem::SetStartStopPosition чтобы задать время начала и остановки. Время остановки не должно превышать длительность файла.
- вызовите IMFPMediaPlayer::SetMediaItem, чтобы начать воспроизведение.
В следующем примере используется блокирующая версия CreateMediaItemFromURL. Если используется неблокирующая версия, код, который идет после CreateMediaItemFromURL, должен быть помещен в обработчик события MFP_EVENT_TYPE_MEDIAITEM_CREATED. Дополнительные сведения о событиях в MFPlay см. в разделе "Получение событий от проигрывателя".
Чтобы получить длительность файла, в этом примере вызывается GetPlaybackDuration
функция, показанная в разделе "Получение длительности воспроизведения".
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;
}
Требования
Для MFPlay требуется Windows 7.
Связанные темы