MEBufferingStarted 事件
指示媒体源已开始缓冲数据。
如果源在媒体会话运行时缓冲数据,则媒体源可以发送此事件。 当媒体会话收到此事件时,它会暂停演示时钟,直到媒体源发送 MEBufferingStopped 事件。 媒体会话还会将 MEBufferingStarted 事件转发到应用程序。
实现 IMFByteStreamBuffering 接口的字节流也会发送此事件。
事件值
从 IMFMediaEvent::GetValue 检索到的可能值包括以下内容。
VARTYPE | 说明 |
---|---|
VT_EMPTY |
无事件数据。 |
备注
如果媒体源发送 MEBufferingStarted 事件,则必须在停止缓冲数据时发送 MEBufferingStopped 事件。 媒体源必须为每个 MEBufferingStarted 事件发送匹配的 MEBufferingStopped 事件。 在调用源的 IMFMediaSource::Start 方法之前,或在调用源的 IMFMediaSource::Stop 方法之后,媒体源不应转发这些事件。
如果要从媒体基础网络源进行流式传输,可以通过查询 MFNETSOURCE_BUFFERPROGRESS_ID 统计信息来获取缓冲进度。 有关详细信息,请参阅 MFNETSOURCE_STATISTICS_IDS。
示例
HRESULT GetBufferProgress(IMFMediaSession *pSession, DWORD *pProgress)
{
IPropertyStore *pProp = NULL;
PROPVARIANT var;
// Get the property store from the media session.
HRESULT hr = MFGetService(
pSession,
MFNETSOURCE_STATISTICS_SERVICE,
IID_PPV_ARGS(&pProp)
);
if (SUCCEEDED(hr))
{
PROPERTYKEY key;
key.fmtid = MFNETSOURCE_STATISTICS;
key.pid = MFNETSOURCE_BUFFERPROGRESS_ID;
hr = pProp->GetValue(key, &var);
}
if (SUCCEEDED(hr))
{
*pProgress = var.lVal;
}
PropVariantClear(&var);
SafeRelease(&pProp);
return hr;
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows Vista [仅限桌面应用] |
最低受支持的服务器 |
Windows Server 2008 [仅限桌面应用] |
标头 |
|
请参阅