将“位置”设置为视频结束时,WPF MediaElement会冻结

时间:2013-04-18 15:46:26

标签: c# wpf slider mediaelement video-player

我实现了一个简单的视频播放器。其中包括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驱动程序,仍然有这个问题。我猜上面的黑客工作,但看起来有点奇怪,视频会像这样锁定。

1 个答案:

答案 0 :(得分:2)

请检查您是否将Unloaded Behavior属性设置为Close。尝试设置Manual。 我认为Close implies正在卸载视频,因此您的进一步操作无效。

<MediaElement Source="media\numbers.wmv" Name="myMediaElement" 
 Width="450" Height="250" LoadedBehavior="Manual" UnloadedBehavior="Manual" />