媒体播放:从源创建到拓扑构建全解析
1. 时间格式与播放起始位置
在媒体播放中,时间格式的 GUID 有不同取值,这些取值决定了视频的播放起始位置:
- GUID_NULL :表示第二个参数将是一个 PROPVARIANT
结构,可设置为 VT_EMPTY
或 VT_I8
。
- VT_EMPTY
:意味着视频应从当前位置开始播放,例如传入 GUID_NULL
和 VT_EMPTY
可从视频暂停位置恢复播放。
- VT_I8
(8 字节有符号整数):表示视频应从剪辑开始的这么多个 100 纳秒“滴答”处开始播放,如传入 GUID_NULL
且 VT_I8
设置为 300,000,000 将从视频开始的 30 秒处开始播放。
- MF_TIME_FORMAT_SEGMENT_OFFSET :这是序列器源支持的自定义格式。
若要发现视频内的当前播放位置,可调用 IMFMediaSession::GetClock()
方法提取此演示文稿的演示时钟对象,再用该时钟对象提取当前播放位置。
在某些情况下, Start()
方法接收 GUID_NULL
作为时间格式, VT_EMPTY
作为起始位