1

我实现了一个简单的视频播放器。其中,除其他外,还有一个 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 驱动程序,但仍然有这个问题。我想上面的破解方法有效,但视频会像那样锁定似乎有点奇怪。

4

1 回答 1

2

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

<MediaElement Source="media\numbers.wmv" Name="myMediaElement" 
 Width="450" Height="250" LoadedBehavior="Manual" UnloadedBehavior="Manual" />
于 2013-04-30T15:01:19.680 回答