Миллисекунды в естественной конфигурации элемента среды обрезаются (WPF)

#c# #wpf #.net-5

Вопрос:

Это серьезная проблема, скорее всего, связанная с двигателем, но я попытаю счастья. Я прокручиваю видео, и если оно длится миллисекунды, оно дергается при повторном воспроизведении. Вот что я выяснил. Если видео длится 0:0:39:440, оно округлится до 39 секунд. И именно эти 440 миллисекунд, которые обрезаются, создают подергивание.

Мало того, когда я экспериментировал с видео, у меня возникла проблема с людьми, из-за которой видео зависает после нескольких воспроизведений. Он зависает, если вы установите продолжительность в автоматическое положение. Но если вы установите продолжительность в секундах, в моем случае 39, она не замерзнет. Еще одна вещь, которую я обнаружил: если вы установите элемент среды.Исходное видео с частотой 60 кадров в секунду, видео будет воспроизводиться на более низкой частоте. Но если вы установите его с помощью MediaTimeline и часов, частота заметно увеличится. Извините за это отступление, но я нахожу, что это полезная информация, которой мало кто делится.

Итак, вот мой код, который я в конечном итоге использую.

 var tl = new MediaTimeline(new Uri(VideoPath, UriKind.RelativeOrAbsolute));
tl.Duration = new Duration(TimeSpan.FromSeconds(time));
tl.Completed  = TlOnCompleted;
MediaElementControl.Clock = tl.CreateClock(true) as MediaClock;
MediaElementControl.Clock.Controller.Begin();

private void TlOnCompleted(object sender, EventArgs e)
{
   MediaElementControl.Clock.Controller.Begin();
}
 

Если я установлю полную продолжительность MediaTimeline (с миллисекундами), то tl.Completed не сработает. Видео как бы заканчивается ДО ТОГО, КАК заканчивается линия передачи. Вероятно, именно здесь в игру вступает естественное развитие.

Я попробовал оболочку VLC, и она тоже заикается. Будущие версии обещают исправить это, но, может быть, у них та же проблема?

Комментарии:

1. Преобразуйте WPFMediaKit и его плеер в .NET 5, и проблема исчезнет.