我实现了一个简单的视频播放器。其中包括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驱动程序,仍然有这个问题。我猜上面的黑客工作,但看起来有点奇怪,视频会像这样锁定。
答案 0 :(得分:2)
请检查您是否将Unloaded Behavior属性设置为Close
。尝试设置Manual
。
我认为Close
implies正在卸载视频,因此您的进一步操作无效。
<MediaElement Source="media\numbers.wmv" Name="myMediaElement"
Width="450" Height="250" LoadedBehavior="Manual" UnloadedBehavior="Manual" />