Метод IMFPMediaItem::SetStartStopPosition (mfplay.h)
Задает время начала и остановки элемента мультимедиа.
Синтаксис
HRESULT SetStartStopPosition(
[in] const GUID *pguidStartPositionType,
[in] const PROPVARIANT *pvStartValue,
[in] const GUID *pguidStopPositionType,
[in] const PROPVARIANT *pvStopValue
);
Параметры
[in] pguidStartPositionType
Единица времени для начальной позиции. См. заметки. Этот параметр может принимать значение NULL.
[in] pvStartValue
Начальная позиция. Значение и тип данных этого параметра указываются параметром pguidStartPositionType . Параметр pvStartValue должен иметь значение NULL , если pguidStartPositionType имеет значение NULL, и в противном случае не может иметь значение NULL .
[in] pguidStopPositionType
Единица времени для позиции остановки. См. заметки. Этот параметр может принимать значение NULL.
[in] pvStopValue
Позиция остановки. Значение и тип данных этого параметра указываются параметром pguidStopPositionType . Параметр pvStopValue должен иметь значение NULL , если pguidStopPositionType имеет значение NULL, и в противном случае не может иметь значение NULL .
Возвращаемое значение
Метод возвращает HRESULT. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице.
Код возврата | Описание |
---|---|
|
Метод выполнен успешно. |
|
Недопустимый аргумент. |
|
Недопустимое время запуска или остановки. Это может привести к любой из следующих причин:
|
Комментарии
По умолчанию элемент мультимедиа воспроизводится от начала до конца файла. Этот метод корректирует время начала и (или) время остановки:
- Чтобы задать время начала, передайте значения, отличные от NULL , для pguidStartPositionType и pvStartValue.
- Чтобы задать время остановки, передайте значения, отличные от NULL , для pguidStopPositionType и pvStopValue.
Значение | Описание |
---|---|
MFP_POSITIONTYPE_100NS | 100 наносекундных единиц. Параметр time (pvStartValue или pvStopValue) использует следующий тип данных:
|
Скорректированное время запуска и остановки используется при следующем вызове IMFPMediaPlayer::SetMediaItem с этим элементом мультимедиа. Если элемент мультимедиа уже установлен в проигрывателе, изменение не произойдет, если вы не вызовете SetMediaItem еще раз.
Примеры
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;
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 7 [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 R2 [только классические приложения] |
Целевая платформа | Windows |
Header | mfplay.h |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по