Я реализовал простой видеоплеер. В нем, среди прочего, есть 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 или есть другой способ обойти эту проблему?
Я нашел сообщение трехлетней давности, описывающее, похоже, ту же проблему, и их решением был обновленный драйвер nVidia. У меня самый последний драйвер nVidia, но проблема все еще есть. Я предполагаю, что приведенный выше хак работает, но кажется немного странным, что видео просто так зависает.