Silverlight媒体播放器位置问题

时间:2010-11-24 05:05:05

标签: c# asp.net wpf silverlight timespan

我面临一个奇怪的问题。我的应用程序播放来自特定位置的电影,因此即使是以毫秒为单位提到的位置对我也很重要。我正在为媒体元素分配一个位置,但它显示错误的帧。我不知道为什么媒体播放器不会从我给出的位置上玩。

以下是一些示例代码:

 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 个答案:

答案 0 :(得分:3)

虽然您可能担心在这种情况下的小数毫秒差异,但您必须记住视频每隔约33毫秒才会有一帧(使用标准NTSC 29.97 FPS)。因此,除非您正在进行取证水平分析(在这种情况下,MediaPlayer不是正确的工具),这比您应该需要的更精确。

由于TimeSpan在内部使用Int64,因此不应该有任何舍入问题,我的猜测是MediaPlayer正在捕捉到最近的可用视频帧。

答案 1 :(得分:1)

虽然timepan将它的属性暴露为int,但我怀疑它在内部使用浮点值。这些问题是由于存储浮点值的方式。

您是否尝试过检查TimeSpan.Equals(MediaPlayer.Position, oTimeSpan)的内容?我怀疑这表明他们是平等的。