我有一个使用 SampleGrabber 过滤器进行一些处理的 DirectShow 图。处理时间长达 50 毫秒,因此播放速度通常较慢。可以打开和关闭处理。
我的问题是,如果处理已经打开了一段时间,当我关闭它时,视频会尽可能快地播放,直到达到某个点。大概这一点是帧时间与流时间匹配的地方,不再有任何滞后。
我怎样才能阻止这种情况发生,以便在我关闭处理时播放以正常速度?我可以在处理数据时关闭流时钟吗?或者也许再次为来自 SampleGrabber 过滤器的样本添加时间戳,并添加额外的滞后?
有谁知道这样做的正确方法?
编辑:
我使用了更改样本时间的方法,如下面的答案所示,但是在寻找和计算样本时间戳时遇到了一些问题。
我发现一个更好的方法是实现我自己的参考时钟并在处理时间过长时停止时钟。