我实现了一个简单的视频播放器。其中,除其他外,还有一个 MediaElement 和一个 Slider。无论如何,当我将滑块一直向右滑动并将 MediaElement.Position 设置为视频的最后一帧时,视频会在视频的最后一帧冻结,并且不会恢复或响应暂停/播放命令,直到我将不同的视频加载到 MediaElement 中。
我做了一个小技巧,只将位置值更改为距离视频结束至少 20 毫秒的数字,问题就消失了:
if ( _mediaElement.HasVideo &&
_mediaElement.NaturalDuration.HasTimeSpan &&
(_mediaElement.NaturalDuration.TimeSpan.TotalMilliseconds - e.NewValue) > 20)
{
_mediaElement.Position = new TimeSpan(0, 0, 0, 0, (int) e.NewValue);
}
我不明白的是为什么视频会在最后一帧冻结?这是 MediaElement 控件中的错误,还是有其他方法可以解决此问题?
我发现 3 年前的一篇文章描述了同样的问题,他们的解决方案是更新了 nVidia 驱动程序。我有最新的 nVidia 驱动程序,但仍然有这个问题。我想上面的破解方法有效,但视频会像那样锁定似乎有点奇怪。