关于速率控制
在 Media Foundation 中, 播放速率 表示为当前播放速率与正常播放速率的比率。 例如,2.0 的速率是正常速度的两倍,而 0.5 是正常速度的一半。 负值表示反向播放。 -2.0 的播放速率以两倍于正常速度向后播放流。 0 的速率会导致呈现一个帧;之后,演示时钟不会前进。 若要以零速率获取另一帧,应用程序必须查找新位置。
应用程序使用以下接口来控制播放速率。
- IMFRateSupport。 用于找出可能的最快和最慢的播放速率。
- IMFRateControl。 用于更改播放速率。
若要获取这两个接口,请在媒体会话上调用 IMFGetService::GetService 。 服务标识符为MF_RATE_CONTROL_SERVICE。
通过使用速率控制服务,应用程序可以实现快进和反向播放。
细化
精简 是减少流中样本数以降低总比特率的任何过程。 对于视频,精简通常通过删除增量帧并仅传送关键帧来实现。 通常,管道可以使用精简播放支持更快的播放速率,因为数据速率较低,因为增量帧未解码。
精简不会更改样本上的时间戳或持续时间。 例如,如果视频流的标称速率为每秒 25 帧,则即使媒体源删除所有增量帧,每个帧的持续时间仍标记为 40 毫秒。 这意味着一个帧的结束和下一帧的开始之间会有一个时间差。
清理
清理是通过与滚动条、时间线或其他时间视觉表示形式交互,即时查找流中的特定点的过程。 这个词来自卷轴到卷带播放器的时代,当来回摇动卷轴以找到一个部分就像用磁带擦洗播放头。
通过将播放速率设置为零,在 Media Foundation 中实现清理。 有关详细信息,请参阅 如何执行清理。
相关主题