Video 擦洗后不能再改变速率

Video 擦洗后不能再改变速率,video,ms-media-foundation,Video,Ms Media Foundation,简单场景:我想在视频中找到某个位置,然后播放它 问题是当我第一次使用时,我无法再运行视频。似乎我无法将速率从0更改为任何其他值。我只能打电话来 仅运行视频时(不将速率设置为0),后续的速率更改确实有效。我还注意到,如果我将速率设置为0,然后再次设置为正速率,而不在两者之间进行实际擦洗(Start()),则速率确实会发生变化 要退出“清理模式”,我还需要做什么额外的工作吗?在播放会话时,不能更改前进/零之间的速率。擦洗将会话置于播放状态(因为您调用了Start()),因此擦洗后,您需要调用Paus

简单场景:我想在视频中找到某个位置,然后播放它

问题是当我第一次使用时,我无法再运行视频。似乎我无法将速率从0更改为任何其他值。我只能打电话来

仅运行视频时(不将速率设置为0),后续的速率更改确实有效。我还注意到,如果我将速率设置为0,然后再次设置为正速率,而不在两者之间进行实际擦洗(
Start()
),则速率确实会发生变化


要退出“清理模式”,我还需要做什么额外的工作吗?

在播放会话时,不能更改前进/零之间的速率。擦洗将会话置于播放状态(因为您调用了
Start()
),因此擦洗后,您需要调用
Pause()
Stop()
,然后才能将速率设置回正常值


参考资料:

您是否收到了
MESessionRateChanged
事件和
MESessionScrubSampleComplete
事件?@CPlusSharp我收到了
MESessionRateChanged
事件。我只在收到后调用
Start()
。调用start后,我将验证是否收到
MesessionScrubsSampleComplete
事件,但我不希望收到该事件,因为我只想开始播放。@CPlusSharp在再次将速率设置为1后调用
start()
时仍会触发
MesessionScrubsSampleComplete
事件,并且收到
MESessionRateChanged
事件。所以看起来好像我仍然处于清理模式。设置后我调用了
GetRate()
,它仍然是0。调用
SetRate()
I时未返回任何错误代码。我希望我尝试过,但不幸的是无法回忆/检查它。我还在错误报告中报告,该报告似乎已被接受。还请注意,我收到了“MESessionRateChanged”事件。MF thinking
SetRate()
失败时可能存在错误,这可以解释为什么会触发“MESessionRateChanged”。我只知道我最近遇到了这个问题,解决方法是在使用
SetRate()
Start()
恢复播放之前调用
Pause()
。酷+1用于验证。但我不能接受,除非我有时间再次测试/我遇到了与@StevenJeuris相同的问题,我可以确认这个答案解决了这个问题。