Проблема положения медиаплеера Silverlight - PullRequest
6 голосов
/ 24 ноября 2010

У меня странная проблема. Мое приложение воспроизводит фильмы с определенных позиций, поэтому для меня важна даже позиция, указанная в миллисекундах. Я назначаю позицию медиа-элементу, но он показывает неправильный кадр. Я не знаю, почему медиаплеер не играет с той позиции, которую я предоставляю.

Вот пример кода:

 TimeSpan oTimeSpan = TimeSpan.FromMilliseconds(16800200); // This shows 04:40:00.2000000

 MediaPlayer.Position = oTimeSpan;      // But after assigning, value is 04:40:00.1990000

Вот скриншот до и после назначения: alt text

alt text

Кто-нибудь может сказать мне, что я здесь делаю неправильно?

Ответы [ 2 ]

3 голосов
/ 16 марта 2011

Хотя в этом случае вас может беспокоить разница в долях в миллисекундах, вы должны помнить, что видео будет иметь кадр каждые ~ 33 миллисекунды или около того (с использованием стандартного NTSC 29,97 FPS). Так что, если вы не проводите анализ уровня криминалистики (в этом случае MediaPlayer не является подходящим инструментом), это будет более точным, чем вам нужно.

Поскольку TimeSpan использует Int64 для внутреннего использования и, следовательно, не должно иметь проблем с округлением, я предполагаю, что MediaPlayer привязывается к ближайшему доступному видеокадру.

1 голос
/ 24 ноября 2010

Несмотря на то, что timespan предоставляет свои свойства в виде целых чисел, я подозреваю, что он использует внутреннее значение с плавающей запятой. Такие проблемы связаны со способом хранения значений с плавающей запятой.

Вы пытались проверить, что вы получаете от TimeSpan.Equals(MediaPlayer.Position, oTimeSpan)? Я подозреваю, что это означает, что они равны.

...